on xenial help sign in
merged with trunk
df569d7Nick Dedekind
Bottombar/Bottombar.qml+60−6
@@ -18,6 +18,7 @@ import QtQuick 2.0
18import "../Components"
18import "../Components"
19import "../Components/Math.js" as MathLocal
19import "../Components/Math.js" as MathLocal
20import Unity 0.1
20import Unity 0.1
21+import Ubuntu.Application 0.1
21import Ubuntu.Gestures 0.1
22import Ubuntu.Gestures 0.1
22
23
23Item {
24Item {
@@ -28,15 +29,46 @@ Item {
28
29
29 property variant theHud
30 property variant theHud
30 property bool enabled: false
31 property bool enabled: false
32+ property bool preventHiding: dragArea.dragging
31 readonly property real bottomEdgeButtonCenterDistance: units.gu(34)
33 readonly property real bottomEdgeButtonCenterDistance: units.gu(34)
32
34
33− state: dragArea.status === DirectionalDragArea.Recognized ? "shown" : "hidden"
35+ state: "hidden"
36+
37+ onStateChanged: {
38+ if (state == "hidden") {
39+ dismissTimer.stop()
40+ } else {
41+ dismissTimer.restart()
42+ }
43+ }
44+
45+ onPreventHidingChanged: {
46+ if (dismissTimer.running) {
47+ dismissTimer.restart();
48+ }
49+ }
50+
51+ Timer {
52+ id: dismissTimer
53+ interval: 5000
54+ onTriggered: {
55+ if (!bottombar.preventHiding) {
56+ bottombar.state = "hidden"
57+ } else {
58+ dismissTimer.restart()
59+ }
60+ }
61+ }
34
62
35 HudButton {
63 HudButton {
36 id: hudButton
64 id: hudButton
37
65
66+ readonly property bool centeredHud: parent.width < units.gu(68) // Nexus 7 has 67 gu width
67+
38− x: MathLocal.clamp(dragArea.touchStartX - (width / 2), 0, bottombar.width - width)
68+ x: centeredHud ? parent.width / 2 - width / 2 : MathLocal.clamp(dragArea.touchStartX - (width / 2), 0, bottombar.width - width)
39 y: bottombar.height - bottomEdgeButtonCenterDistance - (height / 2) - bottomMargin
69 y: bottombar.height - bottomEdgeButtonCenterDistance - (height / 2) - bottomMargin
70+ z: 1
71+ visible: opacity != 0
40
72
41 mouseOver: {
73 mouseOver: {
42 if (dragArea.status === DirectionalDragArea.Recognized) {
74 if (dragArea.status === DirectionalDragArea.Recognized) {
@@ -55,13 +87,18 @@ Item {
55 }
87 }
56
88
57 Behavior on opacity {
89 Behavior on opacity {
58− NumberAnimation{ duration: 200; easing.type: Easing.OutCubic}
90+ NumberAnimation{duration: 200; easing.type: Easing.OutCubic}
59 }
91 }
60 }
92 }
61
93
62 Connections {
94 Connections {
63 target: theHud
95 target: theHud
96+ onShownChanged: {
64− onShownChanged: bottomBarVisibilityCommunicatorShell.forceHidden = theHud.shown
97+ bottomBarVisibilityCommunicatorShell.forceHidden = theHud.shown
98+ if (theHud.shown) {
99+ bottombar.state = "hidden"
100+ }
101+ }
65 }
102 }
66
103
67 EdgeDragArea {
104 EdgeDragArea {
@@ -70,6 +107,7 @@ Item {
70 height: distanceThreshold
107 height: distanceThreshold
71 anchors.bottom: parent.bottom
108 anchors.bottom: parent.bottom
72
109
110+ distanceThreshold: units.gu(8)
73 enabled: !theHud.shown && bottombar.enabled && applicationIsOnForeground
111 enabled: !theHud.shown && bottombar.enabled && applicationIsOnForeground
74 direction: Direction.Upwards
112 direction: Direction.Upwards
75
113
@@ -84,12 +122,29 @@ Item {
84 }
122 }
85 }
123 }
86 } else if (status === DirectionalDragArea.Undecided) {
124 } else if (status === DirectionalDragArea.Undecided) {
125+ if (!hudButton.centeredHud) {
87− touchStartX = touchX
126+ touchStartX = touchX
127+ }
128+ } else if (status === DirectionalDragArea.Recognized) {
129+ bottombar.state = "shown"
88 }
130 }
89 previousStatus = status
131 previousStatus = status
90 }
132 }
91 }
133 }
92
134
135+ MouseArea {
136+ anchors.fill: parent
137+ enabled: bottombar.state == "shown"
138+ onPressed: {
139+ bottombar.state = "hidden"
140+ }
141+ }
142+
143+ InputFilterArea {
144+ anchors.fill: parent
145+ blockInput: hudButton.visible
146+ }
147+
93 states: [
148 states: [
94 State {
149 State {
95 name: "hidden"
150 name: "hidden"
@@ -102,5 +157,4 @@ Item {
102 PropertyChanges { target: hudButton; bottomMargin: units.gu(0)}
157 PropertyChanges { target: hudButton; bottomMargin: units.gu(0)}
103 }
158 }
104 ]
159 ]
105−
106}
160}
Bottombar/HudButton.qml+8−8
@@ -33,24 +33,24 @@ Item {
33
33
34 Item {
34 Item {
35 id: hudButton
35 id: hudButton
36− property alias actionButton: actionButton
37
36
38 anchors.centerIn: parent
37 anchors.centerIn: parent
39 height: units.gu(12)
38 height: units.gu(12)
40 width: height
39 width: height
41− opacity: item.mouseOver ? 1 : 0.7
40+ opacity: item.mouseOver || abstractButton.pressed ? 1 : 0.7
42− scale: item.mouseOver ? scaleOnMouseOver : 1
41+ scale: item.mouseOver || abstractButton.pressed ? scaleOnMouseOver : 1
43 Behavior on opacity {NumberAnimation{duration: 200; easing.type: Easing.OutQuart}}
42 Behavior on opacity {NumberAnimation{duration: 200; easing.type: Easing.OutQuart}}
44 Behavior on scale {NumberAnimation{duration: 200; easing.type: Easing.OutQuart}}
43 Behavior on scale {NumberAnimation{duration: 200; easing.type: Easing.OutQuart}}
45
44
46− UbuntuShape {
45+ AbstractButton {
47− id: actionButton
46+ id: abstractButton
48 anchors.fill: parent
47 anchors.fill: parent
49−
50− borderSource: ""
51− image: Image {
48+ style: Image {
49+ anchors.fill: parent
52 source: "graphics/hud_invoke_button_active.png"
50 source: "graphics/hud_invoke_button_active.png"
53 }
51 }
52+
53+ onClicked: item.clicked()
54 }
54 }
55
55
56 Image {
56 Image {
Components/EdgeDemo.qmlnew file+232
@@ -0,0 +1,232 @@
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 AccountsService 0.1
18+import LightDM 0.1 as LightDM
19+import QtQuick 2.0
20+
21+Item {
22+ id: demo
23+
24+ property Item greeter
25+ property Item dash
26+ property Item launcher
27+ property Item indicators
28+ property Item underlay
29+
30+ property bool launcherEnabled: true
31+ property bool dashEnabled: true
32+ property bool panelEnabled: true
33+ property bool panelContentEnabled: true
34+
35+ property bool paused: false
36+
37+ onPausedChanged: {
38+ if (d.rightEdgeDemo) d.rightEdgeDemo.paused = paused
39+ if (d.topEdgeDemo) d.topEdgeDemo.paused = paused
40+ if (d.bottomEdgeDemo) d.bottomEdgeDemo.paused = paused
41+ if (d.leftEdgeDemo) d.leftEdgeDemo.paused = paused
42+ if (d.finalEdgeDemo) d.finalEdgeDemo.paused = paused
43+ }
44+
45+ function hideEdgeDemoInShell() {
46+ var user = LightDM.Users.data(greeter.currentIndex, LightDM.UserRoles.NameRole);
47+ AccountsService.setUserProperty(user, "demo-edges", false);
48+ d.showEdgeDemo = false;
49+ stopDemo();
50+ }
51+
52+ function hideEdgeDemoInGreeter() {
53+ // TODO: AccountsService.setUserProperty("lightdm", "demo-edges", false);
54+ d.showEdgeDemoInGreeter = false;
55+ }
56+
57+ function hideEdgeDemos() {
58+ hideEdgeDemoInGreeter();
59+ hideEdgeDemoInShell();
60+ }
61+
62+ function stopDemo() {
63+ launcherEnabled = true
64+ dashEnabled = true
65+ panelEnabled = true
66+ panelContentEnabled = true
67+ if (d.rightEdgeDemo) d.rightEdgeDemo.destroy()
68+ if (d.topEdgeDemo) d.topEdgeDemo.destroy()
69+ if (d.bottomEdgeDemo) d.bottomEdgeDemo.destroy()
70+ if (d.leftEdgeDemo) d.leftEdgeDemo.destroy()
71+ if (d.finalEdgeDemo) d.finalEdgeDemo.destroy()
72+ }
73+
74+ QtObject {
75+ id: d
76+ property Component overlay
77+ property QtObject rightEdgeDemo
78+ property QtObject topEdgeDemo
79+ property QtObject bottomEdgeDemo
80+ property QtObject leftEdgeDemo
81+ property QtObject finalEdgeDemo
82+ property bool showEdgeDemo: false
83+ property bool showEdgeDemoInGreeter: d.showEdgeDemo // TODO: AccountsService.getUserProperty("lightdm", "demo-edges")
84+
85+ onShowEdgeDemoInGreeterChanged: {
86+ if (!d.overlay && d.showEdgeDemoInGreeter) {
87+ d.overlay = Qt.createComponent("EdgeDemoOverlay.qml")
88+ startRightEdgeDemo()
89+ }
90+ }
91+ }
92+
93+ function startRightEdgeDemo() {
94+ launcherEnabled = false;
95+ demo.dashEnabled = false;
96+ demo.panelEnabled = false;
97+ demo.panelContentEnabled = false;
98+ if (demo.greeter) {
99+ d.rightEdgeDemo = d.overlay.createObject(demo.greeter, {
100+ "edge": "right",
101+ "title": i18n.tr("Right edge"),
102+ "text": i18n.tr("Try swiping from the right edge to unlock the phone"),
103+ "anchors.fill": demo.greeter,
104+ });
105+ }
106+ if (d.rightEdgeDemo) {
107+ d.rightEdgeDemo.onSkip.connect(demo.hideEdgeDemos)
108+ } else {
109+ stopDemo();
110+ }
111+ }
112+
113+ Connections {
114+ target: demo.greeter
115+
116+ function hide() {
117+ if (d.rightEdgeDemo && d.rightEdgeDemo.available) {
118+ d.rightEdgeDemo.hide()
119+ hideEdgeDemoInGreeter()
120+ startTopEdgeDemo()
121+ }
122+ }
123+
124+ onUnlocked: hide()
125+ onShownChanged: if (!greeter.shown) hide()
126+
127+ onSelected: {
128+ var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole)
129+ d.showEdgeDemo = AccountsService.getUserProperty(user, "demo-edges")
130+ }
131+ }
132+
133+ function startTopEdgeDemo() {
134+ demo.panelEnabled = true;
135+ if (demo.dash && demo.underlay) {
136+ d.topEdgeDemo = d.overlay.createObject(demo.underlay, {
137+ "edge": "top",
138+ "title": i18n.tr("Top edge"),
139+ "text": i18n.tr("Try swiping from the top edge to access the indicators"),
140+ "anchors.fill": demo.dash,
141+ });
142+ }
143+ if (d.topEdgeDemo) {
144+ d.topEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
145+ } else {
146+ stopDemo();
147+ }
148+ }
149+
150+ Connections {
151+ target: demo.indicators
152+ onFullyOpenedChanged: {
153+ if (d.topEdgeDemo && d.topEdgeDemo.available && demo.indicators.fullyOpened) {
154+ d.topEdgeDemo.hideNow()
155+ startBottomEdgeDemo()
156+ }
157+ }
158+ }
159+
160+ function startBottomEdgeDemo() {
161+ if (demo.indicators) {
162+ d.bottomEdgeDemo = d.overlay.createObject(demo.indicators, {
163+ "edge": "bottom",
164+ "title": i18n.tr("Close"),
165+ "text": i18n.tr("Swipe up again to close the settings screen"),
166+ "anchors.fill": demo.indicators,
167+ });
168+ }
169+ if (d.bottomEdgeDemo) {
170+ d.bottomEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
171+ } else {
172+ stopDemo();
173+ }
174+ }
175+
176+ Connections {
177+ target: demo.indicators
178+ onPartiallyOpenedChanged: {
179+ if (d.bottomEdgeDemo && d.bottomEdgeDemo.available && !demo.indicators.partiallyOpened && !demo.indicators.fullyOpened) {
180+ d.bottomEdgeDemo.hideNow()
181+ startLeftEdgeDemo()
182+ }
183+ }
184+ }
185+
186+ function startLeftEdgeDemo() {
187+ demo.panelEnabled = false;
188+ demo.launcherEnabled = true;
189+ if (demo.dash && demo.underlay) {
190+ d.leftEdgeDemo = d.overlay.createObject(demo.underlay, {
191+ "edge": "left",
192+ "title": i18n.tr("Left edge"),
193+ "text": i18n.tr("Swipe from the left to reveal the launcher for quick access to apps"),
194+ "anchors.fill": demo.dash,
195+ });
196+ }
197+ if (d.leftEdgeDemo) {
198+ d.leftEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
199+ } else {
200+ stopDemo();
201+ }
202+ }
203+
204+ Connections {
205+ target: demo.launcher
206+ onStateChanged: {
207+ if (d.leftEdgeDemo && d.leftEdgeDemo.available && launcher.state == "visible") {
208+ d.leftEdgeDemo.hide()
209+ launcher.hide()
210+ startFinalEdgeDemo()
211+ }
212+ }
213+ }
214+
215+ function startFinalEdgeDemo() {
216+ demo.launcherEnabled = false;
217+ if (demo.dash && demo.underlay) {
218+ d.finalEdgeDemo = d.overlay.createObject(demo.underlay, {
219+ "edge": "none",
220+ "title": i18n.tr("Well done"),
221+ "text": i18n.tr("You have now mastered the edge gestures and can start using the phone<br><br>Tap anywhere to start"),
222+ "anchors.fill": demo.dash,
223+ "showSkip": false,
224+ });
225+ }
226+ if (d.finalEdgeDemo) {
227+ d.finalEdgeDemo.onSkip.connect(demo.hideEdgeDemoInShell)
228+ } else {
229+ stopDemo();
230+ }
231+ }
232+}
Components/EdgeDemoOverlay.qmlnew file+261
@@ -0,0 +1,261 @@
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 Powerd 0.1
18+import QtQuick 2.0
19+import QtGraphicalEffects 1.0
20+import Ubuntu.Application 0.1
21+import Ubuntu.Components 0.1
22+
23+Showable {
24+ id: overlay
25+
26+ /*
27+ * Valid values are "left", "right", "top", "bottom", or "none".
28+ */
29+ property string edge: "top"
30+
31+ /*
32+ * This is the header displayed, like "Right edge".
33+ */
34+ property alias title: titleLabel.text
35+
36+ /*
37+ * This is the block of text displayed below the header.
38+ */
39+ property alias text: textLabel.text
40+
41+ /*
42+ * This is the text for the skip button.
43+ */
44+ property alias skipText: skipLabel.text
45+
46+ /*
47+ * This is the visible status of the skip button.
48+ */
49+ property alias showSkip: skipLabel.visible
50+
51+ /*
52+ * Whether this demo is running currently.
53+ */
54+ readonly property bool active: available && visible
55+
56+ /*
57+ * Whether animations are paused.
58+ */
59+ property alias paused: wholeAnimation.paused
60+
61+ /*
62+ * Whether animations are running.
63+ */
64+ readonly property alias running: wholeAnimation.running
65+
66+ signal skip()
67+
68+ function doSkip() {
69+ d.skipOnHide = true;
70+ hide();
71+ }
72+
73+ function hideNow() {
74+ overlay.visible = false;
75+ overlay.available = false;
76+ if (d.skipOnHide) {
77+ overlay.skip();
78+ }
79+ }
80+
81+ showAnimation: StandardAnimation {
82+ property: "opacity"
83+ to: 1
84+ onRunningChanged: if (running) overlay.visible = true
85+ }
86+ hideAnimation: StandardAnimation {
87+ property: "opacity"
88+ to: 0
89+ duration: UbuntuAnimation.BriskDuration
90+ onRunningChanged: if (!running) overlay.hideNow()
91+ }
92+
93+ QtObject {
94+ id: d
95+ property bool skipOnHide: false
96+ property int edgeMargin: units.gu(4)
97+ }
98+
99+ Rectangle {
100+ objectName: "backgroundShade"
101+
102+ anchors.fill: parent
103+ color: "black"
104+ opacity: 0.8
105+ visible: overlay.active
106+
107+ MouseArea {
108+ anchors.fill: parent
109+ enabled: overlay.edge == "none" && overlay.opacity == 1.0
110+ onClicked: overlay.doSkip()
111+ }
112+ }
113+
114+ Item {
115+ id: hintGroup
116+ x: 0
117+ y: 0
118+ width: parent.width
119+ height: parent.height
120+ visible: overlay.active
121+
122+ Column {
123+ id: labelGroup
124+ layer.enabled: true // otherwise the underlining on "Skip intro" jumps
125+ spacing: units.gu(3)
126+
127+ anchors {
128+ margins: d.edgeMargin
129+ left: parent.left
130+ top: overlay.edge == "bottom" ? undefined : parent.top
131+ bottom: overlay.edge == "bottom" ? parent.bottom : undefined
132+ }
133+
134+ Label {
135+ id: titleLabel
136+ fontSize: "x-large"
137+ width: units.gu(25)
138+ wrapMode: Text.WordWrap
139+ }
140+
141+ Label {
142+ id: textLabel
143+ width: units.gu(25)
144+ wrapMode: Text.WordWrap
145+ }
146+
147+ Label {
148+ id: skipLabel
149+ objectName: "skipLabel"
150+ text: i18n.tr("Skip intro")
151+ color: UbuntuColors.orange
152+ fontSize: "small"
153+ font.underline: true
154+
155+ MouseArea {
156+ anchors.fill: parent
157+ onClicked: overlay.doSkip()
158+ }
159+ }
160+ }
161+
162+ LinearGradient {
163+ id: edgeHint
164+ property int size: 1
165+ cached: false
166+ visible: overlay.edge != "none"
167+ gradient: Gradient {
168+ GradientStop {
169+ position: 0.0
170+ color: Qt.hsla(16.0/360.0, 0.83, 0.47, 0.4) // UbuntuColors.orange, but transparent
171+ }
172+ GradientStop {
173+ position: 1.0
174+ color: "transparent"
175+ }
176+ }
177+ anchors.fill: parent
178+ start: {
179+ if (overlay.edge == "right") {
180+ return Qt.point(width, 0);
181+ } else if (overlay.edge == "left") {
182+ return Qt.point(0, 0);
183+ } else if (overlay.edge == "top") {
184+ return Qt.point(0, 0);
185+ } else {
186+ return Qt.point(0, height);
187+ }
188+ }
189+ end: {
190+ if (overlay.edge == "right") {
191+ return Qt.point(width - size, 0);
192+ } else if (overlay.edge == "left") {
193+ return Qt.point(size, 0);
194+ } else if (overlay.edge == "top") {
195+ return Qt.point(0, size);
196+ } else {
197+ return Qt.point(0, height - size);
198+ }
199+ }
200+ }
201+ }
202+
203+ SequentialAnimation {
204+ id: wholeAnimation
205+ objectName: "wholeAnimation"
206+ running: overlay.active
207+
208+ ParallelAnimation {
209+ id: fadeInAnimation
210+
211+ StandardAnimation {
212+ target: labelGroup
213+ property: {
214+ if (overlay.edge == "right" || overlay.edge == "left") {
215+ return "anchors.leftMargin";
216+ } else if (overlay.edge == "bottom") {
217+ return "anchors.bottomMargin";
218+ } else {
219+ return "anchors.topMargin";
220+ }
221+ }
222+ from: {
223+ if (overlay.edge == "right") {
224+ return d.edgeMargin + units.gu(3)
225+ } else {
226+ return d.edgeMargin - units.gu(3)
227+ }
228+ }
229+ to: d.edgeMargin
230+ duration: overlay.edge == "none" ? 0 : UbuntuAnimation.SleepyDuration
231+ }
232+ StandardAnimation {
233+ target: overlay
234+ property: "opacity"
235+ from: 0.0
236+ to: 1.0
237+ duration: UbuntuAnimation.SleepyDuration
238+ }
239+ }
240+
241+ SequentialAnimation {
242+ id: hintAnimation
243+ loops: Animation.Infinite
244+ property string prop: (overlay.edge == "left" || overlay.edge == "right") ? "x" : "y"
245+ property double endVal: units.dp(5) * ((overlay.edge == "left" || overlay.edge == "top") ? 1 : -1)
246+ property double maxGlow: units.dp(20)
247+ property int duration: overlay.edge == "none" ? 0 : UbuntuAnimation.SleepyDuration
248+
249+ ParallelAnimation {
250+ StandardAnimation { target: hintGroup; property: hintAnimation.prop; from: 0; to: hintAnimation.endVal; duration: hintAnimation.duration }
251+ StandardAnimation { target: edgeHint; property: "size"; from: 1; to: hintAnimation.maxGlow; duration: hintAnimation.duration }
252+ }
253+
254+ // Undo the above
255+ ParallelAnimation {
256+ StandardAnimation { target: hintGroup; property: hintAnimation.prop; from: hintAnimation.endVal; to: 0; duration: hintAnimation.duration }
257+ StandardAnimation { target: edgeHint; property: "size"; from: hintAnimation.maxGlow; to: 1; duration: hintAnimation.duration }
258+ }
259+ }
260+ }
261+}
Dash/Apps/FrequentlyUsedAppsModel.qml+38−8
@@ -18,23 +18,43 @@ import QtQuick 2.0
18
18
19ListModel {
19ListModel {
20 ListElement {
20 ListElement {
21− uri: "application:///usr/share/applications/camera-app.desktop"
21+ uri: "application:///usr/share/applications/dialer-app.desktop"
22− icon: "../../graphics/applicationIcons/camera.png"
22+ icon: "../../graphics/applicationIcons/phone-app.png"
23 category: 0
23 category: 0
24 mimetype: "application/x-desktop"
24 mimetype: "application/x-desktop"
25− title: "Camera"
25+ title: "Dialer"
26 comment: ""
26 comment: ""
27− dndUri: "file:///usr/share/applications/camera-app.desktop"
27+ dndUri: "file:///usr/share/applications/dialer-app.desktop"
28 metadata: ""
28 metadata: ""
29 }
29 }
30 ListElement {
30 ListElement {
31− uri: "application:///usr/share/applications/phone-app.desktop"
31+ uri: "application:///usr/share/applications/messaging-app.desktop"
32+ icon: "../../graphics/applicationIcons/messages-app.png"
33+ category: 0
34+ mimetype: "application/x-desktop"
35+ title: "Messaging"
36+ comment: ""
37+ dndUri: "file:///usr/share/applications/messaging-app.desktop"
38+ metadata: ""
39+ }
40+ ListElement {
41+ uri: "application:///usr/share/applications/address-book-app.desktop"
32− icon: "../../graphics/applicationIcons/phone-app.png"
42+ icon: "../../graphics/applicationIcons/contacts-app.png"
43+ category: 0
44+ mimetype: "application/x-desktop"
45+ title: "Contacts"
46+ comment: ""
47+ dndUri: "file:///usr/share/applications/address-book-app.desktop"
48+ metadata: ""
49+ }
50+ ListElement {
51+ uri: "application:///usr/share/applications/camera-app.desktop"
52+ icon: "../../graphics/applicationIcons/camera.png"
33 category: 0
53 category: 0
34 mimetype: "application/x-desktop"
54 mimetype: "application/x-desktop"
35− title: "Phone"
55+ title: "Camera"
36 comment: ""
56 comment: ""
37− dndUri: "file:///usr/share/applications/phone-app.desktop"
57+ dndUri: "file:///usr/share/applications/camera-app.desktop"
38 metadata: ""
58 metadata: ""
39 }
59 }
40 ListElement {
60 ListElement {
@@ -77,4 +97,14 @@ ListModel {
77 dndUri: "file:///usr/share/applications/gmail-webapp.desktop"
97 dndUri: "file:///usr/share/applications/gmail-webapp.desktop"
78 metadata: ""
98 metadata: ""
79 }
99 }
100+ ListElement {
101+ uri: "application:///usr/share/applications/ubuntu-system-settings.desktop"
102+ icon: "../../graphics/applicationIcons/system-settings.png"
103+ category: 0
104+ mimetype: "application/x-desktop"
105+ title: "System Settings"
106+ comment: ""
107+ dndUri: "file:///usr/share/applications/ubuntu-system-settings.desktop"
108+ metadata: ""
109+ }
80}
110}
Dash/DashBar.qml+2−3
@@ -83,9 +83,8 @@ Item {
83 }
83 }
84
84
85 delegate:
85 delegate:
86− Item {
86+ // FIXME: Use Panel's integrated trigger() once that works again.
87− signal clicked()
87+ MouseArea {
88−
89 width: itemSize
88 width: itemSize
90 height: dashBar.height
89 height: dashBar.height
91 anchors.top: parent.top
90 anchors.top: parent.top
Dash/GenericScopeView.qml+4−4
@@ -74,12 +74,12 @@ ScopeView {
74 onLoaded: {
74 onLoaded: {
75 if (source.toString().indexOf("Apps/RunningApplicationsGrid.qml") != -1) {
75 if (source.toString().indexOf("Apps/RunningApplicationsGrid.qml") != -1) {
76 // TODO: the running apps grid doesn't support standard scope results model yet
76 // TODO: the running apps grid doesn't support standard scope results model yet
77− item.firstModel = results.firstModel
77+ item.firstModel = Qt.binding(function() { return results.firstModel })
78− item.secondModel = results.secondModel
78+ item.secondModel = Qt.binding(function() { return results.secondModel })
79 } else {
79 } else {
80− item.model = results
80+ item.model = Qt.binding(function() { return results })
81 }
81 }
82− item.objectName = categoryId
82+ item.objectName = Qt.binding(function() { return categoryId })
83 if (item.expandable) {
83 if (item.expandable) {
84 var shouldFilter = index != categoryView.expandedIndex;
84 var shouldFilter = index != categoryView.expandedIndex;
85 if (shouldFilter != item.filter) {
85 if (shouldFilter != item.filter) {
Greeter/Greeter.qml+6−2
@@ -44,6 +44,8 @@ Showable {
44 readonly property bool rightTeaserPressed: greeterContentLoader.status == Loader.Ready &&
44 readonly property bool rightTeaserPressed: greeterContentLoader.status == Loader.Ready &&
45 greeterContentLoader.item.rightTeaserPressed
45 greeterContentLoader.item.rightTeaserPressed
46
46
47+ readonly property int currentIndex: greeterContentLoader.currentIndex
48+
47 signal selected(int uid)
49 signal selected(int uid)
48 signal unlocked(int uid)
50 signal unlocked(int uid)
49
51
@@ -63,11 +65,13 @@ Showable {
63
65
64 source: required ? "GreeterContent.qml" : ""
66 source: required ? "GreeterContent.qml" : ""
65
67
66−
67 Connections {
68 Connections {
68 target: greeterContentLoader.item
69 target: greeterContentLoader.item
69
70
71+ onSelected: {
70− onSelected: greeter.selected(uid);
72+ greeter.selected(uid);
73+ greeterContentLoader.currentIndex = uid;
74+ }
71 onUnlocked: greeter.unlocked(uid);
75 onUnlocked: greeter.unlocked(uid);
72 }
76 }
73 }
77 }
Greeter/GreeterContent.qml+8−1
@@ -23,7 +23,7 @@ MouseArea {
23 id: root
23 id: root
24 anchors.fill: parent
24 anchors.fill: parent
25
25
26− property bool ready: wallpaper.status == Image.Ready
26+ property bool ready: wallpaper.source == "" || wallpaper.status == Image.Ready || wallpaper.status == Image.Error
27 property bool leftTeaserPressed: teasingMouseArea.pressed &&
27 property bool leftTeaserPressed: teasingMouseArea.pressed &&
28 teasingMouseArea.mouseX < teasingMouseArea.width / 2
28 teasingMouseArea.mouseX < teasingMouseArea.width / 2
29 property bool rightTeaserPressed: teasingMouseArea.pressed &&
29 property bool rightTeaserPressed: teasingMouseArea.pressed &&
@@ -32,6 +32,13 @@ MouseArea {
32 signal selected(int uid)
32 signal selected(int uid)
33 signal unlocked(int uid)
33 signal unlocked(int uid)
34
34
35+ Rectangle {
36+ // In case wallpaper fails to load
37+ id: wallpaperBackup
38+ anchors.fill: parent
39+ color: "black"
40+ }
41+
35 CrossFadeImage {
42 CrossFadeImage {
36 id: wallpaper
43 id: wallpaper
37
44
Greeter/Infographics.qml+1−2
@@ -286,9 +286,8 @@ Item {
286 objectName: "backgroundCircle"
286 objectName: "backgroundCircle"
287
287
288 anchors.fill: parent
288 anchors.fill: parent
289− opacity: 0.9
290
289
291− source: "graphics/infographic_circle.png"
290+ source: "graphics/infographic_circle_back.png"
292 }
291 }
293
292
294 Timer {
293 Timer {
Greeter/Lockscreen.qml+8
@@ -53,7 +53,15 @@ Showable {
53 pinPadLoader.resetting = false;
53 pinPadLoader.resetting = false;
54 }
54 }
55
55
56+ Rectangle {
57+ // In case wallpaper fails to load or is undefined
58+ id: wallpaperBackup
59+ anchors.fill: parent
60+ color: "black"
61+ }
62+
56 Image {
63 Image {
64+ id: wallpaper
57 anchors.fill: parent
65 anchors.fill: parent
58 source: root.required ? root.background : ""
66 source: root.required ? root.background : ""
59 fillMode: Image.PreserveAspectCrop
67 fillMode: Image.PreserveAspectCrop
Greeter/graphics/infographic_circle.pngdeleted

Binary file not shown.

Greeter/graphics/infographic_circle_back.pngnew file

Binary file not shown.

Launcher/Launcher.qml+1
@@ -145,6 +145,7 @@ Item {
145 LauncherPanel {
145 LauncherPanel {
146 id: panel
146 id: panel
147 objectName: "launcherPanel"
147 objectName: "launcherPanel"
148+ enabled: root.available
148 width: root.panelWidth
149 width: root.panelWidth
149 anchors {
150 anchors {
150 top: parent.top
151 top: parent.top
Launcher/LauncherDelegate.qml+21−10
@@ -24,6 +24,7 @@ Item {
24 property int count: -1
24 property int count: -1
25 property int progress: -1
25 property int progress: -1
26 property bool highlighted: false
26 property bool highlighted: false
27+ property bool itemFocused: false
27 property real maxAngle: 0
28 property real maxAngle: 0
28 property bool inverted: false
29 property bool inverted: false
29
30
@@ -43,24 +44,25 @@ Item {
43 onCountChanged: shaderEffectSource.scheduleUpdate();
44 onCountChanged: shaderEffectSource.scheduleUpdate();
44 onProgressChanged: shaderEffectSource.scheduleUpdate();
45 onProgressChanged: shaderEffectSource.scheduleUpdate();
45 onHighlightedChanged: shaderEffectSource.scheduleUpdate();
46 onHighlightedChanged: shaderEffectSource.scheduleUpdate();
47+ onItemFocusedChanged: shaderEffectSource.scheduleUpdate();
46
48
47 Item {
49 Item {
48 id: iconItem
50 id: iconItem
49− width: parent.itemWidth
51+ width: parent.itemWidth + units.gu(1)
50− height: parent.itemHeight
52+ height: parent.itemHeight + units.gu(1)
51 anchors.centerIn: parent
53 anchors.centerIn: parent
52
54
53 UbuntuShape {
55 UbuntuShape {
54 id: iconShape
56 id: iconShape
55 anchors.fill: parent
57 anchors.fill: parent
56− anchors.margins: units.gu(0.5)
58+ anchors.margins: units.gu(1)
57 radius: "medium"
59 radius: "medium"
58
60
59 image: Image {
61 image: Image {
60 id: iconImage
62 id: iconImage
61 sourceSize.width: iconShape.width
63 sourceSize.width: iconShape.width
62 sourceSize.height: iconShape.height
64 sourceSize.height: iconShape.height
63− source: "../graphics/applicationIcons/" + root.iconName + ".png"
65+ source: root.iconName
64 }
66 }
65 }
67 }
66
68
@@ -78,7 +80,7 @@ Item {
78 anchors {
80 anchors {
79 right: parent.right
81 right: parent.right
80 top: parent.top
82 top: parent.top
81− margins: -units.dp(1)
83+ margins: units.dp(3)
82 }
84 }
83 width: Math.min(root.itemWidth, Math.max(units.gu(3), countLabel.implicitWidth + units.gu(2.5)))
85 width: Math.min(root.itemWidth, Math.max(units.gu(3), countLabel.implicitWidth + units.gu(2.5)))
84 height: units.gu(3)
86 height: units.gu(3)
@@ -105,9 +107,9 @@ Item {
105 left: iconItem.left
107 left: iconItem.left
106 right: iconItem.right
108 right: iconItem.right
107 bottom: iconItem.bottom
109 bottom: iconItem.bottom
108− leftMargin: units.gu(0.5)
110+ leftMargin: units.gu(1)
109− rightMargin: units.gu(0.5)
111+ rightMargin: units.gu(1)
110− bottomMargin: units.gu(0.5)
112+ bottomMargin: units.gu(1)
111 }
113 }
112 height: units.gu(1.5)
114 height: units.gu(1.5)
113 visible: root.progress > -1
115 visible: root.progress > -1
@@ -136,14 +138,23 @@ Item {
136 }
138 }
137 }
139 }
138 }
140 }
141+ Image {
142+ objectName: "focusedHighlight"
143+ anchors {
144+ right: parent.right
145+ verticalCenter: parent.verticalCenter
146+ }
147+ visible: root.itemFocused
148+ source: "graphics/focused_app_arrow.png"
149+ }
139 }
150 }
140
151
141 ShaderEffect {
152 ShaderEffect {
142 id: transformEffect
153 id: transformEffect
143 anchors.centerIn: parent
154 anchors.centerIn: parent
144 anchors.verticalCenterOffset: root.offset
155 anchors.verticalCenterOffset: root.offset
145− width: parent.itemWidth
156+ width: iconItem.width
146− height: parent.itemHeight
157+ height: iconItem.height
147 property real itemOpacity: root.itemOpacity
158 property real itemOpacity: root.itemOpacity
148 property real brightness: Math.max(-1, root.brightness)
159 property real brightness: Math.max(-1, root.brightness)
149 property real angle: root.angle
160 property real angle: root.angle
Launcher/LauncherPanel.qml+23−3
@@ -50,8 +50,6 @@ Item {
50 id: mainColumn
50 id: mainColumn
51 anchors {
51 anchors {
52 fill: parent
52 fill: parent
53− leftMargin: units.gu(0.5)
54− rightMargin: units.gu(0.5)
55 }
53 }
56
54
57 MouseArea {
55 MouseArea {
@@ -94,6 +92,8 @@ Item {
94 fill: parent
92 fill: parent
95 topMargin: -extensionSize + units.gu(0.5)
93 topMargin: -extensionSize + units.gu(0.5)
96 bottomMargin: -extensionSize + units.gu(1)
94 bottomMargin: -extensionSize + units.gu(1)
95+ leftMargin: units.gu(0.5)
96+ rightMargin: units.gu(0.5)
97 }
97 }
98 topMargin: extensionSize
98 topMargin: extensionSize
99 bottomMargin: extensionSize
99 bottomMargin: extensionSize
@@ -110,7 +110,20 @@ Item {
110 // destroyed when dragging them outside the list. This needs to be at least
110 // destroyed when dragging them outside the list. This needs to be at least
111 // itemHeight to prevent folded items from disappearing and DragArea limits
111 // itemHeight to prevent folded items from disappearing and DragArea limits
112 // need to be smaller than this size to avoid breakage.
112 // need to be smaller than this size to avoid breakage.
113− property int extensionSize: itemHeight * 3
113+ property int extensionSize: 0
114+
115+ // Setting extensionSize after the list has been populated because it has
116+ // the potential to mess up with the intial positioning in combination
117+ // with snapping to the center of the list. This catches all the cases
118+ // where the item would be outside the list for more than itemHeight / 2.
119+ // For the rest, give it a flick to scroll to the beginning. Note that
120+ // the flicking alone isn't enough because in some cases it's not strong
121+ // enough to overcome the snapping.
122+ // https://bugreports.qt-project.org/browse/QTBUG-32251
123+ Component.onCompleted: {
124+ extensionSize = itemHeight * 3
125+ flick(0, clickFlickSpeed)
126+ }
114
127
115 // The height of the area where icons start getting folded
128 // The height of the area where icons start getting folded
116 property int foldingStartHeight: units.gu(6.5)
129 property int foldingStartHeight: units.gu(6.5)
@@ -143,6 +156,7 @@ Item {
143 iconName: model.icon
156 iconName: model.icon
144 count: model.count
157 count: model.count
145 progress: model.progress
158 progress: model.progress
159+ itemFocused: model.focused
146 inverted: root.inverted
160 inverted: root.inverted
147 z: -Math.abs(offset)
161 z: -Math.abs(offset)
148 maxAngle: 55
162 maxAngle: 55
@@ -499,6 +513,12 @@ Item {
499 objectName: "quickListEntry" + index
513 objectName: "quickListEntry" + index
500 text: (model.clickable ? "" : "<b>") + model.label + (model.clickable ? "" : "</b>")
514 text: (model.clickable ? "" : "<b>") + model.label + (model.clickable ? "" : "</b>")
501 highlightWhenPressed: model.clickable
515 highlightWhenPressed: model.clickable
516+
517+ // FIXME: This is a workaround for the theme not being context sensitive. I.e. the
518+ // ListItems don't know that they are sitting in a themed Popover where the color
519+ // needs to be inverted.
520+ __foregroundColor: Theme.palette.selected.backgroundText
521+
502 onClicked: {
522 onClicked: {
503 if (!model.clickable) {
523 if (!model.clickable) {
504 return;
524 return;
Launcher/graphics/focused_app_arrow@30.pngnew file

Binary file not shown.

Panel/Indicators.qml+4−2
@@ -34,6 +34,7 @@ Showable {
34 property bool fullyOpened: height == openedHeight
34 property bool fullyOpened: height == openedHeight
35 property bool partiallyOpened: height > panelHeight && !fullyOpened
35 property bool partiallyOpened: height > panelHeight && !fullyOpened
36 property real visualBottom: Math.max(y+height, y+indicatorRow.y+indicatorRow.height)
36 property real visualBottom: Math.max(y+height, y+indicatorRow.y+indicatorRow.height)
37+ property bool contentEnabled: true
37
38
38 // TODO: Perhaps we need a animation standard for showing/hiding? Each showable seems to
39 // TODO: Perhaps we need a animation standard for showing/hiding? Each showable seems to
39 // use its own values. Need to ask design about this.
40 // use its own values. Need to ask design about this.
@@ -178,6 +179,7 @@ Showable {
178 indicatorsModel: indicatorsModel
179 indicatorsModel: indicatorsModel
179 clip: !indicators.fullyOpened
180 clip: !indicators.fullyOpened
180 activeHeader: indicators.state == "hint" || indicators.state == "reveal"
181 activeHeader: indicators.state == "hint" || indicators.state == "reveal"
182+ enabled: contentEnabled
181 visibleIndicators: indicatorRow.visibleIndicators
183 visibleIndicators: indicatorRow.visibleIndicators
182
184
183 Connections {
185 Connections {
@@ -316,7 +318,7 @@ Showable {
316 anchors.right: parent.right
318 anchors.right: parent.right
317 height: panelHeight
319 height: panelHeight
318 direction: Direction.Downwards
320 direction: Direction.Downwards
319− enabled: !indicators.shown
321+ enabled: !indicators.shown && indicators.available
320 hintDisplacement: pinnedMode ? indicators.hintValue : 0
322 hintDisplacement: pinnedMode ? indicators.hintValue : 0
321 autoCompleteDragThreshold: maxTotalDragDistance / 2
323 autoCompleteDragThreshold: maxTotalDragDistance / 2
322 stretch: true
324 stretch: true
@@ -333,7 +335,7 @@ Showable {
333 id: hideDragHandle
335 id: hideDragHandle
334 anchors.fill: handle
336 anchors.fill: handle
335 direction: Direction.Upwards
337 direction: Direction.Upwards
336− enabled: indicators.shown
338+ enabled: indicators.shown && indicators.available
337 hintDisplacement: indicators.hintValue
339 hintDisplacement: indicators.hintValue
338 autoCompleteDragThreshold: maxTotalDragDistance / 6
340 autoCompleteDragThreshold: maxTotalDragDistance / 6
339 stretch: true
341 stretch: true
Panel/Indicators/DefaultIndicatorWidget.qml+1−1
@@ -24,7 +24,7 @@ import Unity.IndicatorsLegacy 0.1 as Indicators
24Indicators.IndicatorWidget {
24Indicators.IndicatorWidget {
25 id: indicatorWidget
25 id: indicatorWidget
26
26
27− width: itemRow.width + units.gu(1)
27+ width: itemRow.width + units.gu(0.5)
28
28
29 property alias label: itemLabel.text
29 property alias label: itemLabel.text
30 property alias iconSource: itemImage.source
30 property alias iconSource: itemImage.source
Panel/Indicators/DefaultIndicatorWidget2.qml+43−16
@@ -24,10 +24,11 @@ import Unity.Indicators 0.1 as Indicators
24Indicators.IndicatorWidget {
24Indicators.IndicatorWidget {
25 id: indicatorWidget
25 id: indicatorWidget
26
26
27− width: itemRow.width + units.gu(1)
27+ width: itemRow.width + units.gu(0.5)
28
28
29− property alias label: itemLabel.text
29+ property alias leftLabel: itemLeftLabel.text
30− property alias iconSource: itemImage.source
30+ property alias rightLabel: itemRightLabel.text
31+ property var icons: undefined
31
32
32 Row {
33 Row {
33 id: itemRow
34 id: itemRow
@@ -39,19 +40,43 @@ Indicators.IndicatorWidget {
39 }
40 }
40 spacing: units.gu(0.5)
41 spacing: units.gu(0.5)
41
42
42− // FIXME : Should us Ubuntu.Icon . results in low res images
43+ Label {
43− Image {
44+ id: itemLeftLabel
44− id: itemImage
45− objectName: "itemImage"
45+ objectName: "leftLabel"
46− visible: source != ""
46+ color: Theme.palette.selected.backgroundText
47− height: indicatorWidget.iconSize
47+ opacity: 0.8
48− width: indicatorWidget.iconSize
48+ font.family: "Ubuntu"
49+ fontSize: "medium"
49 anchors.verticalCenter: parent.verticalCenter
50 anchors.verticalCenter: parent.verticalCenter
51+ visible: text != ""
52+ }
53+
54+ Row {
55+ width: childrenRect.width
56+ anchors {
57+ top: parent.top
58+ bottom: parent.bottom
59+ }
60+ spacing: units.gu(0.5)
61+
62+ Repeater {
63+ model: indicatorWidget.icons
64+
65+ Image {
66+ id: itemImage
67+ objectName: "itemImage"
68+ visible: source != ""
69+ source: modelData
70+ height: indicatorWidget.iconSize
71+ width: indicatorWidget.iconSize
72+ anchors.verticalCenter: parent.verticalCenter
73+ }
74+ }
50 }
75 }
51
76
52 Label {
77 Label {
53− id: itemLabel
78+ id: itemRightLabel
54− objectName: "itemLabel"
79+ objectName: "rightLabel"
55 color: Theme.palette.selected.backgroundText
80 color: Theme.palette.selected.backgroundText
56 opacity: 0.8
81 opacity: 0.8
57 font.family: "Ubuntu"
82 font.family: "Ubuntu"
@@ -63,14 +88,16 @@ Indicators.IndicatorWidget {
63
88
64 onActionStateChanged: {
89 onActionStateChanged: {
65 if (actionState == undefined) {
90 if (actionState == undefined) {
66− label = "";
91+ leftLabel = "";
67− iconSource = "";
92+ rightLabel = "";
93+ icons = undefined;
68 enabled = false;
94 enabled = false;
69 return;
95 return;
70 }
96 }
71
97
72− label = actionState.label;
98+ leftLabel = actionState.leftLabel ? actionState.leftLabel : "";
99+ rightLabel = actionState.rightLabel ? actionState.rightLabel : "";
73− iconSource = actionState.icon;
100+ icons = actionState.icons;
74 enabled = actionState.visible;
101 enabled = actionState.visible;
75 }
102 }
76}
103}
Panel/Indicators/NetworkIndicatorWidget.qml+1−1
@@ -24,7 +24,7 @@ import Unity.IndicatorsLegacy 0.1 as Indicators
24Indicators.IndicatorWidget {
24Indicators.IndicatorWidget {
25 id: indicatorWidget
25 id: indicatorWidget
26
26
27− width: networkIcon.width + units.gu(1)
27+ width: networkIcon.width + units.gu(0.5)
28
28
29 property int signalStrength: 0
29 property int signalStrength: 0
30 property int connectionState: Indicators.NetworkConnection.Initial
30 property int connectionState: Indicators.NetworkConnection.Initial
Shell.qml+39−3
@@ -19,6 +19,7 @@ import GSettings 1.0
19import Ubuntu.Application 0.1
19import Ubuntu.Application 0.1
20import Ubuntu.Components 0.1
20import Ubuntu.Components 0.1
21import Ubuntu.Gestures 0.1
21import Ubuntu.Gestures 0.1
22+import Unity.Launcher 0.1
22import LightDM 0.1 as LightDM
23import LightDM 0.1 as LightDM
23import Powerd 0.1
24import Powerd 0.1
24import "Dash"
25import "Dash"
@@ -94,6 +95,15 @@ FocusScope {
94 greeter.hide();
95 greeter.hide();
95 shell.activateApplication(desktopFile);
96 shell.activateApplication(desktopFile);
96 }
97 }
98+
99+ onMainStageFocusedApplicationChanged: {
100+ var app = applicationManager.mainStageFocusedApplication
101+ if (app != null) {
102+ LauncherModel.applicationFocused(app.desktopFile);
103+ } else {
104+ LauncherModel.applicationFocused("");
105+ }
106+ }
97 }
107 }
98
108
99 function activateApplication(desktopFile, argument) {
109 function activateApplication(desktopFile, argument) {
@@ -195,7 +205,7 @@ FocusScope {
195 available: !greeter.shown && !lockscreen.shown
205 available: !greeter.shown && !lockscreen.shown
196 hides: [stages, launcher, panel.indicators]
206 hides: [stages, launcher, panel.indicators]
197 shown: disappearingAnimationProgress !== 1.0
207 shown: disappearingAnimationProgress !== 1.0
198− enabled: disappearingAnimationProgress === 0.0
208+ enabled: disappearingAnimationProgress === 0.0 && edgeDemo.dashEnabled
199 // FIXME: unfocus all applications when going back to the dash
209 // FIXME: unfocus all applications when going back to the dash
200 onEnabledChanged: {
210 onEnabledChanged: {
201 if (enabled) {
211 if (enabled) {
@@ -386,6 +396,7 @@ FocusScope {
386
396
387 width: shell.edgeSize
397 width: shell.edgeSize
388 direction: Direction.Leftwards
398 direction: Direction.Leftwards
399+ enabled: edgeDemo.dashEnabled
389 property bool haveApps: mainStage.applications.count > 0 || sideStage.applications.count > 0
400 property bool haveApps: mainStage.applications.count > 0 || sideStage.applications.count > 0
390
401
391 maxTotalDragDistance: haveApps ? parent.width : parent.width * 0.7
402 maxTotalDragDistance: haveApps ? parent.width : parent.width * 0.7
@@ -414,6 +425,7 @@ FocusScope {
414 Component.onCompleted: {
425 Component.onCompleted: {
415 if (LightDM.Users.count == 1) {
426 if (LightDM.Users.count == 1) {
416 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole))
427 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole))
428+ greeter.selected(0)
417 }
429 }
418 }
430 }
419 }
431 }
@@ -456,12 +468,18 @@ FocusScope {
456 // If there are more users, the Greeter will handle that
468 // If there are more users, the Greeter will handle that
457 if (LightDM.Users.count == 1) {
469 if (LightDM.Users.count == 1) {
458 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
470 LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
471+ greeter.selected(0);
459 }
472 }
460 greeter.forceActiveFocus();
473 greeter.forceActiveFocus();
461 }
474 }
462 }
475 }
463
476
464 onUnlocked: greeter.hide()
477 onUnlocked: greeter.hide()
478+ onSelected: {
479+ // Update launcher items for new user
480+ var user = LightDM.Users.data(uid, LightDM.UserRoles.NameRole);
481+ LauncherModel.setUser(user);
482+ }
465
483
466 onLeftTeaserPressedChanged: {
484 onLeftTeaserPressedChanged: {
467 if (leftTeaserPressed) {
485 if (leftTeaserPressed) {
@@ -510,6 +528,13 @@ FocusScope {
510 } else if (status == Powerd.On) {
528 } else if (status == Powerd.On) {
511 powerConnection.setFocused(true);
529 powerConnection.setFocused(true);
512 }
530 }
531+
532+ // No reason to chew demo CPU when user isn't watching
533+ if (status == Powerd.Off) {
534+ edgeDemo.paused = true;
535+ } else if (status == Powerd.On) {
536+ edgeDemo.paused = false;
537+ }
513 }
538 }
514 }
539 }
515
540
@@ -524,6 +549,8 @@ FocusScope {
524 indicatorsMenuWidth: parent.width > units.gu(60) ? units.gu(40) : parent.width
549 indicatorsMenuWidth: parent.width > units.gu(60) ? units.gu(40) : parent.width
525 indicators {
550 indicators {
526 hides: [launcher]
551 hides: [launcher]
552+ available: edgeDemo.panelEnabled
553+ contentEnabled: edgeDemo.panelContentEnabled
527 }
554 }
528 fullscreenMode: shell.fullscreenMode
555 fullscreenMode: shell.fullscreenMode
529 searchVisible: !greeter.shown && !lockscreen.shown
556 searchVisible: !greeter.shown && !lockscreen.shown
@@ -540,7 +567,7 @@ FocusScope {
540 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
567 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
541 height: parent.height
568 height: parent.height
542
569
543− available: !greeter.shown && !panel.indicators.shown && !lockscreen.shown
570+ available: !greeter.shown && !panel.indicators.shown && !lockscreen.shown && edgeDemo.dashEnabled
544 shown: false
571 shown: false
545 showAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: 0; easing.type: Easing.Linear }
572 showAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: 0; easing.type: Easing.Linear }
546 hideAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: hudRevealer.closedValue; easing.type: Easing.Linear }
573 hideAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: hudRevealer.closedValue; easing.type: Easing.Linear }
@@ -598,7 +625,7 @@ FocusScope {
598 anchors.bottom: parent.bottom
625 anchors.bottom: parent.bottom
599 width: parent.width
626 width: parent.width
600 dragAreaWidth: shell.edgeSize
627 dragAreaWidth: shell.edgeSize
601− available: !greeter.shown || greeter.narrowMode
628+ available: (!greeter.shown || greeter.narrowMode) && edgeDemo.launcherEnabled
602 onDashItemSelected: {
629 onDashItemSelected: {
603 greeter.hide()
630 greeter.hide()
604 // Animate if moving between application and dash
631 // Animate if moving between application and dash
@@ -707,4 +734,13 @@ FocusScope {
707 rotation: -45
734 rotation: -45
708 scale: Math.min(parent.width, parent.height) / width
735 scale: Math.min(parent.width, parent.height) / width
709 }
736 }
737+
738+ EdgeDemo {
739+ id: edgeDemo
740+ greeter: greeter
741+ launcher: launcher
742+ dash: dash
743+ indicators: panel.indicators
744+ underlay: underlay
745+ }
710}
746}
build+9
@@ -57,6 +57,15 @@ mk_build_deps() {
57 [ ! -f unity8-build-deps*deb -o $CODE_DIR/debian/control -nt unity8-build-deps*deb ] && mk-build-deps --install --root-cmd sudo $CODE_DIR/debian/control
57 [ ! -f unity8-build-deps*deb -o $CODE_DIR/debian/control -nt unity8-build-deps*deb ] && mk-build-deps --install --root-cmd sudo $CODE_DIR/debian/control
58}
58}
59
59
60+if [ -f "/usr/bin/ccache" ] ; then
61+ if [ "x$CC" = "x" ]; then
62+ export CC='ccache gcc'
63+ fi
64+ if [ "x$CXX" = "x" ] ; then
65+ export CXX='ccache g++'
66+ fi
67+fi
68+
60if [ -f "/usr/bin/ninja" ] ; then
69if [ -f "/usr/bin/ninja" ] ; then
61 GENERATOR="-G Ninja"
70 GENERATOR="-G Ninja"
62 # Ninja does not need -j, it parallelizes automatically.
71 # Ninja does not need -j, it parallelizes automatically.
debian/changelog+142
@@ -1,3 +1,145 @@
1+unity8 (7.81.3+13.10.20130905.2-0ubuntu1) saucy; urgency=low
2+
3+ [ Michael Zanetti ]
4+ * Integrate Launcher with AppManager.
5+
6+ [ Nick Dedekind ]
7+ * Removed FIXME from slider int->double conversion.
8+
9+ [ Ubuntu daily release ]
10+ * Automatic snapshot from revision 291
11+
12+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 05 Sep 2013 10:48:02 +0000
13+
14+unity8 (7.81.3+13.10.20130904.1-0ubuntu1) saucy; urgency=low
15+
16+ [ Nicolas d'Offay ]
17+ * Switched infographic background at design's request.
18+
19+ [ Ubuntu daily release ]
20+ * Automatic snapshot from revision 287
21+
22+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 04 Sep 2013 07:34:57 +0000
23+
24+unity8 (7.81.3+13.10.20130904-0ubuntu1) saucy; urgency=low
25+
26+ [ mhall119 ]
27+ * Add a little bit of text to the last step of the tour telling the
28+ user how to end it and get to their phone.
29+
30+ [ Jussi Pakkanen ]
31+ * Use CCache if it is installed.
32+
33+ [ Nick Dedekind ]
34+ * Multiple icon/label support for indicators.
35+
36+ [ Albert Astals ]
37+ * Remove unneeded role.
38+
39+ [ Lars Uebernickel ]
40+ * Fall back to "ubuntu-mobile" icon theme if $UBUNTU_ICON_THEME is
41+ unset.
42+
43+ [ Michael Zanetti ]
44+ * Use MouseAreas in DashBar to enable clicking again.
45+ * load launcher default config from existing dconf key.
46+
47+ [ Ubuntu daily release ]
48+ * Automatic snapshot from revision 285
49+
50+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 04 Sep 2013 03:02:57 +0000
51+
52+unity8 (7.81.3+13.10.20130903.1-0ubuntu1) saucy; urgency=low
53+
54+ [ Michael Zanetti ]
55+ * workaround quicklist text color.
56+
57+ [ Ubuntu daily release ]
58+ * Automatic snapshot from revision 277
59+
60+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 03 Sep 2013 06:09:36 +0000
61+
62+unity8 (7.81.3+13.10.20130830-0ubuntu1) saucy; urgency=low
63+
64+ [ Pawel Stolowski ]
65+ * Implement a virtual 'All' filter option.
66+
67+ [ Ubuntu daily release ]
68+ * Automatic snapshot from revision 275
69+
70+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 30 Aug 2013 12:44:40 +0000
71+
72+unity8 (7.81.3+13.10.20130829.2-0ubuntu1) saucy; urgency=low
73+
74+ [ Michael Terry ]
75+ * Implement launcher item backend via AccountsService.
76+
77+ [ Ubuntu daily release ]
78+ * Automatic snapshot from revision 272
79+
80+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 29 Aug 2013 19:09:44 +0000
81+
82+unity8 (7.81.3+13.10.20130829.1-0ubuntu1) saucy; urgency=low
83+
84+ [ Michael Terry ]
85+ * Make sure greeter and lockscreen backgrounds are always defined,
86+ even if the wallpaper preference string is bogus. (LP: #1208889,
87+ #1208894)
88+
89+ [ Ubuntu daily release ]
90+ * Automatic snapshot from revision 270
91+
92+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 29 Aug 2013 11:09:43 +0000
93+
94+unity8 (7.81.3+13.10.20130829-0ubuntu1) saucy; urgency=low
95+
96+ [ Andrea Cimitan ]
97+ * Streamline some new HUD interactions to be more consistent with the
98+ Unity Launcher.
99+
100+ [ Michael Zanetti ]
101+ * setting the launcher's extensionSize delayed to position the view
102+ correctly at the beginning .
103+
104+ [ Bill Filler ]
105+ * add new telephony apps (dialer, messaging, contacts) to launcher and
106+ Home scope.
107+
108+ [ Michael Terry ]
109+ * Implement edge demos on first boot. Build-Depends: +dbus-test-
110+ runner, +qtbase5-dev-tools.
111+
112+ [ Ubuntu daily release ]
113+ * Automatic snapshot from revision 267
114+
115+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 29 Aug 2013 02:10:38 +0000
116+
117+unity8 (7.81.3+13.10.20130828.1-0ubuntu1) saucy; urgency=low
118+
119+ [ Andrea Cimitan ]
120+ * Hide the LauncherPanel when it's really hidden, by changing visible
121+ to false.
122+
123+ [ Gerry Boland ]
124+ * Fix sidestage applications - they were being ignored in the show-
125+ application-surface logic. (LP: #1217027, #1210079)
126+
127+ [ Michał Sawicz ]
128+ * Raise the exception if typing failed in autopilot.
129+
130+ [ Nick Dedekind ]
131+ * Added location indicator defaults.
132+
133+ [ Michael Zanetti ]
134+ * increase minimal dragging width for dismissing apps with left edge
135+ make it a configurable parameter and adjust animation to look like
136+ requested in the bug report . (LP: #1213153)
137+
138+ [ Ubuntu daily release ]
139+ * Automatic snapshot from revision 262
140+
141+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 28 Aug 2013 11:55:46 +0000
142+
1unity8 (7.81.3+13.10.20130827.1-0ubuntu1) saucy; urgency=low
143unity8 (7.81.3+13.10.20130827.1-0ubuntu1) saucy; urgency=low
2
144
3 [ Michael Zanetti ]
145 [ Michael Zanetti ]
debian/control+3
@@ -3,11 +3,13 @@ Section: x11
3Priority: optional
3Priority: optional
4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
4Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5Build-Depends: cmake,
5Build-Depends: cmake,
6+ dbus-test-runner,
6 debhelper (>= 9),
7 debhelper (>= 9),
7 libdee-qt5-dev (>= 3.2),
8 libdee-qt5-dev (>= 3.2),
8 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
9 libgl1-mesa-dev[!armhf] | libgl-dev[!armhf],
9 libgl1-mesa-dri,
10 libgl1-mesa-dri,
10 libgles2-mesa-dev[armhf],
11 libgles2-mesa-dev[armhf],
12+ libgsettings-qt-dev,
11 libhud-client2-dev,
13 libhud-client2-dev,
12 libjson-perl,
14 libjson-perl,
13 libnih-dbus-dev,
15 libnih-dbus-dev,
@@ -31,6 +33,7 @@ Build-Depends: cmake,
31 python3:any,
33 python3:any,
32 qt5-default,
34 qt5-default,
33 qtbase5-dev,
35 qtbase5-dev,
36+ qtbase5-dev-tools,
34 qtbase5-private-dev,
37 qtbase5-private-dev,
35 qtdeclarative5-dev,
38 qtdeclarative5-dev,
36 qtdeclarative5-dev-tools,
39 qtdeclarative5-dev-tools,
debian/rules+5
@@ -16,6 +16,11 @@ override_dh_auto_clean:
16 dh_auto_clean
16 dh_auto_clean
17 rm -rf builddir
17 rm -rf builddir
18
18
19+override_dh_auto_configure:
20+ # Debian defines CMAKE_INSTALL_LOCALSTATEDIR as /usr/var, which is wrong.
21+ # So until Debian bug 719148 is fixed, do it ourselves.
22+ dh_auto_configure -- -DCMAKE_INSTALL_LOCALSTATEDIR="/var"
23+
19override_dh_install:
24override_dh_install:
20 # install autopilot tests
25 # install autopilot tests
21 cd tests/autopilot; \
26 cd tests/autopilot; \
debian/unity8-private.install+5
@@ -1,3 +1,4 @@
1+usr/lib/*/unity8/qml/AccountsService
1usr/lib/*/unity8/qml/HudClient
2usr/lib/*/unity8/qml/HudClient
2usr/lib/*/unity8/qml/LightDM
3usr/lib/*/unity8/qml/LightDM
3usr/lib/*/unity8/qml/ListViewWithPageHeader
4usr/lib/*/unity8/qml/ListViewWithPageHeader
@@ -5,3 +6,7 @@ usr/lib/*/unity8/qml/Powerd
5usr/lib/*/unity8/qml/Ubuntu
6usr/lib/*/unity8/qml/Ubuntu
6usr/lib/*/unity8/qml/Unity
7usr/lib/*/unity8/qml/Unity
7usr/lib/*/unity8/qml/Utils
8usr/lib/*/unity8/qml/Utils
9+usr/share/accountsservice/interfaces
10+usr/share/dbus-1/interfaces
11+usr/share/polkit-1
12+var/lib/polkit-1
graphics/applicationIcons/contacts-app@18.pngnew file

Binary file not shown.

graphics/applicationIcons/messages-app@18.pngnew file

Binary file not shown.

graphics/applicationIcons/system-settings@18.pngnew file

Binary file not shown.

main.cpp+3−2
@@ -65,9 +65,10 @@ void appendImportPaths(QQmlEngine *engine, const QStringList &paths)
65
65
66void resolveIconTheme() {
66void resolveIconTheme() {
67 const char *ubuntuIconTheme = getenv("UBUNTU_ICON_THEME");
67 const char *ubuntuIconTheme = getenv("UBUNTU_ICON_THEME");
68− if (ubuntuIconTheme != NULL) {
68+ if (ubuntuIconTheme == NULL) {
69− QIcon::setThemeName(ubuntuIconTheme);
69+ ubuntuIconTheme = "ubuntu-mobile";
70 }
70 }
71+ QIcon::setThemeName(ubuntuIconTheme);
71}
72}
72} // namespace {
73} // namespace {
73
74
plugins/AccountsService/50-com.canonical.unity.AccountsService.pklanew file+6
@@ -0,0 +1,6 @@
1+[Allow LightDM to set Unity AccountsService fields]
2+Identity=unix-user:lightdm
3+Action=com.canonical.unity.AccountsService.ModifyAnyUser
4+ResultActive=yes
5+ResultInactive=yes
6+ResultAny=yes
plugins/AccountsService/AccountsService.cppnew file+74
@@ -0,0 +1,74 @@
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+ * Author: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#include "AccountsService.h"
20+#include <QDBusConnection>
21+#include <QDBusConnectionInterface>
22+#include <QDBusMessage>
23+#include <QDBusVariant>
24+
25+AccountsService::AccountsService(QObject* parent)
26+ : QObject(parent),
27+ accounts_manager(NULL),
28+ users()
29+{
30+ auto connection = QDBusConnection::SM_BUSNAME();
31+ auto interface = connection.interface();
32+ interface->startService("org.freedesktop.Accounts");
33+ accounts_manager = new QDBusInterface("org.freedesktop.Accounts",
34+ "/org/freedesktop/Accounts",
35+ "org.freedesktop.Accounts",
36+ connection, this);
37+}
38+
39+QVariant AccountsService::getUserProperty(const QString &user, const QString &property)
40+{
41+ auto iface = getUserInterface(user);
42+ if (iface != nullptr && iface->isValid()) {
43+ auto answer = iface->call("Get", "com.canonical.unity.AccountsService", property);
44+ if (answer.type() == QDBusMessage::ReplyMessage) {
45+ return answer.arguments()[0].value<QDBusVariant>().variant();
46+ }
47+ }
48+ return QVariant();
49+}
50+
51+void AccountsService::setUserProperty(const QString &user, const QString &property, const QVariant &value)
52+{
53+ auto iface = getUserInterface(user);
54+ if (iface != nullptr && iface->isValid()) {
55+ // The value needs to be carefully wrapped
56+ iface->call("Set", "com.canonical.unity.AccountsService", property, QVariant::fromValue(QDBusVariant(value)));
57+ }
58+}
59+
60+QDBusInterface *AccountsService::getUserInterface(const QString &user)
61+{
62+ auto iface = users.value(user);
63+ if (iface == nullptr && accounts_manager->isValid()) {
64+ auto answer = accounts_manager->call("FindUserByName", user);
65+ if (answer.type() == QDBusMessage::ReplyMessage) {
66+ iface = new QDBusInterface("org.freedesktop.Accounts",
67+ answer.arguments()[0].value<QDBusObjectPath>().path(),
68+ "org.freedesktop.DBus.Properties",
69+ accounts_manager->connection(), this);
70+ users.insert(user, iface);
71+ }
72+ }
73+ return iface;
74+}
plugins/AccountsService/AccountsService.hnew file+44
@@ -0,0 +1,44 @@
1+/*
2+ * Copyright (C) 2012,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+ * Authors: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#ifndef UNITY_ACCOUNTSSERVICE_H
20+#define UNITY_ACCOUNTSSERVICE_H
21+
22+#include <QDBusInterface>
23+#include <QMap>
24+#include <QObject>
25+#include <QString>
26+
27+class AccountsService: public QObject
28+{
29+ Q_OBJECT
30+
31+public:
32+ explicit AccountsService(QObject *parent = 0);
33+
34+ Q_INVOKABLE QVariant getUserProperty(const QString &user, const QString &property);
35+ Q_INVOKABLE void setUserProperty(const QString &user, const QString &property, const QVariant &value);
36+
37+private:
38+ QDBusInterface *getUserInterface(const QString &user);
39+
40+ QDBusInterface *accounts_manager;
41+ QMap<QString, QDBusInterface *> users;
42+};
43+
44+#endif
plugins/AccountsService/CMakeLists.txtnew file+36
@@ -0,0 +1,36 @@
1+include(Plugins)
2+
3+add_definitions(-DSM_BUSNAME=systemBus)
4+
5+add_library(AccountsService-qml MODULE
6+ AccountsService.cpp
7+ plugin.cpp
8+ )
9+
10+qt5_use_modules(AccountsService-qml DBus Qml)
11+
12+export_qmlfiles(AccountsService AccountsService)
13+export_qmlplugin(AccountsService 0.1 AccountsService TARGETS AccountsService-qml)
14+
15+set(POLKIT_LIB_DIR "${CMAKE_INSTALL_LOCALSTATEDIR}/lib/polkit-1")
16+set(POLKIT_DATA_DIR "${CMAKE_INSTALL_PREFIX}/share/polkit-1")
17+set(DBUS_IFACE_DIR "${CMAKE_INSTALL_PREFIX}/share/dbus-1/interfaces")
18+set(ACCOUNTS_IFACE_DIR "${CMAKE_INSTALL_PREFIX}/share/accountsservice/interfaces")
19+
20+install(FILES com.canonical.unity.AccountsService.xml
21+ DESTINATION "${DBUS_IFACE_DIR}"
22+ )
23+
24+# Create accountsservice symlink for above dbus interface
25+install(CODE "
26+execute_process(COMMAND mkdir -p \"\$ENV{DESTDIR}${ACCOUNTS_IFACE_DIR}\")
27+execute_process(COMMAND ln -sf ../../dbus-1/interfaces/com.canonical.unity.AccountsService.xml \"\$ENV{DESTDIR}${ACCOUNTS_IFACE_DIR}\")
28+ ")
29+
30+install(FILES com.canonical.unity.AccountsService.policy
31+ DESTINATION "${POLKIT_DATA_DIR}/actions"
32+ )
33+
34+install(FILES 50-com.canonical.unity.AccountsService.pkla
35+ DESTINATION "${POLKIT_LIB_DIR}/localauthority/10-vendor.d"
36+ )
plugins/AccountsService/com.canonical.unity.AccountsService.policynew file+24
@@ -0,0 +1,24 @@
1+<?xml version="1.0" encoding="UTF-8"?>
2+
3+<policyconfig>
4+ <action id="com.canonical.unity.AccountsService.ModifyOwnUser">
5+ <description>Set properties of own user</description>
6+ <message>Authentication is required to set one's own unity properties.</message>
7+ <defaults>
8+ <allow_any>yes</allow_any>
9+ <allow_inactive>yes</allow_inactive>
10+ <allow_active>yes</allow_active>
11+ </defaults>
12+ </action>
13+
14+ <action id="com.canonical.unity.AccountsService.ModifyAnyUser">
15+ <description>Set properties of any user</description>
16+ <message>Authentication is required to set another user's unity
17+properties.</message>
18+ <defaults>
19+ <allow_any>no</allow_any>
20+ <allow_inactive>no</allow_inactive>
21+ <allow_active>no</allow_active>
22+ </defaults>
23+ </action>
24+</policyconfig>
plugins/AccountsService/com.canonical.unity.AccountsService.xmlnew file+24
@@ -0,0 +1,24 @@
1+<node>
2+ <interface name="com.canonical.unity.AccountsService">
3+
4+ <annotation name="org.freedesktop.Accounts.VendorExtension" value="true"/>
5+
6+ <annotation name="org.freedesktop.Accounts.Authentication.ChangeOwn"
7+ value="com.canonical.unity.AccountsService.ModifyOwnUser"/>
8+
9+ <annotation name="org.freedesktop.Accounts.Authentication.ReadAny"
10+ value="com.canonical.unity.AccountsService.ModifyAnyUser"/>
11+
12+ <annotation name="org.freedesktop.Accounts.Authentication.ChangeAny"
13+ value="com.canonical.unity.AccountsService.ModifyAnyUser"/>
14+
15+ <property name="demo-edges" type="b" access="readwrite">
16+ <annotation name="org.freedesktop.Accounts.DefaultValue" value="true"/>
17+ </property>
18+
19+ <property name="launcher-items" type="aa{sv}" access="readwrite">
20+ <annotation name="org.freedesktop.Accounts.DefaultValue" value="[{'defaults': <true>}]"/>
21+ </property>
22+
23+ </interface>
24+</node>
plugins/AccountsService/plugin.cppnew file+37
@@ -0,0 +1,37 @@
1+/*
2+ * Copyright (C) 2012,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+ * Authors: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#include "plugin.h"
20+#include "AccountsService.h"
21+
22+#include <QDBusMetaType>
23+#include <QtQml>
24+
25+static QObject *service_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
26+{
27+ Q_UNUSED(engine)
28+ Q_UNUSED(scriptEngine)
29+ return new AccountsService();
30+}
31+
32+void AccountsServicePlugin::registerTypes(const char *uri)
33+{
34+ Q_ASSERT(uri == QLatin1String("AccountsService"));
35+ qDBusRegisterMetaType<QList<QVariantMap>>();
36+ qmlRegisterSingletonType<AccountsService>(uri, 0, 1, "AccountsService", service_provider);
37+}
plugins/AccountsService/plugin.hnew file+34
@@ -0,0 +1,34 @@
1+/*
2+ * Copyright (C) 2012,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+ * Authors: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#ifndef ACCOUNTSSERVICE_PLUGIN_H
20+#define ACCOUNTSSERVICE_PLUGIN_H
21+
22+#include <QQmlEngine>
23+#include <QQmlExtensionPlugin>
24+
25+class AccountsServicePlugin : public QQmlExtensionPlugin
26+{
27+ Q_OBJECT
28+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
29+
30+public:
31+ void registerTypes(const char *uri);
32+};
33+
34+#endif
plugins/AccountsService/qmldirnew file+3
@@ -0,0 +1,3 @@
1+module AccountsService
2+plugin AccountsService-qml
3+typeinfo plugin.qmltypes
plugins/CMakeLists.txt+4−3
@@ -1,7 +1,8 @@
1−add_subdirectory(Ubuntu)
1+add_subdirectory(AccountsService)
2−add_subdirectory(Utils)
3−add_subdirectory(Unity)
4add_subdirectory(HudClient)
2add_subdirectory(HudClient)
5add_subdirectory(LightDM)
3add_subdirectory(LightDM)
6add_subdirectory(ListViewWithPageHeader)
4add_subdirectory(ListViewWithPageHeader)
7add_subdirectory(Powerd)
5add_subdirectory(Powerd)
6+add_subdirectory(Ubuntu)
7+add_subdirectory(Unity)
8+add_subdirectory(Utils)
plugins/Unity/CMakeLists.txt+1
@@ -43,6 +43,7 @@ set(QMLPLUGIN_SRC
43 preview.cpp
43 preview.cpp
44 previewaction.cpp
44 previewaction.cpp
45 previewinfohint.cpp
45 previewinfohint.cpp
46+ showallfilteroption.cpp
46 signalslist.cpp
47 signalslist.cpp
47 socialpreview.cpp
48 socialpreview.cpp
48 socialpreviewcomment.cpp
49 socialpreviewcomment.cpp
plugins/Unity/Indicators/qml/MenuItemFactory.qml+1−16
@@ -73,23 +73,8 @@ Item {
73 'max-icon': 'icon'});
73 'max-icon': 'icon'});
74 }
74 }
75
75
76− // FIXME: The interval should be [0.0 - 1.0]. Unfortunately, when
77− // reaching the boundaries (0.0 or 1.0), the value is converted
78− // to an integer when automatically wrapped in a variant when
79− // passed to QStateAction::updateState(…). The server chokes on
80− // those values, complaining that they’re not of the right type…
81 onChangeState: {
76 onChangeState: {
82− if (value == Math.round(value)) {
83− if (value >= maximumValue) {
84− model.changeState(modelIndex, maximumValue - 0.000001);
85− } else if (value <= minimumValue) {
86− model.changeState(modelIndex, minimumValue + 0.000001);
77+ model.changeState(modelIndex, value);
87− } else {
88− model.changeState(modelIndex, value * 1.000001);
89− }
90− } else {
91− model.changeState(modelIndex, value);
92− }
93 }
78 }
94 }
79 }
95 }
80 }
plugins/Unity/Indicators/rootactionstate.cpp+44−14
@@ -108,25 +108,32 @@ bool RootActionState::isValid() const
108 return m_menu && m_menu->rowCount() > 0;
108 return m_menu && m_menu->rowCount() > 0;
109}
109}
110
110
111−QString RootActionState::label() const
111+QString RootActionState::leftLabel() const
112{
112{
113 if (!isValid()) return QString();
113 if (!isValid()) return QString();
114
114
115− return m_cachedState.value("label", QVariant::fromValue(QString())).toString();
115+ return m_cachedState.value("pre-label", QVariant::fromValue(QString())).toString();
116}
116}
117
117
118−QString RootActionState::icon() const
118+QString RootActionState::rightLabel() const
119{
119{
120 if (!isValid()) return QString();
120 if (!isValid()) return QString();
121
121
122− return m_cachedState.value("icon", QVariant::fromValue(QString())).toString();
122+ return m_cachedState.value("label", QVariant::fromValue(QString())).toString();
123+}
124+
125+QStringList RootActionState::icons() const
126+{
127+ if (!isValid()) return QStringList();
128+
129+ return m_cachedState.value("icons", QVariant::fromValue(QStringList())).toStringList();
123}
130}
124
131
125QString RootActionState::accessibleName() const
132QString RootActionState::accessibleName() const
126{
133{
127 if (!isValid()) return QString();
134 if (!isValid()) return QString();
128
135
129− return m_cachedState.value("accessible-name", QVariant::fromValue(QString())).toString();
136+ return m_cachedState.value("accessible-desc", QVariant::fromValue(QString())).toString();
130}
137}
131
138
132bool RootActionState::isVisible() const
139bool RootActionState::isVisible() const
@@ -198,16 +205,39 @@ QVariant RootActionState::toQVariant(GVariant* state) const
198 while (g_variant_iter_loop (&iter, "{sv}", &key, &vvalue))
205 while (g_variant_iter_loop (&iter, "{sv}", &key, &vvalue))
199 {
206 {
200 QString str = QString::fromUtf8(key);
207 QString str = QString::fromUtf8(key);
201− if (str == "icon") {
208+ if (str == "icon" && !qmap.contains("icons")) {
209+ QStringList icons;
210+
202 // FIXME - should be sending a url.
211 // FIXME - should be sending a url.
203− GIcon *icon = g_icon_deserialize (vvalue);
212+ GIcon *gicon = g_icon_deserialize (vvalue);
204− if (icon) {
213+ if (gicon) {
205− qmap.insert(str, iconUri(icon));
214+ icons << iconUri(gicon);
206− g_object_unref (icon);
215+ g_object_unref (gicon);
207 }
216 }
208− else {
209− qmap.insert(str, QVariant(""));
217+ qmap.insert("icons", icons);
218+
219+ } else if (str == "icons") {
220+
221+ QStringList icons;
222+
223+ if (g_variant_type_is_array(g_variant_get_type(vvalue))) {
224+
225+
226+ for (int i = 0, iMax = g_variant_n_children(vvalue); i < iMax; i++) {
227+ GVariant *child = g_variant_get_child_value(vvalue, i);
228+
229+ // FIXME - should be sending a url.
230+ GIcon *gicon = g_icon_deserialize (child);
231+ if (gicon) {
232+ icons << iconUri(gicon);
233+ g_object_unref (gicon);
234+ }
235+ g_variant_unref(child);
236+ }
210 }
237 }
238+ // will overwrite icon.
239+ qmap.insert("icons", icons);
240+
211 } else {
241 } else {
212 qmap.insert(str, ActionStateParser::toQVariant(vvalue));
242 qmap.insert(str, ActionStateParser::toQVariant(vvalue));
213 }
243 }
@@ -230,12 +260,12 @@ QVariant RootActionState::toQVariant(GVariant* state) const
230 &visible);
260 &visible);
231
261
232 qmap["label"] = label ? QString::fromUtf8(label) : "";
262 qmap["label"] = label ? QString::fromUtf8(label) : "";
233− qmap["accessible-name"] = accessible_name ? QString::fromUtf8(accessible_name) : "";
263+ qmap["accessible-desc"] = accessible_name ? QString::fromUtf8(accessible_name) : "";
234 qmap["visible"] = visible;
264 qmap["visible"] = visible;
235
265
236 gicon = g_icon_new_for_string (icon, NULL);
266 gicon = g_icon_new_for_string (icon, NULL);
237 if (gicon) {
267 if (gicon) {
238− qmap["icon"] = iconUri(gicon);
268+ qmap["icons"] = QStringList() << iconUri(gicon);
239 g_object_unref (gicon);
269 g_object_unref (gicon);
240 }
270 }
241
271
plugins/Unity/Indicators/rootactionstate.h+9−6
@@ -32,8 +32,9 @@ class UNITYINDICATORS_EXPORT RootActionState : public ActionStateParser
32 Q_PROPERTY(UnityMenuModel* menu READ menu WRITE setMenu NOTIFY menuChanged)
32 Q_PROPERTY(UnityMenuModel* menu READ menu WRITE setMenu NOTIFY menuChanged)
33
33
34 Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)
34 Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)
35− Q_PROPERTY(QString label READ label NOTIFY labelChanged)
35+ Q_PROPERTY(QString leftLabel READ leftLabel NOTIFY leftLabelChanged)
36− Q_PROPERTY(QString icon READ icon NOTIFY iconChanged)
36+ Q_PROPERTY(QString rightLabel READ rightLabel NOTIFY rightLabelChanged)
37+ Q_PROPERTY(QStringList icons READ icons NOTIFY iconsChanged)
37 Q_PROPERTY(QString accessibleName READ accessibleName NOTIFY accessibleNameChanged)
38 Q_PROPERTY(QString accessibleName READ accessibleName NOTIFY accessibleNameChanged)
38 Q_PROPERTY(bool visible READ isVisible NOTIFY visibleChanged)
39 Q_PROPERTY(bool visible READ isVisible NOTIFY visibleChanged)
39public:
40public:
@@ -47,8 +48,9 @@ public:
47 void setIndex(int index);
48 void setIndex(int index);
48
49
49 bool isValid() const;
50 bool isValid() const;
50− QString label() const;
51+ QString leftLabel() const;
51− QString icon() const;
52+ QString rightLabel() const;
53+ QStringList icons() const;
52 QString accessibleName() const;
54 QString accessibleName() const;
53 bool isVisible() const;
55 bool isVisible() const;
54
56
@@ -62,8 +64,9 @@ Q_SIGNALS:
62 void indexChanged();
64 void indexChanged();
63
65
64 void validChanged();
66 void validChanged();
65− void labelChanged();
67+ void leftLabelChanged();
66− void iconChanged();
68+ void rightLabelChanged();
69+ void iconsChanged();
67 void accessibleNameChanged();
70 void accessibleNameChanged();
68 void visibleChanged();
71 void visibleChanged();
69
72
plugins/Unity/Launcher/CMakeLists.txt+9−1
@@ -1,8 +1,13 @@
1include(FindPkgConfig)
1include(FindPkgConfig)
2pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=2)
2pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=2)
3+pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
4+
5+add_definitions(-DSM_BUSNAME=systemBus)
3
6
4include_directories(
7include_directories(
5 ${CMAKE_CURRENT_SOURCE_DIR}
8 ${CMAKE_CURRENT_SOURCE_DIR}
9+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService
10+ ${GSETTINGS_QT_INCLUDE_DIRS}
6)
11)
7
12
8set(QMLLAUNCHERPLUGIN_SRC
13set(QMLLAUNCHERPLUGIN_SRC
@@ -12,6 +17,7 @@ set(QMLLAUNCHERPLUGIN_SRC
12 quicklistmodel.cpp
17 quicklistmodel.cpp
13 common/quicklistentry.cpp
18 common/quicklistentry.cpp
14 backend/launcherbackend.cpp
19 backend/launcherbackend.cpp
20+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsService.cpp
15 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
21 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
16 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
22 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
17 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/QuickListModelInterface.h
23 ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/QuickListModelInterface.h
@@ -21,7 +27,9 @@ add_library(UnityLauncher-qml MODULE
21 ${QMLLAUNCHERPLUGIN_SRC}
27 ${QMLLAUNCHERPLUGIN_SRC}
22 )
28 )
23
29
30+target_link_libraries(UnityLauncher-qml ${GSETTINGS_QT_LDFLAGS})
31+
24−qt5_use_modules(UnityLauncher-qml Qml)
32+qt5_use_modules(UnityLauncher-qml DBus Qml)
25
33
26# export the qmldir and qmltypes files
34# export the qmldir and qmltypes files
27export_qmlfiles(Unity.Launcher Unity/Launcher)
35export_qmlfiles(Unity.Launcher Unity/Launcher)
plugins/Unity/Launcher/backend/launcherbackend.cpp+257−53
@@ -2,6 +2,7 @@
2 * Copyright (C) 2013 Canonical, Ltd.
2 * Copyright (C) 2013 Canonical, Ltd.
3 *
3 *
4 * Authors:
4 * Authors:
5+ * Michael Terry <michael.terry@canonical.com>
5 * Michael Zanetti <michael.zanetti@canonical.com>
6 * Michael Zanetti <michael.zanetti@canonical.com>
6 *
7 *
7 * This program is free software; you can redistribute it and/or modify
8 * This program is free software; you can redistribute it and/or modify
@@ -17,57 +18,45 @@
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19 */
19
20
21+#include "AccountsService.h"
20#include "launcherbackend.h"
22#include "launcherbackend.h"
21
23
22−#include <QHash>
24+#include <QDir>
23−
25+#include <QDBusArgument>
24−LauncherBackend::LauncherBackend(QObject *parent):
26+#include <QFileInfo>
25− QObject(parent)
27+#include <QGSettings>
26−{
28+#include <QDebug>
27−
28− // TODO: load default pinned ones from default config, instead of hardcoding here...
29−
30− m_storedApps <<
31− QLatin1String("phone-app.desktop") <<
32− QLatin1String("camera-app.desktop") <<
33− QLatin1String("gallery-app.desktop") <<
34− QLatin1String("facebook-webapp.desktop") <<
35− QLatin1String("webbrowser-app.desktop") <<
36− QLatin1String("twitter-webapp.desktop") <<
37− QLatin1String("gmail-webapp.desktop") <<
38− QLatin1String("ubuntu-weather-app.desktop") <<
39− QLatin1String("notes-app.desktop") <<
40− QLatin1String("calendar-app.desktop");
41−
42− // TODO: get stuff from desktop files instead this hardcoded map
43− m_displayNameMap.insert("phone-app.desktop", "Phone");
44− m_displayNameMap.insert("camera-app.desktop", "Camera");
45− m_displayNameMap.insert("gallery-app.desktop", "Gallery");
46− m_displayNameMap.insert("facebook-webapp.desktop", "Facebook");
47− m_displayNameMap.insert("webbrowser-app.desktop", "Browser");
48− m_displayNameMap.insert("twitter-webapp.desktop", "Twitter");
49− m_displayNameMap.insert("gmail-webapp.desktop", "GMail");
50− m_displayNameMap.insert("ubuntu-weather-app.desktop", "Weather");
51− m_displayNameMap.insert("notes-app.desktop", "Notes");
52− m_displayNameMap.insert("calendar-app.desktop", "Calendar");
53−
54− // TODO: get stuff from desktop files instead this hardcoded map
55− m_iconMap.insert("phone-app.desktop", "phone-app");
56− m_iconMap.insert("camera-app.desktop", "camera");
57− m_iconMap.insert("gallery-app.desktop", "gallery");
58− m_iconMap.insert("facebook-webapp.desktop", "facebook");
59− m_iconMap.insert("webbrowser-app.desktop", "browser");
60− m_iconMap.insert("twitter-webapp.desktop", "twitter");
61− m_iconMap.insert("gmail-webapp.desktop", "gmail");
62− m_iconMap.insert("ubuntu-weather-app.desktop", "weather");
63− m_iconMap.insert("notes-app.desktop", "notepad");
64− m_iconMap.insert("calendar-app.desktop", "calendar");
65
29
30+class LauncherBackendItem
31+{
32+public:
33+ LauncherBackendItem(): pinned(false) {}
34+
35+ QString desktopFile;
36+ QString displayName;
37+ QString icon;
38+ bool pinned;
39+};
40+
41+LauncherBackend::LauncherBackend(bool useStorage, QObject *parent):
42+ QObject(parent),
43+ m_accounts(nullptr)
44+{
45+ if (useStorage) {
46+ m_accounts = new AccountsService(this);
47+ }
48+ m_user = qgetenv("USER");
49+ syncFromAccounts();
66}
50}
67
51
68LauncherBackend::~LauncherBackend()
52LauncherBackend::~LauncherBackend()
69{
53{
54+ m_storedApps.clear();
70
55
56+ Q_FOREACH(LauncherBackendItem *item, m_itemCache) {
57+ delete item;
58+ }
59+ m_itemCache.clear();
71}
60}
72
61
73QStringList LauncherBackend::storedApplications() const
62QStringList LauncherBackend::storedApplications() const
@@ -77,38 +66,103 @@ QStringList LauncherBackend::storedApplications() const
77
66
78void LauncherBackend::setStoredApplications(const QStringList &appIds)
67void LauncherBackend::setStoredApplications(const QStringList &appIds)
79{
68{
69+ if (appIds.count() < m_storedApps.count()) {
70+ Q_FOREACH(const QString &appId, m_storedApps) {
71+ if (!appIds.contains(appId)) {
72+ delete m_itemCache.take(appId);
73+ }
74+ }
75+ }
80 m_storedApps = appIds;
76 m_storedApps = appIds;
81− // TODO: Cleanup pinned state from settings for apps not in list any more.
77+ Q_FOREACH(const QString &appId, appIds) {
78+ if (!m_itemCache.contains(appId)) {
79+ QString df = findDesktopFile(appId);
80+ if (!df.isEmpty()) {
81+ LauncherBackendItem *item = parseDesktopFile(df);
82+ m_itemCache.insert(appId, item);
83+ } else {
84+ // Cannot find any data for that app... ignoring it.
85+ qWarning() << "cannot find desktop file for" << appId << ". discarding app.";
86+ m_storedApps.removeAll(appId);
87+ }
88+ }
89+ }
90+ syncToAccounts();
82}
91}
83
92
84QString LauncherBackend::desktopFile(const QString &appId) const
93QString LauncherBackend::desktopFile(const QString &appId) const
85{
94{
86− // TODO: return real path instead of this hardcoded one
95+ LauncherBackendItem *item = m_itemCache.value(appId);
87− return QLatin1String("/usr/share/applications/") + appId;
96+ if (item) {
97+ return item->desktopFile;
98+ }
99+
100+ return findDesktopFile(appId);
88}
101}
89
102
90QString LauncherBackend::displayName(const QString &appId) const
103QString LauncherBackend::displayName(const QString &appId) const
91{
104{
92− return m_displayNameMap.value(appId);
105+ LauncherBackendItem *item = m_itemCache.value(appId);
106+ if (item) {
107+ return item->displayName;
108+ }
109+
110+ QString df = findDesktopFile(appId);
111+ if (!df.isEmpty()) {
112+ LauncherBackendItem *item = parseDesktopFile(df);
113+ m_itemCache.insert(appId, item);
114+ return item->displayName;
115+ }
116+
117+ return QString();
93}
118}
94
119
95QString LauncherBackend::icon(const QString &appId) const
120QString LauncherBackend::icon(const QString &appId) const
96{
121{
97− return m_iconMap.value(appId);
122+ QString iconName;
123+ LauncherBackendItem *item = m_itemCache.value(appId);
124+ if (item) {
125+ iconName = item->icon;
126+ } else {
127+ QString df = findDesktopFile(appId);
128+ if (!df.isEmpty()) {
129+ LauncherBackendItem *item = parseDesktopFile(df);
130+ m_itemCache.insert(appId, item);
131+ iconName = item->icon;
132+ }
133+ }
134+
135+ QFileInfo info(iconName);
136+ if (info.exists()) {
137+ return info.absoluteFilePath();
138+ }
139+ return "image://theme/" + iconName;
98}
140}
99
141
100bool LauncherBackend::isPinned(const QString &appId) const
142bool LauncherBackend::isPinned(const QString &appId) const
101{
143{
144+ LauncherBackendItem *item = m_itemCache.value(appId);
145+ if (item) {
102− // TODO: return app's pinned state from settings
146+ return item->pinned;
103− Q_UNUSED(appId)
147+ }
104 return false;
148 return false;
105}
149}
106
150
107void LauncherBackend::setPinned(const QString &appId, bool pinned)
151void LauncherBackend::setPinned(const QString &appId, bool pinned)
108{
152{
109− // TODO: Store pinned state in settings.
153+ if (!m_storedApps.contains(appId)) {
110− Q_UNUSED(appId)
154+ return;
111− Q_UNUSED(pinned)
155+ }
156+
157+ LauncherBackendItem *item = m_itemCache.value(appId);
158+ if (!item) {
159+ item = new LauncherBackendItem();
160+ m_itemCache.insert(appId, item);
161+ }
162+ if (item->pinned != pinned) {
163+ item->pinned = pinned;
164+ syncToAccounts();
165+ }
112}
166}
113
167
114QList<QuickListEntry> LauncherBackend::quickList(const QString &appId) const
168QList<QuickListEntry> LauncherBackend::quickList(const QString &appId) const
@@ -137,9 +191,159 @@ int LauncherBackend::count(const QString &appId) const
137 return 0;
191 return 0;
138}
192}
139
193
194+void LauncherBackend::setUser(const QString &username)
195+{
196+ if (qgetenv("USER") == "lightdm" && m_user != username) {
197+ m_user = username;
198+ syncFromAccounts();
199+ }
200+}
201+
140void LauncherBackend::triggerQuickListAction(const QString &appId, const QString &quickListId)
202void LauncherBackend::triggerQuickListAction(const QString &appId, const QString &quickListId)
141{
203{
142 // TODO: execute the given quicklist action
204 // TODO: execute the given quicklist action
143 Q_UNUSED(appId)
205 Q_UNUSED(appId)
144 Q_UNUSED(quickListId)
206 Q_UNUSED(quickListId)
145}
207}
208+
209+void LauncherBackend::syncFromAccounts()
210+{
211+ QList<QVariantMap> apps;
212+ bool defaults = true;
213+
214+ m_storedApps.clear();
215+
216+ if (m_accounts && !m_user.isEmpty()) {
217+ QVariant variant = m_accounts->getUserProperty(m_user, "launcher-items");
218+ apps = qdbus_cast<QList<QVariantMap>>(variant.value<QDBusArgument>());
219+ defaults = isDefaultsItem(apps);
220+ }
221+
222+ if (m_accounts && defaults) { // Checking accounts as it'll be null when !useStorage
223+ QGSettings gSettings("com.canonical.Unity.Launcher", "/com/canonical/unity/launcher/");
224+ Q_FOREACH(const QString &entry, gSettings.get("favorites").toStringList()) {
225+ if (entry.startsWith("application://")) {
226+ QString appId = entry;
227+ // Transform "application://foobar.desktop" to "foobar"
228+ appId.remove("application://");
229+ if (appId.endsWith(".desktop")) {
230+ appId.chop(8);
231+ }
232+ QString df = findDesktopFile(appId);
233+
234+ if (!df.isEmpty()) {
235+ m_storedApps << appId;
236+
237+ if (!m_itemCache.contains(appId)) {
238+ m_itemCache.insert(appId, parseDesktopFile(df));
239+ }
240+ m_itemCache.value(appId)->pinned = true;
241+ }
242+ }
243+ }
244+ } else {
245+ for (const QVariant &app: apps) {
246+ loadFromVariant(app.toMap());
247+ }
248+ }
249+}
250+
251+void LauncherBackend::syncToAccounts()
252+{
253+ if (m_accounts && !m_user.isEmpty()) {
254+ QList<QVariantMap> items;
255+
256+ Q_FOREACH(const QString &appId, m_storedApps) {
257+ items << itemToVariant(appId);
258+ }
259+
260+ m_accounts->setUserProperty(m_user, "launcher-items", QVariant::fromValue(items));
261+ }
262+}
263+
264+QString LauncherBackend::findDesktopFile(const QString &appId) const
265+{
266+ int dashPos = -1;
267+ QString helper = appId;
268+
269+ QStringList searchDirs;
270+ searchDirs << QDir::homePath() + "/.local/share/applications";
271+ searchDirs << "/usr/share/applications";
272+
273+#ifdef LAUNCHER_TESTING
274+ searchDirs << "";
275+#endif
276+
277+ do {
278+ if (dashPos != -1) {
279+ helper = helper.replace(dashPos, 1, '/');
280+ }
281+
282+ Q_FOREACH(const QString &searchDir, searchDirs) {
283+ QFileInfo fileInfo(QDir(searchDir), helper + ".desktop");
284+ if (fileInfo.exists()) {
285+ return fileInfo.absoluteFilePath();
286+ }
287+ }
288+
289+ dashPos = helper.indexOf("-");
290+ } while (dashPos != -1);
291+
292+ return QString();
293+}
294+
295+LauncherBackendItem* LauncherBackend::parseDesktopFile(const QString &desktopFile) const
296+{
297+ QSettings settings(desktopFile, QSettings::IniFormat);
298+
299+
300+ LauncherBackendItem* item = new LauncherBackendItem();
301+ item->desktopFile = desktopFile;
302+ item->displayName = settings.value("Desktop Entry/Name").toString();
303+ item->icon = settings.value("Desktop Entry/Icon").toString();
304+ item->pinned = false;
305+ return item;
306+}
307+
308+void LauncherBackend::loadFromVariant(const QVariantMap &details)
309+{
310+ if (!details.contains("id")) {
311+ return;
312+ }
313+ QString appId = details.value("id").toString();
314+
315+ LauncherBackendItem *item = m_itemCache.value(appId);
316+ if (item) {
317+ delete item;
318+ }
319+
320+ item = new LauncherBackendItem();
321+
322+ item->desktopFile = details.value("desktopFile").toString();
323+ item->displayName = details.value("name").toString();
324+ item->icon = details.value("icon").toString();
325+ item->pinned = details.value("is-pinned").toBool();
326+
327+ m_itemCache.insert(appId, item);
328+ m_storedApps.append(appId);
329+}
330+
331+QVariantMap LauncherBackend::itemToVariant(const QString &appId) const
332+{
333+ LauncherBackendItem *item = m_itemCache.value(appId);
334+ QVariantMap details;
335+ details.insert("id", appId);
336+ details.insert("name", item->displayName);
337+ details.insert("icon", item->icon);
338+ details.insert("desktopFile", item->desktopFile);
339+ details.insert("is-pinned", item->pinned);
340+ return details;
341+}
342+
343+bool LauncherBackend::isDefaultsItem(const QList<QVariantMap> &apps) const
344+{
345+ // To differentiate between an empty list and a list that hasn't been set
346+ // yet (and should thus be populated with the defaults), we use a special
347+ // list of one item with the 'defaults' field set to true.
348+ return (apps.size() == 1 && apps[0].value("defaults").toBool());
349+}
plugins/Unity/Launcher/backend/launcherbackend.h+36−5
@@ -22,20 +22,24 @@
22#include "common/quicklistentry.h"
22#include "common/quicklistentry.h"
23
23
24#include <QObject>
24#include <QObject>
25+#include <QSettings>
25#include <QStringList>
26#include <QStringList>
26−#include <QHash>
27+
28+class AccountsService;
27
29
28/**
30/**
29 * @brief An interface that provides all the data needed by the launcher.
31 * @brief An interface that provides all the data needed by the launcher.
30 */
32 */
31
33
34+class LauncherBackendItem;
35+
32class LauncherBackend : public QObject
36class LauncherBackend : public QObject
33{
37{
34 Q_OBJECT
38 Q_OBJECT
35
39
36
40
37public:
41public:
38− LauncherBackend(QObject *parent = 0);
42+ LauncherBackend(bool useStorage = true, QObject *parent = 0);
39 virtual ~LauncherBackend();
43 virtual ~LauncherBackend();
40
44
41 /**
45 /**
@@ -57,12 +61,18 @@ public:
57
61
58 /**
62 /**
59 * @brief Get the full path to the .desktop file.
63 * @brief Get the full path to the .desktop file.
64+ *
65+ * The application does not need to be in the list of stored applications.
66+ *
60 * @returns The full path to the .dekstop file.
67 * @returns The full path to the .dekstop file.
61 */
68 */
62 QString desktopFile(const QString &appId) const;
69 QString desktopFile(const QString &appId) const;
63
70
64 /**
71 /**
65 * @brief Get the user friendly name of an application.
72 * @brief Get the user friendly name of an application.
73+ *
74+ * The application does not need to be in the list of stored applications.
75+ *
66 * @param appId The ID of the application.
76 * @param appId The ID of the application.
67 * @returns The user friendly name of the application.
77 * @returns The user friendly name of the application.
68 */
78 */
@@ -70,6 +80,9 @@ public:
70
80
71 /**
81 /**
72 * @brief Get the icon of an application.
82 * @brief Get the icon of an application.
83+ *
84+ * The application does not need to be in the list of stored applications.
85+ *
73 * @param appId The ID of the application.
86 * @param appId The ID of the application.
74 * @returns The full path to the icon for the application.
87 * @returns The full path to the icon for the application.
75 */
88 */
@@ -118,15 +131,33 @@ public:
118 */
131 */
119 int count(const QString &appId) const;
132 int count(const QString &appId) const;
120
133
134+ /**
135+ * @brief Sets the username for which to look up launcher items.
136+ * @param username The username to use.
137+ */
138+ void setUser(const QString &username);
139+
121Q_SIGNALS:
140Q_SIGNALS:
122 void quickListChanged(const QString &appId, const QList<QuickListEntry> &quickList);
141 void quickListChanged(const QString &appId, const QList<QuickListEntry> &quickList);
123 void progressChanged(const QString &appId, int progress);
142 void progressChanged(const QString &appId, int progress);
124 void countChanged(const QString &appId, int count);
143 void countChanged(const QString &appId, int count);
125
144
126private:
145private:
146+ QString findDesktopFile(const QString &appId) const;
147+ LauncherBackendItem* parseDesktopFile(const QString &desktopFile) const;
148+
149+ QVariantMap itemToVariant(const QString &appId) const;
150+ void loadFromVariant(const QVariantMap &details);
151+
152+ bool isDefaultsItem(const QList<QVariantMap> &apps) const;
153+ void syncFromAccounts();
154+ void syncToAccounts();
155+
127− QStringList m_storedApps;
156+ QList<QString> m_storedApps;
128− QHash<QString, QString> m_displayNameMap;
157+ mutable QHash<QString, LauncherBackendItem*> m_itemCache;
129− QHash<QString, QString> m_iconMap;
158+
159+ AccountsService *m_accounts;
160+ QString m_user;
130};
161};
131
162
132#endif // LAUNCHERBACKEND_H
163#endif // LAUNCHERBACKEND_H
plugins/Unity/Launcher/launcheritem.cpp+14
@@ -31,6 +31,7 @@ LauncherItem::LauncherItem(const QString &appId, const QString &desktopFile, con
31 m_recent(false),
31 m_recent(false),
32 m_progress(-1),
32 m_progress(-1),
33 m_count(0),
33 m_count(0),
34+ m_focused(false),
34 m_quickList(new QuickListModel(this))
35 m_quickList(new QuickListModel(this))
35{
36{
36 QuickListEntry nameAction;
37 QuickListEntry nameAction;
@@ -131,6 +132,19 @@ void LauncherItem::setCount(int count)
131 }
132 }
132}
133}
133
134
135+bool LauncherItem::focused() const
136+{
137+ return m_focused;
138+}
139+
140+void LauncherItem::setFocused(bool focused)
141+{
142+ if (m_focused != focused) {
143+ m_focused = focused;
144+ Q_EMIT focusedChanged(focused);
145+ }
146+}
147+
134unity::shell::launcher::QuickListModelInterface *LauncherItem::quickList() const
148unity::shell::launcher::QuickListModelInterface *LauncherItem::quickList() const
135{
149{
136 return m_quickList;
150 return m_quickList;
plugins/Unity/Launcher/launcheritem.h+4
@@ -54,6 +54,9 @@ public:
54 int count() const;
54 int count() const;
55 void setCount(int count);
55 void setCount(int count);
56
56
57+ bool focused() const;
58+ void setFocused(bool focused);
59+
57 unity::shell::launcher::QuickListModelInterface *quickList() const;
60 unity::shell::launcher::QuickListModelInterface *quickList() const;
58
61
59Q_SIGNALS:
62Q_SIGNALS:
@@ -70,6 +73,7 @@ private:
70 bool m_recent;
73 bool m_recent;
71 int m_progress;
74 int m_progress;
72 int m_count;
75 int m_count;
76+ bool m_focused;
73 QuickListModel *m_quickList;
77 QuickListModel *m_quickList;
74};
78};
75
79
plugins/Unity/Launcher/launchermodel.cpp+63−3
@@ -23,7 +23,7 @@
23
23
24LauncherModel::LauncherModel(QObject *parent):
24LauncherModel::LauncherModel(QObject *parent):
25 LauncherModelInterface(parent),
25 LauncherModelInterface(parent),
26− m_backend(new LauncherBackend(this))
26+ m_backend(new LauncherBackend(true, this))
27{
27{
28 connect(m_backend, SIGNAL(countChanged(QString,int)), SLOT(countChanged(QString,int)));
28 connect(m_backend, SIGNAL(countChanged(QString,int)), SLOT(countChanged(QString,int)));
29 connect(m_backend, SIGNAL(progressChanged(QString,int)), SLOT(progressChanged(QString,int)));
29 connect(m_backend, SIGNAL(progressChanged(QString,int)), SLOT(progressChanged(QString,int)));
@@ -74,6 +74,8 @@ QVariant LauncherModel::data(const QModelIndex &index, int role) const
74 return item->count();
74 return item->count();
75 case RoleProgress:
75 case RoleProgress:
76 return item->progress();
76 return item->progress();
77+ case RoleFocused:
78+ return item->focused();
77 }
79 }
78
80
79 return QVariant();
81 return QVariant();
@@ -123,6 +125,7 @@ void LauncherModel::pin(const QString &appId, int index)
123 if (currentIndex >= 0) {
125 if (currentIndex >= 0) {
124 if (index == -1 || index == currentIndex) {
126 if (index == -1 || index == currentIndex) {
125 m_list.at(currentIndex)->setPinned(true);
127 m_list.at(currentIndex)->setPinned(true);
128+ m_backend->setPinned(appId, true);
126 QModelIndex modelIndex = this->index(currentIndex);
129 QModelIndex modelIndex = this->index(currentIndex);
127 Q_EMIT dataChanged(modelIndex, modelIndex);
130 Q_EMIT dataChanged(modelIndex, modelIndex);
128 } else {
131 } else {
@@ -138,6 +141,7 @@ void LauncherModel::pin(const QString &appId, int index)
138 m_backend->displayName(appId),
141 m_backend->displayName(appId),
139 m_backend->icon(appId));
142 m_backend->icon(appId));
140 item->setPinned(true);
143 item->setPinned(true);
144+ m_backend->setPinned(appId, true);
141 m_list.insert(index, item);
145 m_list.insert(index, item);
142 endInsertRows();
146 endInsertRows();
143 }
147 }
@@ -186,8 +190,64 @@ void LauncherModel::quickListActionInvoked(const QString &appId, int actionIndex
186
190
187void LauncherModel::setUser(const QString &username)
191void LauncherModel::setUser(const QString &username)
188{
192{
189− Q_UNUSED(username)
193+ m_backend->setUser(username);
190− // TODO: Implement this...
194+}
195+
196+void LauncherModel::applicationFocused(const QString &appId)
197+{
198+ // Unfocus all apps
199+ for(int i = 0; i < m_list.count(); ++i) {
200+ LauncherItem *item = m_list.at(i);
201+ if (item->focused()) {
202+ item->setFocused(false);
203+ Q_EMIT dataChanged(this->index(i), this->index(i), QVector<int>() << RoleFocused);
204+ }
205+ }
206+
207+ if (appId.isEmpty()) {
208+ return;
209+ }
210+
211+ // FIXME: drop this once we get real appIds from the AppManager
212+ QString helper = appId.split('/').last();
213+ if (helper.endsWith(".desktop")) {
214+ helper.chop(8);
215+ }
216+
217+ int index = findApplication(helper);
218+ if (index >= 0) {
219+ m_list.at(index)->setFocused(true);
220+ Q_EMIT dataChanged(this->index(index), this->index(index), QVector<int>() << RoleFocused);
221+ } else {
222+ // Add app to recent apps
223+ QString desktopFile = m_backend->desktopFile(helper);
224+ QString appName = m_backend->displayName(helper);
225+ QString icon = m_backend->icon(helper);
226+
227+ LauncherItem *item = new LauncherItem(helper, desktopFile, appName, icon);
228+ item->setRecent(true);
229+ item->setFocused(true);
230+ beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
231+ m_list.append(item);
232+ endInsertRows();
233+
234+ // Clean up old recent apps
235+ QList<int> recentAppIndices;
236+ for (int i = 0; i < m_list.count(); ++i) {
237+ if (m_list.at(i)->recent()) {
238+ recentAppIndices << i;
239+ }
240+ }
241+ int run = 0;
242+ while (recentAppIndices.count() > 5) {
243+ beginRemoveRows(QModelIndex(), recentAppIndices.first() - run, recentAppIndices.first() - run);
244+ m_list.takeAt(recentAppIndices.first() - run)->deleteLater();
245+ endRemoveRows();
246+ recentAppIndices.takeFirst();
247+ ++run;
248+ }
249+ storeAppList();
250+ }
191}
251}
192
252
193void LauncherModel::storeAppList()
253void LauncherModel::storeAppList()
plugins/Unity/Launcher/launchermodel.h+2−1
@@ -17,7 +17,7 @@
17 * Michael Zanetti <michael.zanetti@canonical.com>
17 * Michael Zanetti <michael.zanetti@canonical.com>
18 */
18 */
19
19
20−#ifndef LAUNCHERMODELH
20+#ifndef LAUNCHERMODEL_H
21#define LAUNCHERMODEL_H
21#define LAUNCHERMODEL_H
22
22
23// unity-api
23// unity-api
@@ -49,6 +49,7 @@ public:
49 Q_INVOKABLE void requestRemove(const QString &appId);
49 Q_INVOKABLE void requestRemove(const QString &appId);
50 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
50 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
51 Q_INVOKABLE void setUser(const QString &username);
51 Q_INVOKABLE void setUser(const QString &username);
52+ Q_INVOKABLE void applicationFocused(const QString &appId);
52
53
53private:
54private:
54 void storeAppList();
55 void storeAppList();
plugins/Unity/categories.cpp−3
@@ -43,7 +43,6 @@ Categories::Categories(QObject* parent)
43 m_roles[Categories::RoleHints] = "hints";
43 m_roles[Categories::RoleHints] = "hints";
44 m_roles[Categories::RoleResults] = "results";
44 m_roles[Categories::RoleResults] = "results";
45 m_roles[Categories::RoleCount] = "count";
45 m_roles[Categories::RoleCount] = "count";
46− m_roles[Categories::RoleCategoryIndex] = "categoryIndex";
47
46
48 // TODO This should not be needed but accumulatting the count changes
47 // TODO This should not be needed but accumulatting the count changes
49 // makes the visualization more stable and also makes crashes on fast
48 // makes the visualization more stable and also makes crashes on fast
@@ -222,8 +221,6 @@ Categories::data(const QModelIndex& index, int role) const
222 return QVariant::fromValue(m_overriddenCategories[id]->rowCount());
221 return QVariant::fromValue(m_overriddenCategories[id]->rowCount());
223 }
222 }
224 return QVariant::fromValue(getResults(index.row())->rowCount());
223 return QVariant::fromValue(getResults(index.row())->rowCount());
225− case RoleCategoryIndex:
226− return QVariant::fromValue(index.row());
227 default:
224 default:
228 return QVariant();
225 return QVariant();
229 }
226 }
plugins/Unity/categories.h+1−2
@@ -50,8 +50,7 @@ public:
50 RoleProgressSource,
50 RoleProgressSource,
51 RoleHints,
51 RoleHints,
52 RoleResults,
52 RoleResults,
53− RoleCount,
53+ RoleCount
54− RoleCategoryIndex
55 };
54 };
56
55
57 Q_INVOKABLE void overrideResults(const QString& categoryId, QAbstractItemModel* model);
56 Q_INVOKABLE void overrideResults(const QString& categoryId, QAbstractItemModel* model);
plugins/Unity/checkoptionfilter.cpp+3−1
@@ -52,9 +52,11 @@ void CheckOptionFilter::onOptionsChanged(unity::dash::CheckOptionFilter::CheckOp
52
52
53 m_options = new UnityOptionsModel(this, options,
53 m_options = new UnityOptionsModel(this, options,
54 m_unityCheckOptionFilter->option_added,
54 m_unityCheckOptionFilter->option_added,
55− m_unityCheckOptionFilter->option_removed);
55+ m_unityCheckOptionFilter->option_removed,
56+ m_unityCheckOptionFilter->show_all_button);
56
57
57 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), m_options, SLOT(ensureTheOnlyActive(AbstractFilterOption *)));
58 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), m_options, SLOT(ensureTheOnlyActive(AbstractFilterOption *)));
59+ connect(m_options, SIGNAL(showAllActivated()), this, SLOT(clear()));
58
60
59 /* Property change signals */
61 /* Property change signals */
60 m_signals << m_unityCheckOptionFilter->options.changed.connect(sigc::mem_fun(this, &CheckOptionFilter::onOptionsChanged));
62 m_signals << m_unityCheckOptionFilter->options.changed.connect(sigc::mem_fun(this, &CheckOptionFilter::onOptionsChanged));
plugins/Unity/filter.h+3−2
@@ -56,11 +56,12 @@ public:
56 bool filtering() const;
56 bool filtering() const;
57 virtual GenericOptionsModel* options() const = 0;
57 virtual GenericOptionsModel* options() const = 0;
58
58
59− Q_INVOKABLE void clear();
60−
61 static Filter* newFromUnityFilter(unity::dash::Filter::Ptr unityFilter);
59 static Filter* newFromUnityFilter(unity::dash::Filter::Ptr unityFilter);
62 bool hasUnityFilter(unity::dash::Filter::Ptr unityFilter) const;
60 bool hasUnityFilter(unity::dash::Filter::Ptr unityFilter) const;
63
61
62+public Q_SLOTS:
63+ void clear();
64+
64Q_SIGNALS:
65Q_SIGNALS:
65 void optionsChanged();
66 void optionsChanged();
66
67
plugins/Unity/genericoptionsmodel.cpp+20−3
@@ -22,10 +22,18 @@
22
22
23// local
23// local
24#include "abstractfilteroption.h"
24#include "abstractfilteroption.h"
25+#include "showallfilteroption.h"
25
26
26−GenericOptionsModel::GenericOptionsModel(QObject *parent)
27+GenericOptionsModel::GenericOptionsModel(bool showAllOption, QObject *parent)
27 : QAbstractListModel(parent)
28 : QAbstractListModel(parent)
28{
29{
30+ if (showAllOption)
31+ {
32+ auto showAll = new ShowAllFilterOption(this);
33+ connect(showAll, SIGNAL(activeChanged(bool)), this, SLOT(onOptionChanged()));
34+ connect(showAll, SIGNAL(activeChanged(bool)), this, SLOT(onShowAllClicked(bool)));
35+ addOption(showAll);
36+ }
29}
37}
30
38
31GenericOptionsModel::~GenericOptionsModel()
39GenericOptionsModel::~GenericOptionsModel()
@@ -73,7 +81,7 @@ QVariant GenericOptionsModel::data(const QModelIndex& index, int role) const
73
81
74int GenericOptionsModel::rowCount(const QModelIndex& /* parent */) const
82int GenericOptionsModel::rowCount(const QModelIndex& /* parent */) const
75{
83{
76− return m_options.size ();
84+ return m_options.size();
77}
85}
78
86
79void GenericOptionsModel::setActive(int idx, bool value)
87void GenericOptionsModel::setActive(int idx, bool value)
@@ -117,7 +125,10 @@ void GenericOptionsModel::ensureTheOnlyActive(AbstractFilterOption *activeOption
117
125
118void GenericOptionsModel::addOption(AbstractFilterOption *option, int index)
126void GenericOptionsModel::addOption(AbstractFilterOption *option, int index)
119{
127{
128+ if (index >= 0)
120− m_options.insert(index, option);
129+ m_options.insert(index, option);
130+ else
131+ m_options.append(option);
121
132
122 connect(option, SIGNAL(idChanged(const QString &)), this, SLOT(onOptionChanged()));
133 connect(option, SIGNAL(idChanged(const QString &)), this, SLOT(onOptionChanged()));
123 connect(option, SIGNAL(nameChanged(const QString &)), this, SLOT(onOptionChanged()));
134 connect(option, SIGNAL(nameChanged(const QString &)), this, SLOT(onOptionChanged()));
@@ -168,3 +179,9 @@ void GenericOptionsModel::onActiveChanged()
168 Q_EMIT activeChanged(option);
179 Q_EMIT activeChanged(option);
169 }
180 }
170}
181}
182+
183+void GenericOptionsModel::onShowAllClicked(bool active)
184+{
185+ if (active)
186+ Q_EMIT showAllActivated();
187+}
plugins/Unity/genericoptionsmodel.h+4−2
@@ -35,7 +35,7 @@ class Q_DECL_EXPORT GenericOptionsModel : public QAbstractListModel
35 Q_ENUMS(Roles)
35 Q_ENUMS(Roles)
36
36
37public:
37public:
38− GenericOptionsModel(QObject *parent = nullptr);
38+ GenericOptionsModel(bool showAllOption = false, QObject *parent = nullptr);
39 ~GenericOptionsModel();
39 ~GenericOptionsModel();
40
40
41 enum Roles {
41 enum Roles {
@@ -59,13 +59,15 @@ public Q_SLOTS:
59
59
60Q_SIGNALS:
60Q_SIGNALS:
61 void activeChanged(AbstractFilterOption *option);
61 void activeChanged(AbstractFilterOption *option);
62+ void showAllActivated();
62
63
63protected Q_SLOTS:
64protected Q_SLOTS:
64 void onOptionChanged();
65 void onOptionChanged();
65 void onActiveChanged();
66 void onActiveChanged();
67+ void onShowAllClicked(bool active);
66
68
67protected:
69protected:
68− void addOption(AbstractFilterOption *option, int index);
70+ void addOption(AbstractFilterOption *option, int index = -1);
69 void removeOption(int index);
71 void removeOption(int index);
70 int indexOf(const QString &option_id);
72 int indexOf(const QString &option_id);
71
73
plugins/Unity/multirangefilter.cpp+3−1
@@ -52,9 +52,11 @@ void MultiRangeFilter::onOptionsChanged(unity::dash::MultiRangeFilter::Options o
52
52
53 m_options = new UnityOptionsModel(this, options,
53 m_options = new UnityOptionsModel(this, options,
54 m_unityMultiRangeFilter->option_added,
54 m_unityMultiRangeFilter->option_added,
55− m_unityMultiRangeFilter->option_removed);
55+ m_unityMultiRangeFilter->option_removed,
56+ m_unityMultiRangeFilter->show_all_button);
56
57
57 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), m_options, SLOT(ensureTheOnlyActive(AbstractFilterOption *)));
58 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), m_options, SLOT(ensureTheOnlyActive(AbstractFilterOption *)));
59+ connect(m_options, SIGNAL(showAllActivated()), this, SLOT(clear()));
58
60
59 /* Property change signals */
61 /* Property change signals */
60 m_signals << m_unityMultiRangeFilter->options.changed.connect(sigc::mem_fun(this, &MultiRangeFilter::onOptionsChanged));
62 m_signals << m_unityMultiRangeFilter->options.changed.connect(sigc::mem_fun(this, &MultiRangeFilter::onOptionsChanged));
plugins/Unity/radiooptionfilter.cpp+3−1
@@ -51,7 +51,9 @@ void RadioOptionFilter::onOptionsChanged(unity::dash::RadioOptionFilter::RadioOp
51 }
51 }
52 m_options = new UnityOptionsModel(this, m_unityRadioOptionFilter->options,
52 m_options = new UnityOptionsModel(this, m_unityRadioOptionFilter->options,
53 m_unityRadioOptionFilter->option_added,
53 m_unityRadioOptionFilter->option_added,
54− m_unityRadioOptionFilter->option_removed);
54+ m_unityRadioOptionFilter->option_removed,
55+ m_unityRadioOptionFilter->show_all_button);
56+ connect(m_options, SIGNAL(showAllActivated()), this, SLOT(clear()));
55
57
56 m_signals << m_unityRadioOptionFilter->options.changed.connect(sigc::mem_fun(this, &RadioOptionFilter::onOptionsChanged));
58 m_signals << m_unityRadioOptionFilter->options.changed.connect(sigc::mem_fun(this, &RadioOptionFilter::onOptionsChanged));
57
59
plugins/Unity/ratingoptionsmodel.cpp+3−3
@@ -23,11 +23,11 @@
23// local
23// local
24#include "ratingfilteroption.h"
24#include "ratingfilteroption.h"
25
25
26−RatingOptionsModel::RatingOptionsModel(QObject *parent) :
26+RatingOptionsModel::RatingOptionsModel(bool showAllOption, QObject *parent) :
27− GenericOptionsModel(parent)
27+ GenericOptionsModel(showAllOption, parent)
28{
28{
29 for (int i=1; i<=5; i++) {
29 for (int i=1; i<=5; i++) {
30 auto opt = new RatingFilterOption(QString::number(i), i*0.2f, this);
30 auto opt = new RatingFilterOption(QString::number(i), i*0.2f, this);
31− addOption(opt, i-1);
31+ addOption(opt);
32 }
32 }
33}
33}
plugins/Unity/ratingoptionsmodel.h+1−1
@@ -27,7 +27,7 @@ class RatingOptionsModel : public GenericOptionsModel
27 Q_OBJECT
27 Q_OBJECT
28
28
29public:
29public:
30− RatingOptionsModel(QObject *parent);
30+ RatingOptionsModel(bool showAllOption, QObject *parent);
31};
31};
32
32
33#endif // RATINGOPTIONSMODEL_H
33#endif // RATINGOPTIONSMODEL_H
plugins/Unity/ratingsfilter.cpp+2−1
@@ -53,9 +53,10 @@ void RatingsFilter::setUnityFilter(unity::dash::Filter::Ptr filter)
53
53
54 delete m_options;
54 delete m_options;
55
55
56− m_options = new RatingOptionsModel(this);
56+ m_options = new RatingOptionsModel(m_unityRatingsFilter->show_all_button, this);
57 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), m_options, SLOT(ensureTheOnlyActive(AbstractFilterOption *)));
57 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), m_options, SLOT(ensureTheOnlyActive(AbstractFilterOption *)));
58 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), this, SLOT(onActiveChanged(AbstractFilterOption *)));
58 connect(m_options, SIGNAL(activeChanged(AbstractFilterOption *)), this, SLOT(onActiveChanged(AbstractFilterOption *)));
59+ connect(m_options, SIGNAL(showAllActivated()), this, SLOT(clear()));
59
60
60 Q_EMIT optionsChanged();
61 Q_EMIT optionsChanged();
61}
62}
plugins/Unity/showallfilteroption.cppnew file+60
@@ -0,0 +1,60 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * Authors:
5+ * Pawel Stolowski <pawel.stolowski@canonical.com>
6+ *
7+ * This program is free software; you can redistribute it and/or modify
8+ * it under the terms of the GNU General Public License as published by
9+ * the Free Software Foundation; version 3.
10+ *
11+ * This program is distributed in the hope that it will be useful,
12+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+ * GNU General Public License for more details.
15+ *
16+ * You should have received a copy of the GNU General Public License
17+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
18+ */
19+
20+// self
21+#include "showallfilteroption.h"
22+
23+#include <libintl.h>
24+
25+unsigned int ShowAllFilterOption::m_showAllCount = 0;
26+
27+ShowAllFilterOption::ShowAllFilterOption(QObject *parent) :
28+ AbstractFilterOption(parent),
29+ m_active(false)
30+{
31+ m_id = QString("show_all::%1").arg(m_showAllCount++);
32+}
33+
34+QString ShowAllFilterOption::id() const
35+{
36+ return m_id;
37+}
38+
39+QString ShowAllFilterOption::name() const
40+{
41+ return QString::fromUtf8(dgettext("unity", "All"));
42+}
43+
44+QString ShowAllFilterOption::iconHint() const
45+{
46+ return QString::Null();
47+}
48+
49+bool ShowAllFilterOption::active() const
50+{
51+ return m_active;
52+}
53+
54+void ShowAllFilterOption::setActive(bool active)
55+{
56+ if (active != m_active) {
57+ m_active = active;
58+ Q_EMIT activeChanged(m_active);
59+ }
60+}
plugins/Unity/showallfilteroption.hnew file+51
@@ -0,0 +1,51 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * Authors:
5+ * Pawel Stolowski <pawel.stolowski@canonical.com>
6+ *
7+ * This program is free software; you can redistribute it and/or modify
8+ * it under the terms of the GNU General Public License as published by
9+ * the Free Software Foundation; version 3.
10+ *
11+ * This program is distributed in the hope that it will be useful,
12+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+ * GNU General Public License for more details.
15+ *
16+ * You should have received a copy of the GNU General Public License
17+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
18+ */
19+
20+#ifndef SHOWALLFILTEROPTION_H
21+#define SHOWALLFILTEROPTION_H
22+
23+// local
24+#include "abstractfilteroption.h"
25+
26+class Q_DECL_EXPORT ShowAllFilterOption : public AbstractFilterOption
27+{
28+ Q_OBJECT
29+
30+public:
31+ explicit ShowAllFilterOption(QObject *parent = nullptr);
32+
33+ /* getters */
34+ QString id() const override;
35+ QString name() const override;
36+ QString iconHint() const override;
37+ bool active() const override;
38+
39+ /* setters */
40+ void setActive(bool active) override;
41+
42+private:
43+ bool m_active;
44+ QString m_id;
45+
46+ static unsigned int m_showAllCount;
47+};
48+
49+Q_DECLARE_METATYPE(ShowAllFilterOption*)
50+
51+#endif // SHOWALLFILTEROPTION_H
plugins/Unity/unityoptionsmodel.cpp+5−4
@@ -26,8 +26,9 @@
26UnityOptionsModel::UnityOptionsModel(QObject *parent,
26UnityOptionsModel::UnityOptionsModel(QObject *parent,
27 const std::vector<unity::dash::FilterOption::Ptr> options,
27 const std::vector<unity::dash::FilterOption::Ptr> options,
28 sigc::signal<void, unity::dash::FilterOption::Ptr> optionAdded,
28 sigc::signal<void, unity::dash::FilterOption::Ptr> optionAdded,
29− sigc::signal<void, unity::dash::FilterOption::Ptr> optionRemoved) :
29+ sigc::signal<void, unity::dash::FilterOption::Ptr> optionRemoved,
30+ bool showAllOption) :
30− GenericOptionsModel(parent)
31+ GenericOptionsModel(showAllOption, parent)
31{
32{
32 setOptions(options, optionAdded, optionRemoved);
33 setOptions(options, optionAdded, optionRemoved);
33}
34}
@@ -38,7 +39,7 @@ void UnityOptionsModel::setOptions(const std::vector<unity::dash::FilterOption::
38{
39{
39 for (unsigned int i=0; i<options.size(); i++)
40 for (unsigned int i=0; i<options.size(); i++)
40 {
41 {
41− addOption(new FilterOption(options[i], this), i);
42+ addOption(new FilterOption(options[i], this));
42 }
43 }
43 optionAdded.connect(sigc::mem_fun(this, &UnityOptionsModel::onOptionAdded));
44 optionAdded.connect(sigc::mem_fun(this, &UnityOptionsModel::onOptionAdded));
44 optionRemoved.connect(sigc::mem_fun(this, &UnityOptionsModel::onOptionRemoved));
45 optionRemoved.connect(sigc::mem_fun(this, &UnityOptionsModel::onOptionRemoved));
@@ -50,7 +51,7 @@ void UnityOptionsModel::onOptionAdded(unity::dash::FilterOption::Ptr option)
50 if (index >= 0)
51 if (index >= 0)
51 {
52 {
52 beginInsertRows(QModelIndex(), index, index);
53 beginInsertRows(QModelIndex(), index, index);
53− addOption(new FilterOption(option, this), index);
54+ addOption(new FilterOption(option, this));
54 endInsertRows();
55 endInsertRows();
55 }
56 }
56}
57}
plugins/Unity/unityoptionsmodel.h+2−1
@@ -35,7 +35,8 @@ public:
35 UnityOptionsModel(QObject *parent,
35 UnityOptionsModel(QObject *parent,
36 const std::vector<unity::dash::FilterOption::Ptr> options,
36 const std::vector<unity::dash::FilterOption::Ptr> options,
37 sigc::signal<void, unity::dash::FilterOption::Ptr> optionAdded,
37 sigc::signal<void, unity::dash::FilterOption::Ptr> optionAdded,
38− sigc::signal<void, unity::dash::FilterOption::Ptr> optionRemoved);
38+ sigc::signal<void, unity::dash::FilterOption::Ptr> optionRemoved,
39+ bool showAllOption);
39
40
40private:
41private:
41 void setOptions(const std::vector<unity::dash::FilterOption::Ptr> options,
42 void setOptions(const std::vector<unity::dash::FilterOption::Ptr> options,
po/ar.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-26 23:26+0000\n"
11"PO-Revision-Date: 2013-06-26 23:26+0000\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
12"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
13"Language-Team: Arabic <ar@li.org>\n"
13"Language-Team: Arabic <ar@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr "ويكيبيديا"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "يوتيوب"
88msgstr "يوتيوب"
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "عمليات البحث الأخيرة"
136msgstr "عمليات البحث الأخيرة"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr "البرامج المُشغّلة"
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr "مُستخدمة بكثرة"
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr "مُثبّتة"
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr "متوفرة للتنزيل"
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "تطبيقات"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr "تطبيقات مألوفة"
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr "آخر الصوتيات المشغلة"
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr "فيديوهات رائجة على الإنترنت"
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "الرئيسية"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr "المميز"
174msgstr "المميز"
@@ -201,7 +209,7 @@ msgstr "النجوم:"
201msgid "Author:"
209msgid "Author:"
202msgstr "المؤلف:"
210msgstr "المؤلف:"
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,11 +246,11 @@ msgstr "تتكلم الآن..."
238msgid "Search"
246msgid "Search"
239msgstr "ابحث"
247msgstr "ابحث"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr "عذراً، لا يوجد ما يطابق بحثك."
251msgstr "عذراً، لا يوجد ما يطابق بحثك."
244
252
245−#: Shell.qml:399
253+#: Shell.qml:429
246#, qt-format
254#, qt-format
247msgid "Please enter %1"
255msgid "Please enter %1"
248msgstr ""
256msgstr ""
po/az.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-26 23:48+0000\n"
11"PO-Revision-Date: 2013-06-26 23:48+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Son axtarışlar"
135msgstr "Son axtarışlar"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Tətbiqlər"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Ev"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Söylənilir..."
237msgid "Search"
245msgid "Search"
238msgstr "Axtar"
246msgstr "Axtar"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
250msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/bg.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 00:06+0000\n"
11"PO-Revision-Date: 2013-06-27 00:06+0000\n"
12"Last-Translator: Miroslav E. Hadzhiev (Хаджиев) "
12"Last-Translator: Miroslav E. Hadzhiev (Хаджиев) "
13"<miroslav.hadzhiev@gmail.com>\n"
13"<miroslav.hadzhiev@gmail.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr "Уикипедия"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "Скорошни търсения"
136msgstr "Скорошни търсения"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr ""
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr ""
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr "Инсталирани"
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr ""
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "Приложения"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr ""
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr ""
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr ""
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "Начало"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr "Най-отличени"
174msgstr "Най-отличени"
@@ -201,7 +209,7 @@ msgstr ""
201msgid "Author:"
209msgid "Author:"
202msgstr "Автор:"
210msgstr "Автор:"
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,11 +246,11 @@ msgstr ""
238msgid "Search"
246msgid "Search"
239msgstr "Търсене"
247msgstr "Търсене"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr "Съжаляваме, няма нищо, което да отговаря на вашето търсене."
251msgstr "Съжаляваме, няма нищо, което да отговаря на вашето търсене."
244
252
245−#: Shell.qml:399
253+#: Shell.qml:429
246#, qt-format
254#, qt-format
247msgid "Please enter %1"
255msgid "Please enter %1"
248msgstr ""
256msgstr ""
po/ca.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 00:24+0000\n"
11"PO-Revision-Date: 2013-06-27 00:24+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Cerques recents"
135msgstr "Cerques recents"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Aplications actives"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Les més freqüents"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Instal·lades"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Disponibles per baixar"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Aplicacions"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Aplicacions freqüents"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "Música recent"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Vídeos populars en línia"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Inici"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "S'està parlant..."
237msgid "Search"
245msgid "Search"
238msgstr "Cerca"
246msgstr "Cerca"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "No hi ha res que coincideixi amb la cerca"
250msgstr "No hi ha res que coincideixi amb la cerca"
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/de.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 00:37+0000\n"
11"PO-Revision-Date: 2013-06-27 00:37+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Letzte Suchbegriffe"
135msgstr "Letzte Suchbegriffe"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Aktive Anwendungen"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Häufig verwendet"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Installiert"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Zum Herunterladen verfügbar"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Anwendungen"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Häufig genutzte Anwendungen"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "Zuletzt gehörte Musik"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Beliebte Online-Videos"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Start"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr "Empfehlungen"
173msgstr "Empfehlungen"
@@ -200,7 +208,7 @@ msgstr "Darsteller:"
200msgid "Author:"
208msgid "Author:"
201msgstr "Autor:"
209msgstr "Autor:"
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Sie sprechen …"
237msgid "Search"
245msgid "Search"
238msgstr "Suchen"
246msgstr "Suchen"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Entschuldigung, es wurden keine Treffer erzielt."
250msgstr "Entschuldigung, es wurden keine Treffer erzielt."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/el.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 00:53+0000\n"
11"PO-Revision-Date: 2013-06-27 00:53+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Greek <el@li.org>\n"
13"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Πρόσφατες αναζητήσεις"
135msgstr "Πρόσφατες αναζητήσεις"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Εφαρμογές"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Αρχή"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Ομιλία..."
237msgid "Search"
245msgid "Search"
238msgstr "Αναζήτηση"
246msgstr "Αναζήτηση"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να ταιριάζει στην αναζήτησή σας."
250msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να ταιριάζει στην αναζήτησή σας."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/en_AU.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 01:13+0000\n"
11"PO-Revision-Date: 2013-06-27 01:13+0000\n"
12"Last-Translator: Jackson Doak <Doak.jackson@gmail.com>\n"
12"Last-Translator: Jackson Doak <Doak.jackson@gmail.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Recent searches"
135msgstr "Recent searches"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Running apps"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Frequently used"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Installed"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Available for download"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Apps"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Frequent Apps"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "Recent Music"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Videos Popular Online"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Home"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr "Featured"
173msgstr "Featured"
@@ -200,7 +208,7 @@ msgstr "Starring:"
200msgid "Author:"
208msgid "Author:"
201msgstr "Author:"
209msgstr "Author:"
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Speaking..."
237msgid "Search"
245msgid "Search"
238msgstr "Search"
246msgstr "Search"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Sorry, there is nothing that matches your search."
250msgstr "Sorry, there is nothing that matches your search."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/en_GB.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 08:53+0000\n"
11"PO-Revision-Date: 2013-06-27 08:53+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
13"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Recent searches"
135msgstr "Recent searches"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Running apps"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Frequently used"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Installed"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Available for download"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Apps"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Frequent Apps"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "Recent Music"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Videos Popular Online"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Home"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr "Featured"
173msgstr "Featured"
@@ -200,7 +208,7 @@ msgstr "Starring:"
200msgid "Author:"
208msgid "Author:"
201msgstr "Author:"
209msgstr "Author:"
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Speaking..."
237msgid "Search"
245msgid "Search"
238msgstr "Search"
246msgstr "Search"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Sorry, there is nothing that matches your search."
250msgstr "Sorry, there is nothing that matches your search."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr "Please enter %1"
255msgstr "Please enter %1"
po/eo.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr ""
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr ""
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr ""
246msgstr ""
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/es.po+65−55
@@ -7,16 +7,16 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-07-08 07:25+0000\n"
11+"PO-Revision-Date: 2013-09-04 22:12+0000\n"
12"Last-Translator: Adolfo Jayme Barrientos <fitoschido@gmail.com>\n"
12"Last-Translator: Adolfo Jayme Barrientos <fitoschido@gmail.com>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-09-05 05:35+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16758)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,79 +86,89 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr "Omitir la introducción"
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr "Borde derecho"
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr "Deslice el dedo desde el borde derecho para desbloquear el teléfono"
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr "Borde superior"
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr "Deslice el dedo desde el borde superior para acceder a los menús"
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr "Cerrar"
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr "Deslice hacia arriba para cerrar la pantalla de configuración"
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr "Borde izquierdo"
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+"Deslice el dedo desde la izquierda para mostrar el lanzador y acceder "
125+"rápidamente a las aplicaciones"
126+
127+#: Components/EdgeDemo.qml:217
128+msgid "Well done"
129+msgstr "Bien hecho"
130+
131+#: Components/EdgeDemo.qml:218
132+msgid "You have now mastered the edge gestures and can start using the phone"
133+msgstr "Ahora domina el uso de gestos de los bordes. Puede usar el teléfono"
134+
89#: Components/PageHeader.qml:298
135#: Components/PageHeader.qml:298
90msgid "Recent searches"
136msgid "Recent searches"
91msgstr "Búsquedas recientes"
137msgstr "Búsquedas recientes"
92
138
93#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
140+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
141#, qt-format
96msgid "(%1)"
142msgid "(%1)"
97−msgstr ""
143+msgstr "(%1)"
98
144
99#. TRANSLATORS: Number of persons who wrote reviews for this app
145#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
146+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
147#, qt-format
102msgid "%1 review"
148msgid "%1 review"
103msgid_plural "%1 reviews"
149msgid_plural "%1 reviews"
104−msgstr[0] ""
150+msgstr[0] "%1 reseña"
105−msgstr[1] ""
151+msgstr[1] "%1 reseñas"
106
152
107−#: Dash/Apps/AppPreview.qml:181
153+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
154msgid "Rate this"
109−msgstr ""
155+msgstr "Valorar esto"
110
156
111#: Dash/Apps/AppReviews.qml:72
157#: Dash/Apps/AppReviews.qml:72
112msgid "Add a review"
158msgid "Add a review"
113−msgstr ""
159+msgstr "Añadir una reseña"
114
160
115#: Dash/Apps/AppReviews.qml:84
161#: Dash/Apps/AppReviews.qml:84
116msgid "Review"
162msgid "Review"
117−msgstr ""
163+msgstr "Reseñar"
118
164
119#: Dash/Apps/AppReviews.qml:118
165#: Dash/Apps/AppReviews.qml:118
120msgid "Send"
166msgid "Send"
121−msgstr ""
167+msgstr "Enviar"
122
168
123#: Dash/Apps/AppReviews.qml:136
169#: Dash/Apps/AppReviews.qml:136
124msgid "Comments:"
170msgid "Comments:"
125−msgstr ""
171+msgstr "Comentarios:"
126−
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Aplicaciones en ejecución"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Usadas frecuentemente"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Instaladas"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Disponibles para descargar"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Aplicaciones"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Aplicaciones frecuentes"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "Música reciente"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Vídeos populares en línea"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Inicio"
162
172
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
174msgid "Featured"
@@ -200,9 +210,9 @@ msgstr "Protagonistas:"
200msgid "Author:"
210msgid "Author:"
201msgstr "Autor:"
211msgstr "Autor:"
202
212
203−#: Greeter/Lockscreen.qml:133
213+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
214msgid "Emergency Call"
205−msgstr ""
215+msgstr "Llamada de emergencia"
206
216
207#: Greeter/PassphraseLockscreen.qml:59
217#: Greeter/PassphraseLockscreen.qml:59
208#, qt-format
218#, qt-format
@@ -237,11 +247,11 @@ msgstr "Hablando…"
237msgid "Search"
247msgid "Search"
238msgstr "Buscar"
248msgstr "Buscar"
239
249
240−#: plugins/Unity/scope.cpp:298
250+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
251msgid "Sorry, there is nothing that matches your search."
242msgstr "No hay nada que coincida con su búsqueda."
252msgstr "No hay nada que coincida con su búsqueda."
243
253
244−#: Shell.qml:399
254+#: Shell.qml:429
245#, qt-format
255#, qt-format
246msgid "Please enter %1"
256msgid "Please enter %1"
247msgstr "Introduzca %1"
257msgstr "Introduzca %1"
po/fi.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-08-23 16:15+0000\n"
11"PO-Revision-Date: 2013-08-23 16:15+0000\n"
12"Last-Translator: Timo Jyrinki <timo.jyrinki@canonical.com>\n"
12"Last-Translator: Timo Jyrinki <timo.jyrinki@canonical.com>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-24 05:59+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16738)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Viimeisimmät haut"
135msgstr "Viimeisimmät haut"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr "(%1)"
141msgstr "(%1)"
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] "%1 arvostelu"
148msgstr[0] "%1 arvostelu"
105msgstr[1] "%1 arvostelua"
149msgstr[1] "%1 arvostelua"
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr "Arvioi tämä"
153msgstr "Arvioi tämä"
110
154
@@ -124,42 +168,6 @@ msgstr "Lähetä"
124msgid "Comments:"
168msgid "Comments:"
125msgstr "Kommentit:"
169msgstr "Kommentit:"
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Käynnissä olevat sovellukset"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Usein käytetyt"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Asennetut"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Ladattavissa"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Sovellukset"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Yleisimmät sovellukset"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "Viimeisin musiikki"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Suositut verkkovideot"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Kotinäyttö"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr "Suositellut"
173msgstr "Suositellut"
@@ -200,7 +208,7 @@ msgstr "Pääosissa:"
200msgid "Author:"
208msgid "Author:"
201msgstr "Tekijä:"
209msgstr "Tekijä:"
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr "Hätäpuhelu"
213msgstr "Hätäpuhelu"
206
214
@@ -237,11 +245,11 @@ msgstr "Puhutaan..."
237msgid "Search"
245msgid "Search"
238msgstr "Hae"
246msgstr "Hae"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Hakuun täsmääviä tuloksia ei löydy."
250msgstr "Hakuun täsmääviä tuloksia ei löydy."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr "Kirjoita %1"
255msgstr "Kirjoita %1"
po/fo.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 02:57+0000\n"
11"PO-Revision-Date: 2013-06-27 02:57+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Nýtsluskipanir"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Heim"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Snakkar..."
237msgid "Search"
245msgid "Search"
238msgstr "Leita"
246msgstr "Leita"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
250msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/fr.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 03:21+0000\n"
11"PO-Revision-Date: 2013-06-27 03:21+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Applications"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr ""
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr ""
246msgstr ""
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/gl.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 03:38+0000\n"
11"PO-Revision-Date: 2013-06-27 03:38+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Buscas recentes"
135msgstr "Buscas recentes"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Aplicativos en execución"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Usadas frecuentemente"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Instalado"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Dispoñíbel para descargar"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Aplicativos"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Aplicativos frecuentes"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "Música recente"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Vídeos populares en liña"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Cartafol persoal"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Falando…"
237msgid "Search"
245msgid "Search"
238msgstr "Buscar"
246msgstr "Buscar"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Sentímolo, non hai nada que coincida con esta busca."
250msgstr "Sentímolo, non hai nada que coincida con esta busca."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/he.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 03:54+0000\n"
11"PO-Revision-Date: 2013-06-27 03:54+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "חיפושים אחרונים"
135msgstr "חיפושים אחרונים"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "יישומים"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "בית"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "מושמע דיבור..."
237msgid "Search"
245msgid "Search"
238msgstr "חיפוש"
246msgstr "חיפוש"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה."
250msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/hr.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr ""
87msgid "YouTube"
87msgid "YouTube"
88msgstr ""
88msgstr ""
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "Nedavne pretrage"
136msgstr "Nedavne pretrage"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr ""
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr ""
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr ""
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr ""
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "Aplikacije"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr ""
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr ""
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr ""
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "Početna"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr ""
174msgstr ""
@@ -201,7 +209,7 @@ msgstr ""
201msgid "Author:"
209msgid "Author:"
202msgstr ""
210msgstr ""
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,11 +246,11 @@ msgstr "Govor..."
238msgid "Search"
246msgid "Search"
239msgstr "Pretraživanje"
247msgstr "Pretraživanje"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
251msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
244
252
245−#: Shell.qml:399
253+#: Shell.qml:429
246#, qt-format
254#, qt-format
247msgid "Please enter %1"
255msgid "Please enter %1"
248msgstr ""
256msgstr ""
po/hu.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 04:28+0000\n"
11"PO-Revision-Date: 2013-06-27 04:28+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Legutóbbi keresések"
135msgstr "Legutóbbi keresések"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Futó alkalmazások"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Gyakran használt"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Telepített"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Alkalmazások"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Kezdőoldal"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Beszéd…"
237msgid "Search"
245msgid "Search"
238msgstr "Keresés"
246msgstr "Keresés"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Elnézést, nincs találat a keresésre."
250msgstr "Elnézést, nincs találat a keresésre."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/hy.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Վերջին որոնումներ"
135msgstr "Վերջին որոնումներ"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Բացած ծրագրեր"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Վերջին բացածները"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Տեղադրված"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Հասանելի ծրագրեր"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Ծրագրեր"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Հաճախակի ծրագրերը"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "Վերջին երգերը"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Հայտնի օնլայն վիդեոներ"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Տուն"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Խոսում եմ..."
237msgid "Search"
245msgid "Search"
238msgstr "Որոնում"
246msgstr "Որոնում"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
250msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/id.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Indonesian <id@li.org>\n"
13"Language-Team: Indonesian <id@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr ""
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr ""
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr ""
246msgstr ""
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/it.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 05:14+0000\n"
11"PO-Revision-Date: 2013-06-27 05:14+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Ricerche recenti"
135msgstr "Ricerche recenti"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Applicazioni"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Home"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Sto parlando..."
237msgid "Search"
245msgid "Search"
238msgstr "Cerca"
246msgstr "Cerca"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Nessun risultato corrispondente alla ricerca."
250msgstr "Nessun risultato corrispondente alla ricerca."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/ja.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr ""
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr ""
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr ""
246msgstr ""
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/kn.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kannada <kn@li.org>\n"
13"Language-Team: Kannada <kn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
135msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "ಅಪ್ಲಿಕೇಶನ್‌ಗಳು"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "ಮನೆ (Home)"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "ಮಾತನಾಡುತಿದ್ದೀರಿ"
237msgid "Search"
245msgid "Search"
238msgstr "ಹುಡುಕು"
246msgstr "ಹುಡುಕು"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯಾದ ಹೊಂದಾಣಿಕೆಗಳು ದೊರಕುತ್ತಿಲ್ಲ"
250msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯಾದ ಹೊಂದಾಣಿಕೆಗಳು ದೊರಕುತ್ತಿಲ್ಲ"
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/ko.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 05:59+0000\n"
11"PO-Revision-Date: 2013-06-27 05:59+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Korean <ko@li.org>\n"
13"Language-Team: Korean <ko@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "요즈음 찿은 것들"
135msgstr "요즈음 찿은 것들"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "돌아가고 있는 앱"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "자주 쓰는 것들"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "깔림"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "내려받을 수 있음"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "앱"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "자주 쓰는 앱"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "요즈음 찾는 음악"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr ""
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr "찾기"
246msgstr "찾기"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/ky.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Соңку издөөлөр"
135msgstr "Соңку издөөлөр"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Тиркемелер"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Үй папкасы"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Сүйлөнүүдө..."
237msgid "Search"
245msgid "Search"
238msgstr "Издөө"
246msgstr "Издөө"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Тилекке каршы, сиздин издөөңүзгө эч нерсе дал келген жок."
250msgstr "Тилекке каршы, сиздин издөөңүзгө эч нерсе дал келген жок."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/lv.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 06:31+0000\n"
11"PO-Revision-Date: 2013-06-27 06:31+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Latvian <lv@li.org>\n"
13"Language-Team: Latvian <lv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Nesen veiktās meklēšanas"
135msgstr "Nesen veiktās meklēšanas"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Lietotnes"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Mājas"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Runa..."
237msgid "Search"
245msgid "Search"
238msgstr "Meklēt"
246msgstr "Meklēt"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
250msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/my.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 06:47+0000\n"
11"PO-Revision-Date: 2013-06-27 06:47+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Burmese <my@li.org>\n"
13"Language-Team: Burmese <my@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
135msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Apps"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "ပင်မ"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "ပြောနေသည်"
237msgid "Search"
245msgid "Search"
238msgstr "ရှာဖွေ"
246msgstr "ရှာဖွေ"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့်တူညီတာဘာမှမရှိပါ။"
250msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့်တူညီတာဘာမှမရှိပါ။"
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/nb.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 07:02+0000\n"
11"PO-Revision-Date: 2013-06-27 07:02+0000\n"
12"Last-Translator: Joakim Langvand <jlangvand@gmail.com>\n"
12"Last-Translator: Joakim Langvand <jlangvand@gmail.com>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Siste søk"
135msgstr "Siste søk"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Ofte brukt"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Installert"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "Tilgjengelig for nedlasting"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Programmer"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Hjem"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Snakker …"
237msgid "Search"
245msgid "Search"
238msgstr "Søk"
246msgstr "Søk"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Søket ga ingen treff."
250msgstr "Søket ga ingen treff."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/nl.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 07:19+0000\n"
11"PO-Revision-Date: 2013-06-27 07:19+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Dutch <nl@li.org>\n"
13"Language-Team: Dutch <nl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Recente zoekopdrachten"
135msgstr "Recente zoekopdrachten"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Apps"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Hoofdvenster"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Inspreken…"
237msgid "Search"
245msgid "Search"
238msgstr "Zoeken"
246msgstr "Zoeken"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
250msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/pl.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 08:52+0000\n"
11"PO-Revision-Date: 2013-06-27 08:52+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Polish <pl@li.org>\n"
13"Language-Team: Polish <pl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
17"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
18"|| n%100>=20) ? 1 : 2;\n"
18"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr "Wikipedia"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "Ostatnie wyszukiwania"
136msgstr "Ostatnie wyszukiwania"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr "Uruchomione aplikacje"
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr "Najczęściej używane"
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr "Zainstalowane"
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr "Dostępne do pobrania"
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "Aplikacje"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr "Często używane aplikacje"
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr "Najnowsza muzyka"
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr "Wideo popularne online"
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "Dom"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr "Polecane"
174msgstr "Polecane"
@@ -201,7 +209,7 @@ msgstr "Obsada:"
201msgid "Author:"
209msgid "Author:"
202msgstr "Autor:"
210msgstr "Autor:"
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,11 +246,11 @@ msgstr "Rozpoznanie..."
238msgid "Search"
246msgid "Search"
239msgstr "Szukaj"
247msgstr "Szukaj"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr "Nie znaleziono pasujących wyników."
251msgstr "Nie znaleziono pasujących wyników."
244
252
245−#: Shell.qml:399
253+#: Shell.qml:429
246#, qt-format
254#, qt-format
247msgid "Please enter %1"
255msgid "Please enter %1"
248msgstr "Wprowadź %1"
256msgstr "Wprowadź %1"
po/pt_BR.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 07:39+0000\n"
11"PO-Revision-Date: 2013-06-27 07:39+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Pesquisas recentes"
135msgstr "Pesquisas recentes"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Aplicativos"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Início"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Falando..."
237msgid "Search"
245msgid "Search"
238msgstr "Pesquisar"
246msgstr "Pesquisar"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
250msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/ro.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 07:53+0000\n"
11"PO-Revision-Date: 2013-06-27 07:53+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
17"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
18"== 0) && (n != 0))) ? 2: 1));\n"
18"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr ""
87msgid "YouTube"
87msgid "YouTube"
88msgstr ""
88msgstr ""
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "Căutări recente"
136msgstr "Căutări recente"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr ""
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr ""
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr ""
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr ""
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "Aplicații"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr ""
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr ""
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr ""
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "Acasă"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr ""
174msgstr ""
@@ -201,7 +209,7 @@ msgstr ""
201msgid "Author:"
209msgid "Author:"
202msgstr ""
210msgstr ""
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,12 +246,12 @@ msgstr "Vorbire..."
238msgid "Search"
246msgid "Search"
239msgstr "Căutare"
247msgstr "Căutare"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr ""
251msgstr ""
244"Ne pare rău, nu este nimic care se potrivește căutării dumneavoastră."
252"Ne pare rău, nu este nimic care se potrivește căutării dumneavoastră."
245
253
246−#: Shell.qml:399
254+#: Shell.qml:429
247#, qt-format
255#, qt-format
248msgid "Please enter %1"
256msgid "Please enter %1"
249msgstr ""
257msgstr ""
po/ru.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-28 06:40+0000\n"
11"PO-Revision-Date: 2013-06-28 06:40+0000\n"
12"Last-Translator: Eugene Marshal <Unknown>\n"
12"Last-Translator: Eugene Marshal <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr "Википедия"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "Последние поисковые запросы"
136msgstr "Последние поисковые запросы"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr "Запущенные приложения"
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr "Часто используемые"
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr "Установленные"
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr "Доступно для загрузки"
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "Приложения"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr "Часто используемые приложения"
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr "Недавно прослушанная музыка"
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr "Популярные видео из сети"
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "Главная"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr ""
174msgstr ""
@@ -201,7 +209,7 @@ msgstr "В главных ролях"
201msgid "Author:"
209msgid "Author:"
202msgstr "Автор:"
210msgstr "Автор:"
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,11 +246,11 @@ msgstr "Говорите..."
238msgid "Search"
246msgid "Search"
239msgstr "Поиск"
247msgstr "Поиск"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr "Извините, поиск не дал результатов."
251msgstr "Извините, поиск не дал результатов."
244
252
245−#: Shell.qml:399
253+#: Shell.qml:429
246#, qt-format
254#, qt-format
247msgid "Please enter %1"
255msgid "Please enter %1"
248msgstr "Пожалуйста, введите %1"
256msgstr "Пожалуйста, введите %1"
po/si.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr ""
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr ""
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr ""
246msgstr ""
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/sl.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-07-02 12:59+0000\n"
11"PO-Revision-Date: 2013-07-02 12:59+0000\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
17"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
18"n%100==4 ? 3 : 0);\n"
18"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr "Wikipedija"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "Nedavna iskanja"
136msgstr "Nedavna iskanja"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr ""
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr "Pogosto uporabljano"
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr "Nameščeno"
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr "Na voljo za prejem"
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "Programi"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr "Pogosto uporabljani programi"
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr "Nedavna glasba"
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr ""
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "Domov"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr "Predstavljeno"
174msgstr "Predstavljeno"
@@ -201,7 +209,7 @@ msgstr ""
201msgid "Author:"
209msgid "Author:"
202msgstr ""
210msgstr ""
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,11 +246,11 @@ msgstr "Govorjenje ..."
238msgid "Search"
246msgid "Search"
239msgstr "Iskanje"
247msgstr "Iskanje"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr "Nič se ne ujema z vašim iskalnim nizom."
251msgstr "Nič se ne ujema z vašim iskalnim nizom."
244
252
245−#: Shell.qml:399
253+#: Shell.qml:429
246#, qt-format
254#, qt-format
247msgid "Please enter %1"
255msgid "Please enter %1"
248msgstr ""
256msgstr ""
po/sr.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 09:19+0000\n"
11"PO-Revision-Date: 2013-06-27 09:19+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Serbian <sr@li.org>\n"
13"Language-Team: Serbian <sr@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr ""
87msgid "YouTube"
87msgid "YouTube"
88msgstr ""
88msgstr ""
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "Скорашње претраге"
136msgstr "Скорашње претраге"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr ""
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr ""
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr ""
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr ""
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "Програми"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr ""
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr ""
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr ""
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "Почетна"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr ""
174msgstr ""
@@ -201,7 +209,7 @@ msgstr ""
201msgid "Author:"
209msgid "Author:"
202msgstr ""
210msgstr ""
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,11 +246,11 @@ msgstr "Говор..."
238msgid "Search"
246msgid "Search"
239msgstr "Претрага"
247msgstr "Претрага"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr "Нажалост, претрага није наишла на икакво подударање."
251msgstr "Нажалост, претрага није наишла на икакво подударање."
244
252
245−#: Shell.qml:399
253+#: Shell.qml:429
246#, qt-format
254#, qt-format
247msgid "Please enter %1"
255msgid "Please enter %1"
248msgstr ""
256msgstr ""
po/sv.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Swedish <sv@li.org>\n"
13"Language-Team: Swedish <sv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr ""
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr ""
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr ""
246msgstr ""
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/te.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 09:57+0000\n"
11"PO-Revision-Date: 2013-06-27 09:57+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Telugu <te@li.org>\n"
13"Language-Team: Telugu <te@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr ""
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "నివాసం"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr ""
246msgstr ""
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/tr.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 10:08+0000\n"
11"PO-Revision-Date: 2013-06-27 10:08+0000\n"
12"Last-Translator: Adar Cem EREN <adarcemeren34@gmail.com>\n"
12"Last-Translator: Adar Cem EREN <adarcemeren34@gmail.com>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr "Vikipedi"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "Son Arananlar"
135msgstr "Son Arananlar"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "Çalışan uygulamalar"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "Sıkça kullanılanlar"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "Yüklenenler"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "İndirilebilir durumda"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "Uygulamalar"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "Sıkça Kullanılan Uygulamalar"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "En Son Müzik"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "Çevrimiçi Yaygın Videolar"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "Ana Sayfa"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr "Öne Çıkanlar"
173msgstr "Öne Çıkanlar"
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr "Yazar:"
209msgstr "Yazar:"
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "Konuşuyor..."
237msgid "Search"
245msgid "Search"
238msgstr "Ara"
246msgstr "Ara"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
250msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/ug.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 11:02+0000\n"
11"PO-Revision-Date: 2013-06-27 11:02+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Uyghur <ug@li.org>\n"
13"Language-Team: Uyghur <ug@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr "ۋىكىپېدىيە"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "يېقىنقى ئىزدەشلەر"
135msgstr "يېقىنقى ئىزدەشلەر"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "ئىجرا بولۇۋاتقان ئەپلەر"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "كوپ ئىشلىتىلگەنلىرى"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "ئورنىتىلغانلىرى"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "چۈشۈرگىلى بولىدىغانلىرى"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "ئەپلەر"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "دائىم ئىشلىتىلىدىغان ئەپلەر"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "يېقىندا ئاڭلىغان مۇزىكىلار"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "توردىكى ئالقىشقا ئېرىشكەن سىنلار"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "ماكان"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr "داڭلىق"
173msgstr "داڭلىق"
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr "ئاپتور:"
209msgstr "ئاپتور:"
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "سۆزلەۋاتىسىز…"
237msgid "Search"
245msgid "Search"
238msgstr "ئىزدە"
246msgstr "ئىزدە"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپىلمىدى."
250msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپىلمىدى."
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/uk.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-07-21 05:47+0000\n"
11"PO-Revision-Date: 2013-07-21 05:47+0000\n"
12"Last-Translator: Ярослав Смук <Smuk.Slavko@yandex.ua>\n"
12"Last-Translator: Ярослав Смук <Smuk.Slavko@yandex.ua>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
19+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16734)\n"
20+"X-Generator: Launchpad (build 16750)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,25 +87,69 @@ msgstr "Вікіпедія"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90+#: Components/EdgeDemoOverlay.qml:145
91+msgid "Skip intro"
92+msgstr ""
93+
94+#: Components/EdgeDemo.qml:98
95+msgid "Right edge"
96+msgstr ""
97+
98+#: Components/EdgeDemo.qml:99
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+
102+#: Components/EdgeDemo.qml:135
103+msgid "Top edge"
104+msgstr ""
105+
106+#: Components/EdgeDemo.qml:136
107+msgid "Try swiping from the top edge to access the indicators"
108+msgstr ""
109+
110+#: Components/EdgeDemo.qml:161
111+msgid "Close"
112+msgstr ""
113+
114+#: Components/EdgeDemo.qml:162
115+msgid "Swipe up again to close the settings screen"
116+msgstr ""
117+
118+#: Components/EdgeDemo.qml:189
119+msgid "Left edge"
120+msgstr ""
121+
122+#: Components/EdgeDemo.qml:190
123+msgid "Swipe from the left to reveal the launcher for quick access to apps"
124+msgstr ""
125+
126+#: Components/EdgeDemo.qml:217
127+msgid "Well done"
128+msgstr ""
129+
130+#: Components/EdgeDemo.qml:218
131+msgid "You have now mastered the edge gestures and can start using the phone"
132+msgstr ""
133+
90#: Components/PageHeader.qml:298
134#: Components/PageHeader.qml:298
91msgid "Recent searches"
135msgid "Recent searches"
92msgstr "Нещодавні пошуки"
136msgstr "Нещодавні пошуки"
93
137
94#. TRANSLATORS: Number of persons who rated this app
138#. TRANSLATORS: Number of persons who rated this app
95−#: Dash/Apps/AppInfo.qml:72
139+#: Dash/Apps/AppInfo.qml:73
96#, qt-format
140#, qt-format
97msgid "(%1)"
141msgid "(%1)"
98msgstr ""
142msgstr ""
99
143
100#. TRANSLATORS: Number of persons who wrote reviews for this app
144#. TRANSLATORS: Number of persons who wrote reviews for this app
101−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
145+#: Dash/Apps/AppInfo.qml:85
102#, qt-format
146#, qt-format
103msgid "%1 review"
147msgid "%1 review"
104msgid_plural "%1 reviews"
148msgid_plural "%1 reviews"
105msgstr[0] ""
149msgstr[0] ""
106msgstr[1] ""
150msgstr[1] ""
107
151
108−#: Dash/Apps/AppPreview.qml:181
152+#: Dash/Apps/AppPreview.qml:175
109msgid "Rate this"
153msgid "Rate this"
110msgstr ""
154msgstr ""
111
155
@@ -125,42 +169,6 @@ msgstr ""
125msgid "Comments:"
169msgid "Comments:"
126msgstr ""
170msgstr ""
127
171
128−#: Dash/DashApps.qml:65
129−msgid "Running apps"
130−msgstr "Запущені програми"
131−
132−#: Dash/DashApps.qml:68
133−msgid "Frequently used"
134−msgstr "Найчастіше використовувані"
135−
136−#: Dash/DashApps.qml:71
137−msgid "Installed"
138−msgstr "Встановлені"
139−
140−#: Dash/DashApps.qml:74
141−msgid "Available for download"
142−msgstr "Доступно до завантаження"
143−
144−#: Dash/DashApps.qml:168
145−msgid "Apps"
146−msgstr "Програми"
147−
148−#: Dash/DashHome.qml:41
149−msgid "Frequent Apps"
150−msgstr "Часто використовувані програми"
151−
152−#: Dash/DashHome.qml:44
153−msgid "Recent Music"
154−msgstr "Нещодавно прослухана музика"
155−
156−#: Dash/DashHome.qml:47
157−msgid "Videos Popular Online"
158−msgstr "Популярні в мережі відео"
159−
160−#: Dash/DashHome.qml:151
161−msgid "Home"
162−msgstr "Домівка"
163−
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165msgid "Featured"
173msgid "Featured"
166msgstr "Рекомендовані"
174msgstr "Рекомендовані"
@@ -201,7 +209,7 @@ msgstr "Актори:"
201msgid "Author:"
209msgid "Author:"
202msgstr "Автор:"
210msgstr "Автор:"
203
211
204−#: Greeter/Lockscreen.qml:133
212+#: Greeter/Lockscreen.qml:134
205msgid "Emergency Call"
213msgid "Emergency Call"
206msgstr ""
214msgstr ""
207
215
@@ -238,11 +246,11 @@ msgstr "Мовлення…"
238msgid "Search"
246msgid "Search"
239msgstr "Пошук"
247msgstr "Пошук"
240
248
241−#: plugins/Unity/scope.cpp:298
249+#: plugins/Unity/scope.cpp:317
242msgid "Sorry, there is nothing that matches your search."
250msgid "Sorry, there is nothing that matches your search."
243msgstr "Вибачте, для вказаних вами ключових слів нічого не знайдено."
251msgstr "Вибачте, для вказаних вами ключових слів нічого не знайдено."
244
252
245−#: Shell.qml:399
253+#: Shell.qml:429
246#, qt-format
254#, qt-format
247msgid "Please enter %1"
255msgid "Please enter %1"
248msgstr "Будь ласка, введіть %1"
256msgstr "Будь ласка, введіть %1"
po/unity8.pot+51−43
@@ -8,7 +8,7 @@ msgid ""
8msgstr ""
8msgstr ""
9"Project-Id-Version: unity8\n"
9"Project-Id-Version: unity8\n"
10"Report-Msgid-Bugs-To: \n"
10"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
11+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr ""
135msgstr ""
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr ""
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr ""
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr ""
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr ""
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr ""
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr ""
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr ""
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr ""
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr ""
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr ""
237msgid "Search"
245msgid "Search"
238msgstr ""
246msgstr ""
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr ""
250msgstr ""
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/zh_CN.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 10:33+0000\n"
11"PO-Revision-Date: 2013-06-27 10:33+0000\n"
12"Last-Translator: Anthony Wong <anthony.wong@canonical.com>\n"
12"Last-Translator: Anthony Wong <anthony.wong@canonical.com>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
13"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr "维基百科"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "近期搜索"
135msgstr "近期搜索"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "正在运行的应用程序"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "常用"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "已安装"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "可供下载"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "应用程序"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "常用软件"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "近期听过的音乐"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "热门在线视频"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "主页"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr "推荐"
173msgstr "推荐"
@@ -200,7 +208,7 @@ msgstr "主演:"
200msgid "Author:"
208msgid "Author:"
201msgstr "作者:"
209msgstr "作者:"
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "讲话中..."
237msgid "Search"
245msgid "Search"
238msgstr "搜索"
246msgstr "搜索"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "对不起,没有找到您想要的结果。"
250msgstr "对不起,没有找到您想要的结果。"
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
po/zh_TW.po+53−45
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-09 12:18+0200\n"
10+"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11"PO-Revision-Date: 2013-06-27 10:24+0000\n"
11"PO-Revision-Date: 2013-06-27 10:24+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
13"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-22 06:11+0000\n"
18+"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16734)\n"
19+"X-Generator: Launchpad (build 16750)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,25 +86,69 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89+#: Components/EdgeDemoOverlay.qml:145
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:98
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:99
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:135
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:136
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:161
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:162
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:189
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:190
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:217
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:218
130+msgid "You have now mastered the edge gestures and can start using the phone"
131+msgstr ""
132+
89#: Components/PageHeader.qml:298
133#: Components/PageHeader.qml:298
90msgid "Recent searches"
134msgid "Recent searches"
91msgstr "最近搜尋"
135msgstr "最近搜尋"
92
136
93#. TRANSLATORS: Number of persons who rated this app
137#. TRANSLATORS: Number of persons who rated this app
94−#: Dash/Apps/AppInfo.qml:72
138+#: Dash/Apps/AppInfo.qml:73
95#, qt-format
139#, qt-format
96msgid "(%1)"
140msgid "(%1)"
97msgstr ""
141msgstr ""
98
142
99#. TRANSLATORS: Number of persons who wrote reviews for this app
143#. TRANSLATORS: Number of persons who wrote reviews for this app
100−#: Dash/Apps/AppInfo.qml:84 tests/qmltests/Dash/Apps/tst_AppPreview.qml:115
144+#: Dash/Apps/AppInfo.qml:85
101#, qt-format
145#, qt-format
102msgid "%1 review"
146msgid "%1 review"
103msgid_plural "%1 reviews"
147msgid_plural "%1 reviews"
104msgstr[0] ""
148msgstr[0] ""
105msgstr[1] ""
149msgstr[1] ""
106
150
107−#: Dash/Apps/AppPreview.qml:181
151+#: Dash/Apps/AppPreview.qml:175
108msgid "Rate this"
152msgid "Rate this"
109msgstr ""
153msgstr ""
110
154
@@ -124,42 +168,6 @@ msgstr ""
124msgid "Comments:"
168msgid "Comments:"
125msgstr ""
169msgstr ""
126
170
127−#: Dash/DashApps.qml:65
128−msgid "Running apps"
129−msgstr "執行中的程式"
130−
131−#: Dash/DashApps.qml:68
132−msgid "Frequently used"
133−msgstr "最常使用"
134−
135−#: Dash/DashApps.qml:71
136−msgid "Installed"
137−msgstr "已安裝"
138−
139−#: Dash/DashApps.qml:74
140−msgid "Available for download"
141−msgstr "可供下載"
142−
143−#: Dash/DashApps.qml:168
144−msgid "Apps"
145−msgstr "程式"
146−
147−#: Dash/DashHome.qml:41
148−msgid "Frequent Apps"
149−msgstr "常用的程式"
150−
151−#: Dash/DashHome.qml:44
152−msgid "Recent Music"
153−msgstr "最近聽過的音樂"
154−
155−#: Dash/DashHome.qml:47
156−msgid "Videos Popular Online"
157−msgstr "線上熱門的影片"
158−
159−#: Dash/DashHome.qml:151
160−msgid "Home"
161−msgstr "家屋"
162−
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164msgid "Featured"
172msgid "Featured"
165msgstr ""
173msgstr ""
@@ -200,7 +208,7 @@ msgstr ""
200msgid "Author:"
208msgid "Author:"
201msgstr ""
209msgstr ""
202
210
203−#: Greeter/Lockscreen.qml:133
211+#: Greeter/Lockscreen.qml:134
204msgid "Emergency Call"
212msgid "Emergency Call"
205msgstr ""
213msgstr ""
206
214
@@ -237,11 +245,11 @@ msgstr "說話中..."
237msgid "Search"
245msgid "Search"
238msgstr "搜尋"
246msgstr "搜尋"
239
247
240−#: plugins/Unity/scope.cpp:298
248+#: plugins/Unity/scope.cpp:317
241msgid "Sorry, there is nothing that matches your search."
249msgid "Sorry, there is nothing that matches your search."
242msgstr "很抱歉,找不到符合您想搜尋的結果。"
250msgstr "很抱歉,找不到符合您想搜尋的結果。"
243
251
244−#: Shell.qml:399
252+#: Shell.qml:429
245#, qt-format
253#, qt-format
246msgid "Please enter %1"
254msgid "Please enter %1"
247msgstr ""
255msgstr ""
tests/autopilot/unity8/shell/tests/test_lock_screen.py+2
@@ -178,3 +178,5 @@ class TestLockscreen(UnityTestCase):
178 except AssertionError:
178 except AssertionError:
179 if retries > 0:
179 if retries > 0:
180 self._type_character(character, prompt, retries-1)
180 self._type_character(character, prompt, retries-1)
181+ else:
182+ raise
tests/mocks/AccountsService/AccountsService.cppnew file+33
@@ -0,0 +1,33 @@
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+ * Author: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#include "AccountsService.h"
20+
21+AccountsService::AccountsService(QObject* parent)
22+ : QObject(parent)
23+{
24+}
25+
26+QVariant AccountsService::getUserProperty(const QString &, const QString &)
27+{
28+ return QVariant(false);
29+}
30+
31+void AccountsService::setUserProperty(const QString &, const QString &, const QVariant &)
32+{
33+}
tests/mocks/AccountsService/AccountsService.hnew file+38
@@ -0,0 +1,38 @@
1+/*
2+ * Copyright (C) 2012,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+ * Authors: Gerry Boland <gerry.boland@canonical.com>
17+ * Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#ifndef UNITY_MOCK_ACCOUNTSSERVICE_H
21+#define UNITY_MOCK_ACCOUNTSSERVICE_H
22+
23+#include <QObject>
24+#include <QString>
25+#include <QVariant>
26+
27+class AccountsService: public QObject
28+{
29+ Q_OBJECT
30+
31+public:
32+ explicit AccountsService(QObject *parent = 0);
33+
34+ Q_INVOKABLE QVariant getUserProperty(const QString &user, const QString &property);
35+ Q_INVOKABLE void setUserProperty(const QString &user, const QString &property, const QVariant &value);
36+};
37+
38+#endif
tests/mocks/AccountsService/CMakeLists.txtnew file+19
@@ -0,0 +1,19 @@
1+add_library(MockAccountsService-qml MODULE
2+ AccountsService.cpp
3+ plugin.cpp
4+ )
5+
6+qt5_use_modules(MockAccountsService-qml DBus Qml)
7+
8+# copy files into build directory for shadow builds
9+file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/qmldir"
10+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
11+ )
12+
13+install(TARGETS MockAccountsService-qml
14+ DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/mocks/AccountsService
15+ )
16+
17+install(FILES qmldir
18+ DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/mocks/AccountsService
19+ )
tests/mocks/AccountsService/plugin.cppnew file+36
@@ -0,0 +1,36 @@
1+/*
2+ * Copyright (C) 2012,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+ * Authors: Gerry Boland <gerry.boland@canonical.com>
17+ * Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#include "plugin.h"
21+#include "AccountsService.h"
22+
23+#include <QtQml>
24+
25+static QObject *service_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
26+{
27+ Q_UNUSED(engine)
28+ Q_UNUSED(scriptEngine)
29+ return new AccountsService();
30+}
31+
32+void AccountsServicePlugin::registerTypes(const char *uri)
33+{
34+ Q_ASSERT(uri == QLatin1String("AccountsService"));
35+ qmlRegisterSingletonType<AccountsService>(uri, 0, 1, "AccountsService", service_provider);
36+}
tests/mocks/AccountsService/plugin.hnew file+35
@@ -0,0 +1,35 @@
1+/*
2+ * Copyright (C) 2012,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+ * Authors: Gerry Boland <gerry.boland@canonical.com>
17+ * Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#ifndef MOCK_ACCOUNTSSERVICE_PLUGIN_H
21+#define MOCK_ACCOUNTSSERVICE_PLUGIN_H
22+
23+#include <QQmlEngine>
24+#include <QQmlExtensionPlugin>
25+
26+class AccountsServicePlugin : public QQmlExtensionPlugin
27+{
28+ Q_OBJECT
29+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
30+
31+public:
32+ void registerTypes(const char *uri);
33+};
34+
35+#endif
tests/mocks/AccountsService/qmldirnew file+2
@@ -0,0 +1,2 @@
1+module AccountsService
2+plugin MockAccountsService-qml
tests/mocks/CMakeLists.txt+1
@@ -1,3 +1,4 @@
1+add_subdirectory(AccountsService)
1add_subdirectory(GSettings.1.0)
2add_subdirectory(GSettings.1.0)
2add_subdirectory(HudClient)
3add_subdirectory(HudClient)
3add_subdirectory(libusermetrics)
4add_subdirectory(libusermetrics)
tests/mocks/LightDM/demo/GreeterPrivate.cpp+4−2
@@ -55,11 +55,13 @@ void GreeterPrivate::handleRespond(const QString &response)
55 QSettings settings(QDir::homePath() + "/.unity8-greeter-demo", QSettings::NativeFormat);
55 QSettings settings(QDir::homePath() + "/.unity8-greeter-demo", QSettings::NativeFormat);
56 QVariant password = settings.value("password", "none");
56 QVariant password = settings.value("password", "none");
57
57
58+ QString passwordValue;
58 if (password == "pin") {
59 if (password == "pin") {
59− authenticated = (response == "1234");
60+ passwordValue = settings.value("passwordValue", "1234").toString();
60 } else {
61 } else {
61− authenticated = (response == "password");
62+ passwordValue = settings.value("passwordValue", "password").toString();
62 }
63 }
64+ authenticated = (response == passwordValue);
63 Q_EMIT q->authenticationComplete();
65 Q_EMIT q->authenticationComplete();
64}
66}
65
67
tests/mocks/Unity/CMakeLists.txt+2
@@ -17,6 +17,8 @@ add_definitions(-DQT_NO_KEYWORDS)
17
17
18set(UnityQML_SOURCES
18set(UnityQML_SOURCES
19 ${CMAKE_SOURCE_DIR}/plugins/Unity/categoryresults.cpp
19 ${CMAKE_SOURCE_DIR}/plugins/Unity/categoryresults.cpp
20+ fake_applications_scope.cpp
21+ fake_preview.cpp
20 fake_scope.cpp
22 fake_scope.cpp
21 fake_scopes.cpp
23 fake_scopes.cpp
22 fake_categories.cpp
24 fake_categories.cpp
tests/mocks/Unity/Launcher/CMakeLists.txt+2
@@ -1,6 +1,8 @@
1include(FindPkgConfig)
1include(FindPkgConfig)
2pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=2)
2pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=2)
3
3
4+add_definitions(-DTOP_SRCDIR="${CMAKE_SOURCE_DIR}")
5+
4include_directories(
6include_directories(
5 ${CMAKE_CURRENT_SOURCE_DIR}
7 ${CMAKE_CURRENT_SOURCE_DIR}
6)
8)
tests/mocks/Unity/Launcher/MockLauncherItem.cpp+17−1
@@ -27,12 +27,13 @@ MockLauncherItem::MockLauncherItem(const QString &appId, const QString& desktopF
27 m_appId(appId),
27 m_appId(appId),
28 m_desktopFile(desktopFile),
28 m_desktopFile(desktopFile),
29 m_name(name),
29 m_name(name),
30− m_icon(icon),
30+ m_icon(TOP_SRCDIR "/graphics/applicationIcons/" + icon + ".png"),
31 m_pinned(false),
31 m_pinned(false),
32 m_running(false),
32 m_running(false),
33 m_recent(false),
33 m_recent(false),
34 m_progress(-1),
34 m_progress(-1),
35 m_count(0),
35 m_count(0),
36+ m_focused(false),
36 m_quickList(new MockQuickListModel(this))
37 m_quickList(new MockQuickListModel(this))
37{
38{
38
39
@@ -128,6 +129,21 @@ void MockLauncherItem::setCount(int count)
128 }
129 }
129}
130}
130
131
132+bool MockLauncherItem::focused() const
133+{
134+ return m_focused;
135+}
136+
137+void MockLauncherItem::setFocused(bool focused)
138+{
139+ if (m_focused != focused)
140+ {
141+ m_focused = focused;
142+ Q_EMIT focusedChanged(focused);
143+ }
144+}
145+
146+
131unity::shell::launcher::QuickListModelInterface *MockLauncherItem::quickList() const
147unity::shell::launcher::QuickListModelInterface *MockLauncherItem::quickList() const
132{
148{
133 return m_quickList;
149 return m_quickList;
tests/mocks/Unity/Launcher/MockLauncherItem.h+4
@@ -52,6 +52,9 @@ public:
52 int count() const;
52 int count() const;
53 void setCount(int count);
53 void setCount(int count);
54
54
55+ bool focused() const;
56+ void setFocused(bool focused);
57+
55 unity::shell::launcher::QuickListModelInterface *quickList() const;
58 unity::shell::launcher::QuickListModelInterface *quickList() const;
56
59
57private:
60private:
@@ -64,6 +67,7 @@ private:
64 bool m_recent;
67 bool m_recent;
65 int m_progress;
68 int m_progress;
66 int m_count;
69 int m_count;
70+ bool m_focused;
67 MockQuickListModel *m_quickList;
71 MockQuickListModel *m_quickList;
68};
72};
69
73
tests/mocks/Unity/Launcher/MockLauncherModel.cpp+9
@@ -25,6 +25,7 @@ MockLauncherModel::MockLauncherModel(QObject* parent): LauncherModelInterface(pa
25 MockLauncherItem *item = new MockLauncherItem("phone-app", "/usr/share/applications/phone-app.desktop", "Phone", "phone-app", this);
25 MockLauncherItem *item = new MockLauncherItem("phone-app", "/usr/share/applications/phone-app.desktop", "Phone", "phone-app", this);
26 item->setProgress(0);
26 item->setProgress(0);
27 m_list.append(item);
27 m_list.append(item);
28+ item->setFocused(true);
28 item = new MockLauncherItem("camera-app", "/usr/share/applications/camera-app.desktop", "Camera", "camera", this);
29 item = new MockLauncherItem("camera-app", "/usr/share/applications/camera-app.desktop", "Camera", "camera", this);
29 item->setProgress(10);
30 item->setProgress(10);
30 m_list.append(item);
31 m_list.append(item);
@@ -49,6 +50,7 @@ MockLauncherModel::MockLauncherModel(QObject* parent): LauncherModelInterface(pa
49 item = new MockLauncherItem("notes-app", "/usr/share/applications/notes-app.desktop", "Notepad", "notepad", this);
50 item = new MockLauncherItem("notes-app", "/usr/share/applications/notes-app.desktop", "Notepad", "notepad", this);
50 item->setProgress(50);
51 item->setProgress(50);
51 item->setCount(5);
52 item->setCount(5);
53+ item->setFocused(true);
52 m_list.append(item);
54 m_list.append(item);
53 item = new MockLauncherItem("calendar-app", "/usr/share/applications/calendar-app.desktop","Calendar", "calendar", this);
55 item = new MockLauncherItem("calendar-app", "/usr/share/applications/calendar-app.desktop","Calendar", "calendar", this);
54 m_list.append(item);
56 m_list.append(item);
@@ -85,6 +87,8 @@ QVariant MockLauncherModel::data(const QModelIndex& index, int role) const
85 return item->progress();
87 return item->progress();
86 case RoleCount:
88 case RoleCount:
87 return item->count();
89 return item->count();
90+ case RoleFocused:
91+ return item->focused();
88 }
92 }
89
93
90 return QVariant();
94 return QVariant();
@@ -180,3 +184,8 @@ void MockLauncherModel::setUser(const QString &username)
180 Q_UNUSED(username)
184 Q_UNUSED(username)
181 // TODO: implement this...
185 // TODO: implement this...
182}
186}
187+
188+void MockLauncherModel::applicationFocused(const QString &appId)
189+{
190+ Q_UNUSED(appId)
191+}
tests/mocks/Unity/Launcher/MockLauncherModel.h+1
@@ -44,6 +44,7 @@ public:
44 Q_INVOKABLE void requestRemove(const QString &appId);
44 Q_INVOKABLE void requestRemove(const QString &appId);
45 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
45 Q_INVOKABLE void quickListActionInvoked(const QString &appId, int actionIndex);
46 Q_INVOKABLE void setUser(const QString &username);
46 Q_INVOKABLE void setUser(const QString &username);
47+ Q_INVOKABLE void applicationFocused(const QString &appId);
47
48
48Q_SIGNALS:
49Q_SIGNALS:
49 void quickListTriggered(const QString &appId, int index);
50 void quickListTriggered(const QString &appId, int index);
tests/mocks/Unity/fake_applications_scope.cppnew file+68
@@ -0,0 +1,68 @@
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+#include "fake_applications_scope.h"
18+
19+static const gchar * categories_model_schema[] = {
20+ "s", //ID
21+ "s", // DISPLAY_NAME
22+ "s", // ICON_HINT
23+ "s", // RENDERER_NAME
24+ "a{sv}" // HINTS
25+};
26+
27+ApplicationsScope::ApplicationsScope(bool visible, QObject* parent)
28+ : Scope(parent)
29+{
30+ m_id = "applications.scope";
31+ m_name = "Applications";
32+ m_visible = visible;
33+ m_categories->setModel(createCategoriesModel());
34+}
35+
36+DeeModel* ApplicationsScope::createCategoriesModel()
37+{
38+ DeeModel* category_model = dee_sequence_model_new();
39+ dee_model_set_schema_full(category_model, categories_model_schema, G_N_ELEMENTS(categories_model_schema));
40+ GVariant* hints = g_variant_new_array(g_variant_type_element(G_VARIANT_TYPE_VARDICT), NULL, 0);
41+
42+ GVariant* children[1];
43+ children[0] = g_variant_new_dict_entry(g_variant_new_string("content-type"),
44+ g_variant_new_variant(g_variant_new_string("apps")));
45+ GVariant* recentHints = g_variant_new_array(g_variant_type_element(G_VARIANT_TYPE_VARDICT), children, 1);
46+ dee_model_append(category_model,
47+ "recent",
48+ "Recent",
49+ "gtk-apply",
50+ "special",
51+ recentHints);
52+
53+ dee_model_append(category_model,
54+ "installed",
55+ "Installed",
56+ "gtk-apply",
57+ "grid",
58+ hints);
59+
60+ dee_model_append(category_model,
61+ "suggested",
62+ "Suggested",
63+ "gtk-apply",
64+ "grid",
65+ hints);
66+
67+ return category_model;
68+}
tests/mocks/Unity/fake_applications_scope.hnew file+33
@@ -0,0 +1,33 @@
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+#ifndef FAKE_APPLICATIONS_SCOPE_H
18+#define FAKE_APPLICATIONS_SCOPE_H
19+
20+#include "fake_scope.h"
21+
22+class ApplicationsScope : public Scope
23+{
24+ Q_OBJECT
25+
26+public:
27+ ApplicationsScope(bool visible, QObject* parent = 0);
28+
29+private:
30+ DeeModel* createCategoriesModel();
31+};
32+
33+#endif // FAKE_APPLICATIONS_SCOPE_H
tests/mocks/Unity/fake_categories.cpp+84−12
@@ -24,11 +24,20 @@
24
24
25#define CATEGORY_COLUMN 2
25#define CATEGORY_COLUMN 2
26
26
27+// TODO: use something from libunity once it's public
28+enum CategoryColumn {
29+ ID,
30+ DISPLAY_NAME,
31+ ICON_HINT,
32+ RENDERER_NAME,
33+ HINTS
34+};
35+
27Categories::Categories(QObject* parent)
36Categories::Categories(QObject* parent)
28 : DeeListModel(parent)
37 : DeeListModel(parent)
29{
38{
30 // FIXME: need to clean up unused filters on countChanged
39 // FIXME: need to clean up unused filters on countChanged
31− m_roles[Categories::RoleId] = "id";
40+ m_roles[Categories::RoleCategoryId] = "categoryId";
32 m_roles[Categories::RoleName] = "name";
41 m_roles[Categories::RoleName] = "name";
33 m_roles[Categories::RoleIcon] = "icon";
42 m_roles[Categories::RoleIcon] = "icon";
34 m_roles[Categories::RoleRenderer] = "renderer";
43 m_roles[Categories::RoleRenderer] = "renderer";
@@ -36,7 +45,6 @@ Categories::Categories(QObject* parent)
36 m_roles[Categories::RoleHints] = "hints";
45 m_roles[Categories::RoleHints] = "hints";
37 m_roles[Categories::RoleResults] = "results";
46 m_roles[Categories::RoleResults] = "results";
38 m_roles[Categories::RoleCount] = "count";
47 m_roles[Categories::RoleCount] = "count";
39− m_roles[Categories::RoleCategoryIndex] = "categoryIndex";
40
48
41 // TODO This should not be needed but accumulatting the count changes
49 // TODO This should not be needed but accumulatting the count changes
42 // makes the visualization more stable and also makes crashes on fast
50 // makes the visualization more stable and also makes crashes on fast
@@ -74,6 +82,25 @@ Categories::onCountChanged()
74 }
82 }
75}
83}
76
84
85+void Categories::onRowCountChanged()
86+{
87+ QAbstractItemModel* model = qobject_cast<QAbstractItemModel*>(sender());
88+ // find the corresponding category index
89+ for (auto iter = m_overriddenCategories.begin(); iter != m_overriddenCategories.end(); ++iter) {
90+ if (iter.value() == model) {
91+ for (int i = 0; i < rowCount(); i++) {
92+ auto id = data(index(i), RoleCategoryId).toString();
93+ if (id != iter.key()) continue;
94+ QVector<int> roles;
95+ roles.append(RoleCount);
96+ QModelIndex changedIndex = index(i);
97+ Q_EMIT dataChanged(changedIndex, changedIndex, roles);
98+ break;
99+ }
100+ }
101+ }
102+}
103+
77void
104void
78Categories::onEmitCountChanged()
105Categories::onEmitCountChanged()
79{
106{
@@ -93,6 +120,41 @@ Categories::roleNames() const
93 return m_roles;
120 return m_roles;
94}
121}
95
122
123+void Categories::onOverrideModelDestroyed()
124+{
125+ QObject* model = sender();
126+ auto iter = m_overriddenCategories.begin();
127+ while (iter != m_overriddenCategories.end()) {
128+ if (iter.value() == model) {
129+ iter = m_overriddenCategories.erase(iter);
130+ continue;
131+ }
132+ ++iter;
133+ }
134+}
135+
136+void Categories::overrideResults(const QString& categoryId, QAbstractItemModel* model)
137+{
138+ m_overriddenCategories[categoryId] = model;
139+ // watch the model
140+ connect(model, &QObject::destroyed, this, &Categories::onOverrideModelDestroyed);
141+ connect(model, &QAbstractItemModel::rowsInserted, this, &Categories::onRowCountChanged);
142+ connect(model, &QAbstractItemModel::rowsRemoved, this, &Categories::onRowCountChanged);
143+ connect(model, &QAbstractItemModel::modelReset, this, &Categories::onRowCountChanged);
144+
145+ // emit the dataChanged signal if the category is already in the model
146+ for (int i = 0; i < rowCount(); i++) {
147+ auto id = data(index(i), RoleCategoryId).toString();
148+ if (id != categoryId) continue;
149+ QVector<int> roles;
150+ roles.append(RoleCount);
151+ roles.append(RoleResults);
152+ QModelIndex changedIndex = index(i);
153+ Q_EMIT dataChanged(changedIndex, changedIndex, roles);
154+ break;
155+ }
156+}
157+
96void Categories::setResultModel(DeeModel* model)
158void Categories::setResultModel(DeeModel* model)
97{
159{
98 // FIXME: should ref it
160 // FIXME: should ref it
@@ -154,27 +216,37 @@ Categories::data(const QModelIndex& index, int role) const
154 }
216 }
155
217
156 switch (role) {
218 switch (role) {
157− case RoleId:
219+ case RoleCategoryId:
158− return DeeListModel::data(index, 0); //ID
220+ return DeeListModel::data(index, CategoryColumn::ID);
159 case RoleName:
221 case RoleName:
160− return DeeListModel::data(index, 1); //DISPLAY_NAME
222+ return DeeListModel::data(index, CategoryColumn::DISPLAY_NAME);
161 case RoleIcon:
223 case RoleIcon:
162− return DeeListModel::data(index, 2); //ICON_HINT
224+ return DeeListModel::data(index, CategoryColumn::ICON_HINT);
163 case RoleRenderer:
225 case RoleRenderer:
164− return DeeListModel::data(index, 3); //RENDERER_NAME
226+ return DeeListModel::data(index, CategoryColumn::RENDERER_NAME);
165 case RoleContentType:
227 case RoleContentType:
166 {
228 {
167− auto hints = DeeListModel::data(index, 4).toHash();
229+ auto hints = DeeListModel::data(index, CategoryColumn::HINTS).toHash();
168− return hints.contains("content-type") ? hints["content-type"] : QVariant(QString("default"));
230+ return hints.contains("content-type") ? hints["content-type"] : QVariant(QString("default"));
169 }
231 }
170 case RoleHints:
232 case RoleHints:
171− return DeeListModel::data(index, 4); //HINTS
233+ return DeeListModel::data(index, CategoryColumn::HINTS);
172 case RoleResults:
234 case RoleResults:
235+ if (m_overriddenCategories.size() > 0)
236+ {
237+ auto id = DeeListModel::data(index, CategoryColumn::ID).toString();
238+ if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
239+ return QVariant::fromValue(m_overriddenCategories[id]);
240+ }
173 return QVariant::fromValue(getFilter(index.row()));
241 return QVariant::fromValue(getFilter(index.row()));
174 case RoleCount:
242 case RoleCount:
243+ if (m_overriddenCategories.size() > 0)
244+ {
245+ auto id = DeeListModel::data(index, CategoryColumn::ID).toString();
246+ if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
247+ return QVariant::fromValue(m_overriddenCategories[id]->rowCount());
248+ }
175 return QVariant::fromValue(getFilter(index.row())->rowCount());
249 return QVariant::fromValue(getFilter(index.row())->rowCount());
176− case RoleCategoryIndex:
177− return QVariant::fromValue(index.row());
178 default:
250 default:
179 return QVariant();
251 return QVariant();
180 }
252 }
tests/mocks/Unity/fake_categories.h+7−3
@@ -34,17 +34,18 @@ class Categories : public DeeListModel
34public:
34public:
35 Categories(QObject* parent = 0);
35 Categories(QObject* parent = 0);
36 enum Roles {
36 enum Roles {
37− RoleId,
37+ RoleCategoryId,
38 RoleName,
38 RoleName,
39 RoleIcon,
39 RoleIcon,
40 RoleRenderer,
40 RoleRenderer,
41 RoleContentType,
41 RoleContentType,
42 RoleHints,
42 RoleHints,
43 RoleResults,
43 RoleResults,
44− RoleCount,
44+ RoleCount
45− RoleCategoryIndex
46 };
45 };
47
46
47+ Q_INVOKABLE void overrideResults(const QString& categoryId, QAbstractItemModel* model);
48+
48 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
49 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
49
50
50 QHash<int, QByteArray> roleNames() const;
51 QHash<int, QByteArray> roleNames() const;
@@ -54,7 +55,9 @@ public:
54
55
55private Q_SLOTS:
56private Q_SLOTS:
56 void onCountChanged();
57 void onCountChanged();
58+ void onRowCountChanged();
57 void onEmitCountChanged();
59 void onEmitCountChanged();
60+ void onOverrideModelDestroyed();
58
61
59private:
62private:
60 DeeModel* getResultsForCategory(unsigned index) const;
63 DeeModel* getResultsForCategory(unsigned index) const;
@@ -64,6 +67,7 @@ private:
64 QTimer m_timer;
67 QTimer m_timer;
65 QSet<DeeListModel*> m_timerFilters;
68 QSet<DeeListModel*> m_timerFilters;
66 QHash<int, QByteArray> m_roles;
69 QHash<int, QByteArray> m_roles;
70+ QMap<QString, QAbstractItemModel*> m_overriddenCategories;
67 mutable QMap<int, DeeListModel*> m_filters;
71 mutable QMap<int, DeeListModel*> m_filters;
68};
72};
69
73
tests/mocks/Unity/fake_preview.cppnew file+66
@@ -0,0 +1,66 @@
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+#include "fake_preview.h"
18+
19+QString Preview::rendererName() const
20+{
21+ return "foo";
22+}
23+
24+QString Preview::title() const
25+{
26+ return "Title";
27+}
28+
29+QString Preview::subtitle() const
30+{
31+ return "Subtitle";
32+}
33+
34+QString Preview::description() const
35+{
36+ return "Description";
37+}
38+
39+QVariant Preview::actions()
40+{
41+ return QVariant();
42+}
43+
44+QVariant Preview::infoHints()
45+{
46+ return QVariant();
47+}
48+
49+QVariantMap Preview::infoHintsHash() const
50+{
51+ return QVariantMap();
52+}
53+
54+QString Preview::image() const
55+{
56+ return "";
57+}
58+
59+QString Preview::imageSourceUri() const
60+{
61+ return "";
62+}
63+
64+void Preview::execute(const QString& actionId, const QHash<QString, QVariant>& hints)
65+{
66+}
tests/mocks/Unity/fake_preview.hnew file+62
@@ -0,0 +1,62 @@
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+#ifndef FAKE_PREVIEW_H
18+#define FAKE_PREVIEW_H
19+
20+// Qt
21+#include <QObject>
22+#include <QString>
23+#include <QMetaType>
24+#include <QList>
25+#include <QVariantMap>
26+
27+class Q_DECL_EXPORT Preview : public QObject
28+{
29+ Q_OBJECT
30+
31+ Q_PROPERTY(QString rendererName READ rendererName NOTIFY previewChanged)
32+ Q_PROPERTY(QString title READ title NOTIFY previewChanged)
33+ Q_PROPERTY(QString subtitle READ subtitle NOTIFY previewChanged)
34+ Q_PROPERTY(QString description READ description NOTIFY previewChanged)
35+ Q_PROPERTY(QVariant actions READ actions NOTIFY previewChanged)
36+ Q_PROPERTY(QVariant infoHints READ infoHints NOTIFY previewChanged)
37+ Q_PROPERTY(QVariantMap infoMap READ infoHintsHash NOTIFY previewChanged)
38+ Q_PROPERTY(QString image READ image NOTIFY previewChanged)
39+ Q_PROPERTY(QString imageSourceUri READ imageSourceUri NOTIFY previewChanged)
40+
41+public:
42+ explicit Preview(QObject *parent = 0);
43+
44+ QString rendererName() const;
45+ QString title() const;
46+ QString subtitle() const;
47+ QString description() const;
48+ QVariant actions();
49+ QVariant infoHints();
50+ QVariantMap infoHintsHash() const;
51+ QString image() const;
52+ QString imageSourceUri() const;
53+
54+ Q_INVOKABLE void execute(const QString& actionId, const QHash<QString, QVariant>& hints);
55+
56+Q_SIGNALS:
57+ void previewChanged();
58+};
59+
60+Q_DECLARE_METATYPE(Preview *)
61+
62+#endif // FAKE_PREVIEW_H
tests/mocks/Unity/fake_scope.cpp+33−9
@@ -20,6 +20,8 @@
20#include <dee.h>
20#include <dee.h>
21#include "paths.h"
21#include "paths.h"
22
22
23+#include "fake_preview.h"
24+
23static DeeModel* create_categories_model(unsigned category_count);
25static DeeModel* create_categories_model(unsigned category_count);
24static DeeModel* create_results_model(unsigned category_count, unsigned result_count);
26static DeeModel* create_results_model(unsigned category_count, unsigned result_count);
25
27
@@ -127,6 +129,36 @@ void Scope::setNoResultsHint(const QString& str) {
127 }
129 }
128}
130}
129
131
132+void Scope::activate(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
133+ const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
134+ const QVariant &comment, const QVariant &dnd_uri, const QVariant &metadata)
135+{
136+ Q_UNUSED(uri);
137+ Q_UNUSED(icon_hint);
138+ Q_UNUSED(category);
139+ Q_UNUSED(result_type);
140+ Q_UNUSED(mimetype);
141+ Q_UNUSED(title);
142+ Q_UNUSED(comment);
143+ Q_UNUSED(dnd_uri);
144+ Q_UNUSED(metadata);
145+}
146+
147+void Scope::preview(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
148+ const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
149+ const QVariant &comment, const QVariant &dnd_uri, const QVariant &metadata)
150+{
151+ Q_UNUSED(uri);
152+ Q_UNUSED(icon_hint);
153+ Q_UNUSED(category);
154+ Q_UNUSED(result_type);
155+ Q_UNUSED(mimetype);
156+ Q_UNUSED(title);
157+ Q_UNUSED(comment);
158+ Q_UNUSED(dnd_uri);
159+ Q_UNUSED(metadata);
160+}
161+
130static const gchar * categories_model_schema[] = {
162static const gchar * categories_model_schema[] = {
131 "s", //ID
163 "s", //ID
132 "s", // DISPLAY_NAME
164 "s", // DISPLAY_NAME
@@ -168,14 +200,6 @@ static const gchar * results_model_schema[] = {
168 "a{sv}" // METADATA
200 "a{sv}" // METADATA
169};
201};
170
202
171−static const gchar * icons[] = {
172− "Applications.png",
173− "Home.png",
174− "Music.png",
175− "People.png",
176− "Videos.png",
177−};
178−
179DeeModel* create_results_model(unsigned category_count, unsigned result_count) {
203DeeModel* create_results_model(unsigned category_count, unsigned result_count) {
180 DeeModel* results_model = dee_sequence_model_new();
204 DeeModel* results_model = dee_sequence_model_new();
181 dee_model_set_schema_full(results_model, results_model_schema, G_N_ELEMENTS(results_model_schema));
205 dee_model_set_schema_full(results_model, results_model_schema, G_N_ELEMENTS(results_model_schema));
@@ -187,7 +211,7 @@ DeeModel* create_results_model(unsigned category_count, unsigned result_count) {
187
211
188 dee_model_append(results_model,
212 dee_model_append(results_model,
189 ("uri://result."+std::to_string(i)).c_str(),
213 ("uri://result."+std::to_string(i)).c_str(),
190− (shellAppDirectory() + "Dash/graphics/scopeIcons/" + (icons[i%G_N_ELEMENTS(icons)])).toLatin1().data(),
214+ (shellAppDirectory() + "graphics/applicationIcons/dash.png").toLatin1().data(),
191 category,
215 category,
192 0,
216 0,
193 "application/x-desktop",
217 "application/x-desktop",
tests/mocks/Unity/fake_scope.h+15−1
@@ -21,6 +21,8 @@
21#include <QObject>
21#include <QObject>
22#include "fake_categories.h"
22#include "fake_categories.h"
23
23
24+class Preview;
25+
24class Scope : public QObject
26class Scope : public QObject
25{
27{
26 Q_OBJECT
28 Q_OBJECT
@@ -63,6 +65,13 @@ public:
63 void setNoResultsHint(const QString& hint);
65 void setNoResultsHint(const QString& hint);
64 void setFormFactor(const QString& form_factor);
66 void setFormFactor(const QString& form_factor);
65
67
68+ Q_INVOKABLE void activate(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
69+ const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
70+ const QVariant &comment, const QVariant &dnd_uri, const QVariant &metadata);
71+ Q_INVOKABLE void preview(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
72+ const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
73+ const QVariant &comment, const QVariant &dnd_uri, const QVariant &metadata);
74+
66Q_SIGNALS:
75Q_SIGNALS:
67 void idChanged(const QString&);
76 void idChanged(const QString&);
68 void nameChanged(const QString&);
77 void nameChanged(const QString&);
@@ -78,7 +87,12 @@ Q_SIGNALS:
78 void noResultsHintChanged();
87 void noResultsHintChanged();
79 void formFactorChanged();
88 void formFactorChanged();
80
89
81−private:
90+ // signals triggered by activate(..) or preview(..) requests.
91+ void previewReady(Preview *preview);
92+ void activateApplication(const QString &desktop);
93+
94+protected:
95+
82 QString m_id;
96 QString m_id;
83 QString m_iconHint;
97 QString m_iconHint;
84 QString m_description;
98 QString m_description;
tests/mocks/Unity/fake_scopes.cpp+4−1
@@ -19,6 +19,9 @@
19// Self
19// Self
20#include "fake_scopes.h"
20#include "fake_scopes.h"
21
21
22+// Local
23+#include "fake_applications_scope.h"
24+
22// TODO: Implement remaining pieces, like Categories (i.e. LensView now gives warnings)
25// TODO: Implement remaining pieces, like Categories (i.e. LensView now gives warnings)
23
26
24// Qt
27// Qt
@@ -53,7 +56,7 @@ void Scopes::updateScopes()
53 addScope(new Scope("MockScope1", "People", true, this));
56 addScope(new Scope("MockScope1", "People", true, this));
54 addScope(new Scope("MockScope2", "Music", false, this));
57 addScope(new Scope("MockScope2", "Music", false, this));
55 addScope(new Scope("home.scope", "Home", true, this));
58 addScope(new Scope("home.scope", "Home", true, this));
56− addScope(new Scope("applications.scope", "Applications", true, this));
59+ addScope(new ApplicationsScope(true, this));
57 addScope(new Scope("MockScope5", "Videos", true, this));
60 addScope(new Scope("MockScope5", "Videos", true, this));
58
61
59 if (!m_loaded) {
62 if (!m_loaded) {
tests/plugins/AccountsService/AccountsServer.cppnew file+35
@@ -0,0 +1,35 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ *
17+ * Authored by: Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#include "AccountsServer.h"
21+
22+AccountsServer::AccountsServer(QObject *parent)
23+ : QObject(parent)
24+{
25+}
26+
27+QDBusObjectPath AccountsServer::FindUserByName(const QString &user)
28+{
29+ if (user == "testuser") {
30+ return QDBusObjectPath("/user");
31+ } else {
32+ sendErrorReply(QDBusError::InvalidArgs, "Bad user");
33+ return QDBusObjectPath("/");
34+ }
35+}
tests/plugins/AccountsService/AccountsServer.hnew file+39
@@ -0,0 +1,39 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ *
17+ * Authored by: Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#ifndef UNITY_ACCOUNTSSERVER_H
21+#define UNITY_ACCOUNTSSERVER_H
22+
23+#include <QDBusContext>
24+#include <QDBusObjectPath>
25+#include <QObject>
26+#include <QString>
27+
28+class AccountsServer: public QObject, protected QDBusContext
29+{
30+ Q_OBJECT
31+
32+public:
33+ explicit AccountsServer(QObject *parent = 0);
34+
35+public Q_SLOTS:
36+ QDBusObjectPath FindUserByName(const QString &user);
37+};
38+
39+#endif
tests/plugins/AccountsService/CMakeLists.txtnew file+40
@@ -0,0 +1,40 @@
1+macro(make_dbus_class NAME INTERFACE)
2+ if(${CMAKE_CURRENT_SOURCE_DIR}/interfaces.xml IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/${NAME}Adaptor.h)
3+ execute_process(COMMAND qdbusxml2cpp -c ${NAME}Adaptor -a ${CMAKE_CURRENT_BINARY_DIR}/${NAME}Adaptor ${CMAKE_CURRENT_SOURCE_DIR}/interfaces.xml ${INTERFACE})
4+ endif()
5+endmacro(make_dbus_class)
6+
7+make_dbus_class(Accounts org.freedesktop.Accounts)
8+make_dbus_class(Properties org.freedesktop.DBus.Properties)
9+
10+include_directories(
11+ ${CMAKE_CURRENT_BINARY_DIR}
12+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService
13+ )
14+
15+add_definitions(-DSM_BUSNAME=sessionBus)
16+
17+add_executable(mock-server
18+ ${CMAKE_CURRENT_BINARY_DIR}/AccountsAdaptor.cpp
19+ ${CMAKE_CURRENT_BINARY_DIR}/PropertiesAdaptor.cpp
20+ server.cpp
21+ AccountsServer.cpp
22+ PropertiesServer.cpp
23+ )
24+qt5_use_modules(mock-server Core DBus)
25+
26+add_executable(test-accountsservice
27+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsService.cpp
28+ client.cpp
29+ )
30+qt5_use_modules(test-accountsservice Core DBus Test)
31+
32+add_test(NAME test-accountsservice
33+ COMMAND dbus-test-runner
34+ --task ${CMAKE_CURRENT_BINARY_DIR}/mock-server
35+ --task-name server
36+ --ignore-return
37+ --task ${CMAKE_CURRENT_BINARY_DIR}/test-accountsservice
38+ --task-name client
39+ --wait-for org.freedesktop.Accounts
40+ )
tests/plugins/AccountsService/PropertiesServer.cppnew file+45
@@ -0,0 +1,45 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ *
17+ * Authored by: Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#include "PropertiesServer.h"
21+
22+PropertiesServer::PropertiesServer(QObject *parent)
23+ : QObject(parent),
24+ edge_demo(true)
25+{
26+}
27+
28+QDBusVariant PropertiesServer::Get(const QString &interface, const QString &property)
29+{
30+ if (interface == "com.canonical.unity.AccountsService" && property == "demo-edges") {
31+ return QDBusVariant(QVariant(edge_demo));
32+ } else {
33+ sendErrorReply(QDBusError::InvalidArgs, "Bad interface or property");
34+ return QDBusVariant(QVariant());
35+ }
36+}
37+
38+void PropertiesServer::Set(const QString &interface, const QString &property, const QDBusVariant &variant)
39+{
40+ if (interface == "com.canonical.unity.AccountsService" && property == "demo-edges") {
41+ edge_demo = variant.variant().toBool();
42+ } else {
43+ sendErrorReply(QDBusError::InvalidArgs, "Bad interface or property");
44+ }
45+}
tests/plugins/AccountsService/PropertiesServer.hnew file+44
@@ -0,0 +1,44 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ *
17+ * Authored by: Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#ifndef UNITY_PROPERTIESSERVER_H
21+#define UNITY_PROPERTIESSERVER_H
22+
23+#include "PropertiesServer.h"
24+#include <QDBusContext>
25+#include <QDBusVariant>
26+#include <QObject>
27+#include <QString>
28+
29+class PropertiesServer: public QObject, protected QDBusContext
30+{
31+ Q_OBJECT
32+
33+public:
34+ explicit PropertiesServer(QObject *parent = 0);
35+
36+public Q_SLOTS:
37+ QDBusVariant Get(const QString &interface, const QString &property);
38+ void Set(const QString &interface, const QString &property, const QDBusVariant &variant);
39+
40+private:
41+ bool edge_demo;
42+};
43+
44+#endif
tests/plugins/AccountsService/client.cppnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ *
17+ * Authored by: Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#include "AccountsService.h"
21+#include <QSignalSpy>
22+#include <QTest>
23+
24+class AccountsServiceTest : public QObject
25+{
26+ Q_OBJECT
27+
28+private Q_SLOTS:
29+
30+ void testInvalids()
31+ {
32+ // Test various invalid calls
33+ AccountsService session;
34+ QCOMPARE(session.getUserProperty("NOPE", "demo-edges"), QVariant());
35+ QCOMPARE(session.getUserProperty("testuser", "NOPE"), QVariant());
36+ }
37+
38+ void testGetSet()
39+ {
40+ AccountsService session;
41+ QCOMPARE(session.getUserProperty("testuser", "demo-edges"), QVariant(true));
42+ session.setUserProperty("testuser", "demo-edges", QVariant(false));
43+ QCOMPARE(session.getUserProperty("testuser", "demo-edges"), QVariant(false));
44+ }
45+};
46+
47+QTEST_MAIN(AccountsServiceTest)
48+
49+#include "client.moc"
tests/plugins/AccountsService/interfaces.xmlnew file+20
@@ -0,0 +1,20 @@
1+<node>
2+ <interface name="org.freedesktop.DBus.Properties">
3+ <method name="Get">
4+ <arg name="interface" type="s" direction="in" />
5+ <arg name="property" type="s" direction="in" />
6+ <arg name="value" type="v" direction="out" />
7+ </method>
8+ <method name="Set">
9+ <arg name="interface" type="s" direction="in" />
10+ <arg name="property" type="s" direction="in" />
11+ <arg name="value" type="v" direction="in" />
12+ </method>
13+ </interface>
14+ <interface name="org.freedesktop.Accounts">
15+ <method name="FindUserByName">
16+ <arg name="user" type="s" direction="in" />
17+ <arg name="path" type="o" direction="out" />
18+ </method>
19+ </interface>
20+</node>
tests/plugins/AccountsService/server.cppnew file+46
@@ -0,0 +1,46 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it
5+ * under the terms of the GNU General Public License version 3, as published
6+ * by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but
9+ * WITHOUT ANY WARRANTY; without even the implied warranties of
10+ * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
11+ * PURPOSE. See the GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * version 3 along with this program. If not, see
15+ * <http://www.gnu.org/licenses/>
16+ *
17+ * Authored by: Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#include "AccountsAdaptor.h"
21+#include "AccountsServer.h"
22+#include "PropertiesAdaptor.h"
23+#include "PropertiesServer.h"
24+#include <QCoreApplication>
25+
26+int main(int argc, char *argv[])
27+{
28+ QCoreApplication a(argc, argv);
29+
30+ auto accounts = new AccountsServer();
31+ new AccountsAdaptor(accounts);
32+
33+ auto props = new PropertiesServer();
34+ new PropertiesAdaptor(props);
35+
36+ // We use the session bus for testing. The real plugin uses the system bus
37+ auto connection = QDBusConnection::sessionBus();
38+ if (!connection.registerObject("/org/freedesktop/Accounts", accounts))
39+ return 1;
40+ if (!connection.registerObject("/user", props))
41+ return 1;
42+ if (!connection.registerService("org.freedesktop.Accounts"))
43+ return 1;
44+
45+ return a.exec();
46+}
tests/plugins/CMakeLists.txt+3−2
@@ -1,4 +1,5 @@
1−add_subdirectory(Utils)
1+add_subdirectory(AccountsService)
2+add_subdirectory(ListViewWithPageHeader)
2add_subdirectory(Ubuntu)
3add_subdirectory(Ubuntu)
3add_subdirectory(Unity)
4add_subdirectory(Unity)
4−add_subdirectory(ListViewWithPageHeader)
5+add_subdirectory(Utils)
tests/plugins/Unity/CMakeLists.txt+1
@@ -1,4 +1,5 @@
1add_subdirectory(Indicators)
1add_subdirectory(Indicators)
2+add_subdirectory(Launcher)
2
3
3pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0)
4pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0)
4pkg_check_modules(LIBUNITYPROTO REQUIRED unity-protocol-private)
5pkg_check_modules(LIBUNITYPROTO REQUIRED unity-protocol-private)
tests/plugins/Unity/Launcher/CMakeLists.txtnew file+59
@@ -0,0 +1,59 @@
1+pkg_check_modules(GSETTINGS_QT REQUIRED gsettings-qt)
2+pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=2)
3+
4+include_directories(
5+ ${CMAKE_CURRENT_BINARY_DIR}
6+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService
7+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher
8+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/backend
9+ ${GSETTINGS_QT_INCLUDE_DIRS}
10+ )
11+
12+add_definitions(-DSM_BUSNAME=sessionBus)
13+add_definitions(-DSRCDIR="${CMAKE_CURRENT_SOURCE_DIR}")
14+add_definitions(-DLAUNCHER_TESTING)
15+
16+### LauncherBackendTest
17+set(testBackendCommand ${CMAKE_CURRENT_BINARY_DIR}/launcherbackendtestExec
18+ -o ${CMAKE_BINARY_DIR}/launcherbackendtest.xml,xunitxml
19+ -o -,txt)
20+add_test(NAME launcherbackendtest COMMAND ${testBackendCommand})
21+add_custom_target(launcherbackendtest ${testBackendCommand})
22+add_executable(launcherbackendtestExec
23+ launcherbackendtest.cpp
24+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsService.cpp
25+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/backend/launcherbackend.cpp
26+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/common/quicklistentry.cpp
27+ )
28+target_link_libraries(launcherbackendtestExec ${GSETTINGS_QT_LDFLAGS})
29+qt5_use_modules(launcherbackendtestExec Test Core DBus)
30+
31+### LauncherModelTest
32+set(testModelCommand ${CMAKE_CURRENT_BINARY_DIR}/launchermodeltestExec
33+ -o ${CMAKE_BINARY_DIR}/launchermodeltest.xml,xunitxml
34+ -o -,txt)
35+add_test(NAME launchermodeltest COMMAND ${testModelCommand})
36+add_custom_target(launchermodeltest ${testModelCommand})
37+add_executable(launchermodeltestExec
38+ launchermodeltest.cpp
39+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/launchermodel.cpp
40+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/launcheritem.cpp
41+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/quicklistmodel.cpp
42+ ${CMAKE_SOURCE_DIR}/plugins/AccountsService/AccountsService.cpp
43+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/backend/launcherbackend.cpp
44+ ${CMAKE_SOURCE_DIR}/plugins/Unity/Launcher/common/quicklistentry.cpp
45+ ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherItemInterface.h
46+ ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/LauncherModelInterface.h
47+ ${LAUNCHER_API_INCLUDEDIR}/unity/shell/launcher/QuickListModelInterface.h
48+ )
49+target_link_libraries(launchermodeltestExec ${GSETTINGS_QT_LDFLAGS} )
50+qt5_use_modules(launchermodeltestExec Test Core DBus)
51+
52+# copy .desktop files into build directory for shadow builds
53+file(GLOB DESKTOP_FILES *.desktop)
54+
55+foreach(DESKTOP_FILE ${DESKTOP_FILES})
56+ file(COPY "${DESKTOP_FILE}"
57+ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
58+ )
59+endforeach()
tests/plugins/Unity/Launcher/abs-icon.desktopnew file+3
@@ -0,0 +1,3 @@
1+[Desktop Entry]
2+Name=Absolute Icon
3+Icon=/path/to/icon.png
tests/plugins/Unity/Launcher/launcherbackendtest.cppnew file+60
@@ -0,0 +1,60 @@
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 Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Michael Terry <michael.terry@canonical.com>
18+ */
19+
20+#include "launcherbackend.h"
21+
22+#include <QtTest>
23+
24+class LauncherBackendTest : public QObject
25+{
26+ Q_OBJECT
27+
28+private Q_SLOTS:
29+ void testFileNames()
30+ {
31+ LauncherBackend backend(false);
32+
33+ backend.setStoredApplications(QStringList() << "rel-icon" << "abs-icon" << "invalid");
34+ QCOMPARE(backend.storedApplications(), QStringList() << "rel-icon" << "abs-icon");
35+ }
36+
37+ void testPinning()
38+ {
39+ LauncherBackend backend(false);
40+
41+ backend.setStoredApplications(QStringList() << "rel-icon" << "abs-icon");
42+ QCOMPARE(backend.isPinned("rel-icon"), false);
43+ QCOMPARE(backend.isPinned("abs-icon"), false);
44+
45+ backend.setPinned("rel-icon", true);
46+ QCOMPARE(backend.isPinned("rel-icon"), true);
47+
48+ backend.setStoredApplications(QStringList() << "rel-icon" << "abs-icon" << "no-name");
49+ QCOMPARE(backend.isPinned("rel-icon"), true);
50+ QCOMPARE(backend.isPinned("no-name"), false);
51+
52+ backend.setPinned("no-name", true);
53+ backend.setStoredApplications(QStringList() << "rel-icon" << "abs-icon");
54+ QCOMPARE(backend.isPinned("rel-icon"), true);
55+ QCOMPARE(backend.isPinned("no-name"), false); // doesn't exist anymore!
56+ }
57+};
58+
59+QTEST_GUILESS_MAIN(LauncherBackendTest)
60+#include "launcherbackendtest.moc"
tests/plugins/Unity/Launcher/launchermodeltest.cppnew file+146
@@ -0,0 +1,146 @@
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 Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Michael Zanetti <michael.zanetti@canonical.com>
18+ */
19+
20+// unity-api
21+#include <unity/shell/launcher/LauncherModelInterface.h>
22+
23+#include "launcheritem.h"
24+#include "launchermodel.h"
25+
26+#include <QtTest>
27+
28+class LauncherModelTest : public QObject
29+{
30+ Q_OBJECT
31+
32+private:
33+ LauncherModel *launcherModel;
34+
35+private Q_SLOTS:
36+
37+ void initTestCase() {
38+ launcherModel = new LauncherModel(this);
39+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 0);
40+ }
41+
42+ void init() {
43+ qDebug() << "init";
44+ launcherModel->applicationFocused("abs-icon");
45+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
46+
47+ launcherModel->applicationFocused("no-icon.desktop");
48+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
49+
50+ launcherModel->applicationFocused(QString());
51+ }
52+
53+ void cleanup() {
54+ while (launcherModel->rowCount(QModelIndex()) > 0) {
55+ launcherModel->requestRemove(launcherModel->get(0)->appId());
56+ }
57+ }
58+
59+ void testMove() {
60+ QCOMPARE(launcherModel->get(0)->pinned(), false);
61+ QCOMPARE(launcherModel->get(1)->pinned(), false);
62+
63+ LauncherItemInterface *item0BeforeMove = launcherModel->get(0);
64+ LauncherItemInterface *item1BeforeMove = launcherModel->get(1);
65+ launcherModel->move(1, 0);
66+
67+ QCOMPARE(item0BeforeMove, launcherModel->get(1));
68+ QCOMPARE(item1BeforeMove, launcherModel->get(0));
69+
70+ // moved item must be pinned now
71+ QCOMPARE(item0BeforeMove->pinned(), false);
72+ QCOMPARE(item1BeforeMove->pinned(), true);
73+ }
74+
75+ void testPinning() {
76+ QCOMPARE(launcherModel->get(0)->pinned(), false);
77+ QCOMPARE(launcherModel->get(1)->pinned(), false);
78+ launcherModel->pin(launcherModel->get(0)->appId());
79+ QCOMPARE(launcherModel->get(0)->pinned(), true);
80+ QCOMPARE(launcherModel->get(1)->pinned(), false);
81+ }
82+
83+ void testRemove() {
84+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
85+ launcherModel->requestRemove(launcherModel->get(0)->appId());
86+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
87+ }
88+
89+ void testQuickListPinningRemoving() {
90+ // we start with 2 unpinned items
91+ QCOMPARE(launcherModel->get(0)->pinned(), false);
92+ QCOMPARE(launcherModel->get(1)->pinned(), false);
93+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
94+
95+ // find the Pin item in the quicklist
96+ QuickListModel *model = qobject_cast<QuickListModel*>(launcherModel->get(0)->quickList());
97+ int pinActionIndex = -1;
98+ for (int i = 0; i < model->rowCount(QModelIndex()); ++i) {
99+ if (model->get(i).actionId() == "pin_item") {
100+ pinActionIndex = i;
101+ break;
102+ }
103+ }
104+ QVERIFY(pinActionIndex >= 0);
105+
106+ // trigger pin item quicklist action => Item must be pinned now.
107+ launcherModel->quickListActionInvoked(launcherModel->get(0)->appId(), pinActionIndex);
108+ QCOMPARE(launcherModel->get(0)->pinned(), true);
109+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
110+
111+ // quicklist needs to transform to remove item. trigger it and check it item goes away
112+ launcherModel->quickListActionInvoked(launcherModel->get(0)->appId(), pinActionIndex);
113+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 1);
114+ }
115+
116+ void testApplicationFocused() {
117+ // all apps unfocused at beginning...
118+ QCOMPARE(launcherModel->get(0)->focused(), false);
119+ QCOMPARE(launcherModel->get(1)->focused(), false);
120+
121+ launcherModel->applicationFocused("abs-icon");
122+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
123+ QCOMPARE(launcherModel->get(0)->focused(), true);
124+ QCOMPARE(launcherModel->get(1)->focused(), false);
125+
126+ launcherModel->applicationFocused("no-icon");
127+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 2);
128+ QCOMPARE(launcherModel->get(0)->focused(), false);
129+ QCOMPARE(launcherModel->get(1)->focused(), true);
130+
131+ launcherModel->applicationFocused("rel-icon");
132+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 3);
133+ QCOMPARE(launcherModel->get(0)->focused(), false);
134+ QCOMPARE(launcherModel->get(1)->focused(), false);
135+ QCOMPARE(launcherModel->get(2)->focused(), true);
136+
137+ launcherModel->applicationFocused(QString());
138+ QCOMPARE(launcherModel->rowCount(QModelIndex()), 3);
139+ QCOMPARE(launcherModel->get(0)->focused(), false);
140+ QCOMPARE(launcherModel->get(1)->focused(), false);
141+ QCOMPARE(launcherModel->get(2)->focused(), false);
142+ }
143+};
144+
145+QTEST_GUILESS_MAIN(LauncherModelTest)
146+#include "launchermodeltest.moc"
tests/plugins/Unity/Launcher/no-icon.desktopnew file+2
@@ -0,0 +1,2 @@
1+[Desktop Entry]
2+Name=No Icon
tests/plugins/Unity/Launcher/no-name.desktopnew file+2
@@ -0,0 +1,2 @@
1+[Desktop Entry]
2+Icon=no-name
tests/plugins/Unity/Launcher/rel-icon.desktopnew file+3
@@ -0,0 +1,3 @@
1+[Desktop Entry]
2+Name=Relative Icon
3+Icon=rel-icon
tests/plugins/Unity/filtersbindingstest.cpp+61−30
@@ -65,17 +65,17 @@ DeeModel* FiltersBindingsTest::createFilterModel()
65
65
66void FiltersBindingsTest::createMultiRangeFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount)
66void FiltersBindingsTest::createMultiRangeFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount)
67{
67{
68− createFilter(model, "filter-multirange", id, name, optionCount);
68+ createFilter(model, "filter-multirange", id, name, optionCount, true);
69}
69}
70
70
71void FiltersBindingsTest::createRadioOptionFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount)
71void FiltersBindingsTest::createRadioOptionFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount)
72{
72{
73− createFilter(model, "filter-radiooption", id, name, optionCount);
73+ createFilter(model, "filter-radiooption", id, name, optionCount, true);
74}
74}
75
75
76void FiltersBindingsTest::createCheckOptionFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount)
76void FiltersBindingsTest::createCheckOptionFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount)
77{
77{
78− createFilter(model, "filter-checkoption", id, name, optionCount);
78+ createFilter(model, "filter-checkoption", id, name, optionCount, true);
79}
79}
80
80
81void FiltersBindingsTest::createRatingsFilter(DeeModel *model, const std::string &id, const std::string &name)
81void FiltersBindingsTest::createRatingsFilter(DeeModel *model, const std::string &id, const std::string &name)
@@ -90,7 +90,7 @@ void FiltersBindingsTest::createRatingsFilter(DeeModel *model, const std::string
90 GVariant *children[2];
90 GVariant *children[2];
91 GVariant *key1 = g_variant_new_string("show-all-button");
91 GVariant *key1 = g_variant_new_string("show-all-button");
92 GVariant *key2 = g_variant_new_string("rating");
92 GVariant *key2 = g_variant_new_string("rating");
93− children[0] = g_variant_new_dict_entry(key1, g_variant_new_variant(g_variant_new_boolean(false)));
93+ children[0] = g_variant_new_dict_entry(key1, g_variant_new_variant(g_variant_new_boolean(true)));
94 children[1] = g_variant_new_dict_entry(key2, g_variant_new_variant(g_variant_new_double(0.0f)));
94 children[1] = g_variant_new_dict_entry(key2, g_variant_new_variant(g_variant_new_double(0.0f)));
95 auto fhints = g_variant_new_array(G_VARIANT_TYPE("{sv}"), children, 2);
95 auto fhints = g_variant_new_array(G_VARIANT_TYPE("{sv}"), children, 2);
96
96
@@ -102,7 +102,7 @@ void FiltersBindingsTest::createRatingsFilter(DeeModel *model, const std::string
102 dee_model_append_row(model, row);
102 dee_model_append_row(model, row);
103}
103}
104
104
105−void FiltersBindingsTest::createFilter(DeeModel *model, const std::string &renderer, const std::string &id, const std::string &name, int optionCount)
105+void FiltersBindingsTest::createFilter(DeeModel *model, const std::string &renderer, const std::string &id, const std::string &name, int optionCount, bool showAll)
106{
106{
107 GVariant* row[8];
107 GVariant* row[8];
108
108
@@ -114,7 +114,7 @@ void FiltersBindingsTest::createFilter(DeeModel *model, const std::string &rende
114 GVariant *children[2];
114 GVariant *children[2];
115 GVariant *key1 = g_variant_new_string("show-all-button");
115 GVariant *key1 = g_variant_new_string("show-all-button");
116 GVariant *key2 = g_variant_new_string("options");
116 GVariant *key2 = g_variant_new_string("options");
117− children[0] = g_variant_new_dict_entry(key1, g_variant_new_variant(g_variant_new_boolean(false)));
117+ children[0] = g_variant_new_dict_entry(key1, g_variant_new_variant(g_variant_new_boolean(showAll)));
118 children[1] = g_variant_new_dict_entry(key2, g_variant_new_variant(createOptions(optionCount)));
118 children[1] = g_variant_new_dict_entry(key2, g_variant_new_variant(createOptions(optionCount)));
119 auto fhints = g_variant_new_array(G_VARIANT_TYPE("{sv}"), children, 2);
119 auto fhints = g_variant_new_array(G_VARIANT_TYPE("{sv}"), children, 2);
120
120
@@ -143,9 +143,9 @@ void FiltersBindingsTest::testMultiRangeFilter()
143 auto multi_filter = dynamic_cast<MultiRangeFilter*>(bind_filter);
143 auto multi_filter = dynamic_cast<MultiRangeFilter*>(bind_filter);
144 QVERIFY(multi_filter != nullptr);
144 QVERIFY(multi_filter != nullptr);
145 auto options = multi_filter->options();
145 auto options = multi_filter->options();
146− QCOMPARE(options->rowCount(), 1);
146+ QCOMPARE(options->rowCount(), 2);
147
147
148− auto idx = options->index(0);
148+ auto idx = options->index(1);
149 QVariant id_var = options->data(idx, GenericOptionsModel::RoleId);
149 QVariant id_var = options->data(idx, GenericOptionsModel::RoleId);
150 QVariant name_var = options->data(idx, GenericOptionsModel::RoleName);
150 QVariant name_var = options->data(idx, GenericOptionsModel::RoleName);
151 QVariant icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
151 QVariant icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
@@ -168,9 +168,9 @@ void FiltersBindingsTest::testMultiRangeFilter()
168 auto multi_filter = dynamic_cast<MultiRangeFilter*>(bind_filter);
168 auto multi_filter = dynamic_cast<MultiRangeFilter*>(bind_filter);
169 QVERIFY(multi_filter != nullptr);
169 QVERIFY(multi_filter != nullptr);
170 auto options = multi_filter->options();
170 auto options = multi_filter->options();
171− QCOMPARE(options->rowCount(), 2);
171+ QCOMPARE(options->rowCount(), 3);
172
172
173− auto idx = options->index(0);
173+ auto idx = options->index(1);
174 QVariant id_var = options->data(idx, GenericOptionsModel::RoleId);
174 QVariant id_var = options->data(idx, GenericOptionsModel::RoleId);
175 QVariant name_var = options->data(idx, GenericOptionsModel::RoleName);
175 QVariant name_var = options->data(idx, GenericOptionsModel::RoleName);
176 QVariant icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
176 QVariant icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
@@ -181,10 +181,10 @@ void FiltersBindingsTest::testMultiRangeFilter()
181 QCOMPARE(icon_var.toString(), QString(""));
181 QCOMPARE(icon_var.toString(), QString(""));
182 QCOMPARE(active_var.toBool(), false);
182 QCOMPARE(active_var.toBool(), false);
183
183
184− AbstractFilterOption* opt1 = options->getRawOption(0);
184+ AbstractFilterOption* opt1 = options->getRawOption(1);
185 QCOMPARE(opt1->id(), QString("opt0"));
185 QCOMPARE(opt1->id(), QString("opt0"));
186
186
187− AbstractFilterOption* opt2 = options->getRawOption(1);
187+ AbstractFilterOption* opt2 = options->getRawOption(2);
188 QCOMPARE(opt2->id(), QString("opt1"));
188 QCOMPARE(opt2->id(), QString("opt1"));
189
189
190 delete multi_filter;
190 delete multi_filter;
@@ -199,18 +199,21 @@ void FiltersBindingsTest::testMultiRangeFilter()
199 auto multi_filter = dynamic_cast<MultiRangeFilter*>(bind_filter);
199 auto multi_filter = dynamic_cast<MultiRangeFilter*>(bind_filter);
200 QVERIFY(multi_filter != nullptr);
200 QVERIFY(multi_filter != nullptr);
201 auto options = multi_filter->options();
201 auto options = multi_filter->options();
202− QCOMPARE(options->rowCount(), 3);
202+ QCOMPARE(options->rowCount(), 4);
203+
204+ AbstractFilterOption* showAll = options->getRawOption(0);
205+ QVERIFY(showAll->id().startsWith("show_all::"));
203
206
204− AbstractFilterOption* opt0 = options->getRawOption(0);
207+ AbstractFilterOption* opt0 = options->getRawOption(1);
205 QCOMPARE(opt0->id(), QString("opt0"));
208 QCOMPARE(opt0->id(), QString("opt0"));
206
209
207− AbstractFilterOption* opt1 = options->getRawOption(1);
210+ AbstractFilterOption* opt1 = options->getRawOption(2);
208 QCOMPARE(opt1->id(), QString("opt1"));
211 QCOMPARE(opt1->id(), QString("opt1"));
209
212
210− AbstractFilterOption* opt2 = options->getRawOption(2);
213+ AbstractFilterOption* opt2 = options->getRawOption(3);
211 QCOMPARE(opt2->id(), QString("opt2"));
214 QCOMPARE(opt2->id(), QString("opt2"));
212
215
213− // verify combined filter options are bound to correct underlying unity options
216+ // verify filter options are bound to correct underlying unity options
214 auto core_multi_filter = std::dynamic_pointer_cast<unity::dash::MultiRangeFilter>(core_filter);
217 auto core_multi_filter = std::dynamic_pointer_cast<unity::dash::MultiRangeFilter>(core_filter);
215 QCOMPARE(QString::fromStdString(core_multi_filter->options()[0]->id()), QString("opt0"));
218 QCOMPARE(QString::fromStdString(core_multi_filter->options()[0]->id()), QString("opt0"));
216 QCOMPARE(QString::fromStdString(core_multi_filter->options()[1]->id()), QString("opt1"));
219 QCOMPARE(QString::fromStdString(core_multi_filter->options()[1]->id()), QString("opt1"));
@@ -274,7 +277,7 @@ void FiltersBindingsTest::testCheckOptionFilter()
274 auto check_filter = dynamic_cast<CheckOptionFilter*>(bind_filter);
277 auto check_filter = dynamic_cast<CheckOptionFilter*>(bind_filter);
275 QVERIFY(check_filter != nullptr);
278 QVERIFY(check_filter != nullptr);
276 auto options = check_filter->options();
279 auto options = check_filter->options();
277− QCOMPARE(options->rowCount(), 3);
280+ QCOMPARE(options->rowCount(), 4);
278
281
279 QCOMPARE(check_filter->id(), QString("f1"));
282 QCOMPARE(check_filter->id(), QString("f1"));
280 QCOMPARE(check_filter->name(), QString("Filter1"));
283 QCOMPARE(check_filter->name(), QString("Filter1"));
@@ -284,7 +287,7 @@ void FiltersBindingsTest::testCheckOptionFilter()
284 QCOMPARE(check_filter->collapsed(), false);
287 QCOMPARE(check_filter->collapsed(), false);
285 QCOMPARE(check_filter->filtering(), false);
288 QCOMPARE(check_filter->filtering(), false);
286
289
287− auto idx = options->index(0);
290+ auto idx = options->index(1);
288 QVariant id_var = options->data(idx, GenericOptionsModel::RoleId);
291 QVariant id_var = options->data(idx, GenericOptionsModel::RoleId);
289 QVariant name_var = options->data(idx, GenericOptionsModel::RoleName);
292 QVariant name_var = options->data(idx, GenericOptionsModel::RoleName);
290 QVariant icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
293 QVariant icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
@@ -295,7 +298,7 @@ void FiltersBindingsTest::testCheckOptionFilter()
295 QCOMPARE(icon_var.toString(), QString(""));
298 QCOMPARE(icon_var.toString(), QString(""));
296 QCOMPARE(active_var.toBool(), false);
299 QCOMPARE(active_var.toBool(), false);
297
300
298− idx = options->index(1);
301+ idx = options->index(2);
299 id_var = options->data(idx, GenericOptionsModel::RoleId);
302 id_var = options->data(idx, GenericOptionsModel::RoleId);
300 name_var = options->data(idx, GenericOptionsModel::RoleName);
303 name_var = options->data(idx, GenericOptionsModel::RoleName);
301 icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
304 icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
@@ -306,38 +309,55 @@ void FiltersBindingsTest::testCheckOptionFilter()
306 QCOMPARE(icon_var.toString(), QString(""));
309 QCOMPARE(icon_var.toString(), QString(""));
307 QCOMPARE(active_var.toBool(), false);
310 QCOMPARE(active_var.toBool(), false);
308
311
312+ AbstractFilterOption* showAll = options->getRawOption(0);
309− AbstractFilterOption* opt0 = options->getRawOption(0);
313+ AbstractFilterOption* opt0 = options->getRawOption(1);
310− AbstractFilterOption* opt1 = options->getRawOption(1);
314+ AbstractFilterOption* opt1 = options->getRawOption(2);
311− AbstractFilterOption* opt2 = options->getRawOption(2);
315+ AbstractFilterOption* opt2 = options->getRawOption(3);
312
316
317+ QSignalSpy showAllSpy(showAll, SIGNAL(activeChanged(bool)));
313 QSignalSpy opt0spy(opt0, SIGNAL(activeChanged(bool)));
318 QSignalSpy opt0spy(opt0, SIGNAL(activeChanged(bool)));
314 QSignalSpy opt1spy(opt1, SIGNAL(activeChanged(bool)));
319 QSignalSpy opt1spy(opt1, SIGNAL(activeChanged(bool)));
315 QSignalSpy opt2spy(opt2, SIGNAL(activeChanged(bool)));
320 QSignalSpy opt2spy(opt2, SIGNAL(activeChanged(bool)));
316 QSignalSpy dataChangedSpy(options, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)));
321 QSignalSpy dataChangedSpy(options, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&, const QVector<int>&)));
317
322
318 // test active property changes
323 // test active property changes
324+ QCOMPARE(showAll->active(), false);
319 QCOMPARE(opt0->active(), false);
325 QCOMPARE(opt0->active(), false);
320 QCOMPARE(opt1->active(), false);
326 QCOMPARE(opt1->active(), false);
321 QCOMPARE(opt2->active(), false);
327 QCOMPARE(opt2->active(), false);
322
328
323 opt0->setActive(true);
329 opt0->setActive(true);
330+ QCOMPARE(showAllSpy.count(), 0);
324 QCOMPARE(opt0spy.count(), 1);
331 QCOMPARE(opt0spy.count(), 1);
325 QCOMPARE(opt1spy.count(), 0);
332 QCOMPARE(opt1spy.count(), 0);
326 QCOMPARE(opt2spy.count(), 0);
333 QCOMPARE(opt2spy.count(), 0);
334+ QCOMPARE(showAll->active(), false);
327 QCOMPARE(opt0->active(), true);
335 QCOMPARE(opt0->active(), true);
328 QCOMPARE(opt1->active(), false);
336 QCOMPARE(opt1->active(), false);
329 QCOMPARE(opt2->active(), false);
337 QCOMPARE(opt2->active(), false);
330
338
331 opt1->setActive(true);
339 opt1->setActive(true);
340+ QCOMPARE(showAllSpy.count(), 0);
332 QCOMPARE(opt0spy.count(), 2);
341 QCOMPARE(opt0spy.count(), 2);
333 QCOMPARE(opt1spy.count(), 1);
342 QCOMPARE(opt1spy.count(), 1);
334 QCOMPARE(opt2spy.count(), 0);
343 QCOMPARE(opt2spy.count(), 0);
344+ QCOMPARE(showAll->active(), false);
335 QCOMPARE(opt0->active(), false);
345 QCOMPARE(opt0->active(), false);
336 QCOMPARE(opt1->active(), true);
346 QCOMPARE(opt1->active(), true);
337 QCOMPARE(opt2->active(), false);
347 QCOMPARE(opt2->active(), false);
338
348
339 QCOMPARE(dataChangedSpy.count(), 3);
349 QCOMPARE(dataChangedSpy.count(), 3);
340
350
351+ showAll->setActive(true);
352+ QCOMPARE(showAllSpy.count(), 1);
353+ QCOMPARE(opt0spy.count(), 2);
354+ QCOMPARE(opt1spy.count(), 2);
355+ QCOMPARE(opt2spy.count(), 0);
356+ QCOMPARE(showAll->active(), true);
357+ QCOMPARE(opt0->active(), false);
358+ QCOMPARE(opt1->active(), false);
359+ QCOMPARE(opt2->active(), false);
360+
341 delete check_filter;
361 delete check_filter;
342 }
362 }
343}
363}
@@ -357,7 +377,7 @@ void FiltersBindingsTest::testRadioOptionFilter()
357 auto radio_filter = dynamic_cast<RadioOptionFilter*>(bind_filter);
377 auto radio_filter = dynamic_cast<RadioOptionFilter*>(bind_filter);
358 QVERIFY(radio_filter != nullptr);
378 QVERIFY(radio_filter != nullptr);
359 auto options = radio_filter->options();
379 auto options = radio_filter->options();
360− QCOMPARE(options->rowCount(), 3);
380+ QCOMPARE(options->rowCount(), 4);
361
381
362 auto idx = options->index(0);
382 auto idx = options->index(0);
363 QVariant id_var = options->data(idx, GenericOptionsModel::RoleId);
383 QVariant id_var = options->data(idx, GenericOptionsModel::RoleId);
@@ -365,12 +385,23 @@ void FiltersBindingsTest::testRadioOptionFilter()
365 QVariant icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
385 QVariant icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
366 QVariant active_var = options->data(idx, GenericOptionsModel::RoleActive);
386 QVariant active_var = options->data(idx, GenericOptionsModel::RoleActive);
367
387
388+ QVERIFY(id_var.toString().startsWith("show_all::"));
389+ QVERIFY(name_var.toString().size() > 0);
390+ QCOMPARE(icon_var.toString(), QString(""));
391+ QCOMPARE(active_var.toBool(), false);
392+
393+ idx = options->index(1);
394+ id_var = options->data(idx, GenericOptionsModel::RoleId);
395+ name_var = options->data(idx, GenericOptionsModel::RoleName);
396+ icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
397+ active_var = options->data(idx, GenericOptionsModel::RoleActive);
398+
368 QCOMPARE(id_var.toString(), QString("opt0"));
399 QCOMPARE(id_var.toString(), QString("opt0"));
369 QCOMPARE(name_var.toString(), QString("Option 0"));
400 QCOMPARE(name_var.toString(), QString("Option 0"));
370 QCOMPARE(icon_var.toString(), QString(""));
401 QCOMPARE(icon_var.toString(), QString(""));
371 QCOMPARE(active_var.toBool(), false);
402 QCOMPARE(active_var.toBool(), false);
372
403
373− idx = options->index(1);
404+ idx = options->index(2);
374 id_var = options->data(idx, GenericOptionsModel::RoleId);
405 id_var = options->data(idx, GenericOptionsModel::RoleId);
375 name_var = options->data(idx, GenericOptionsModel::RoleName);
406 name_var = options->data(idx, GenericOptionsModel::RoleName);
376 icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
407 icon_var = options->data(idx, GenericOptionsModel::RoleIconHint);
@@ -381,9 +412,9 @@ void FiltersBindingsTest::testRadioOptionFilter()
381 QCOMPARE(icon_var.toString(), QString(""));
412 QCOMPARE(icon_var.toString(), QString(""));
382 QCOMPARE(active_var.toBool(), false);
413 QCOMPARE(active_var.toBool(), false);
383
414
384− AbstractFilterOption* opt0 = options->getRawOption(0);
415+ AbstractFilterOption* opt0 = options->getRawOption(1);
385− AbstractFilterOption* opt1 = options->getRawOption(1);
416+ AbstractFilterOption* opt1 = options->getRawOption(2);
386− AbstractFilterOption* opt2 = options->getRawOption(2);
417+ AbstractFilterOption* opt2 = options->getRawOption(3);
387
418
388 QSignalSpy opt0spy(opt0, SIGNAL(activeChanged(bool)));
419 QSignalSpy opt0spy(opt0, SIGNAL(activeChanged(bool)));
389 QSignalSpy opt1spy(opt1, SIGNAL(activeChanged(bool)));
420 QSignalSpy opt1spy(opt1, SIGNAL(activeChanged(bool)));
@@ -432,11 +463,11 @@ void FiltersBindingsTest::testRatingsFilter()
432 auto rating_filter = dynamic_cast<RatingsFilter*>(bind_filter);
463 auto rating_filter = dynamic_cast<RatingsFilter*>(bind_filter);
433 QVERIFY(rating_filter != nullptr);
464 QVERIFY(rating_filter != nullptr);
434 auto options = rating_filter->options();
465 auto options = rating_filter->options();
435− QCOMPARE(options->rowCount(), 5);
466+ QCOMPARE(options->rowCount(), 6);
436
467
437 RatingFilterOption* opt[5];
468 RatingFilterOption* opt[5];
438 for (int i = 0; i<5; i++) {
469 for (int i = 0; i<5; i++) {
439− opt[i] = dynamic_cast<RatingFilterOption *>(options->getRawOption(i));
470+ opt[i] = dynamic_cast<RatingFilterOption *>(options->getRawOption(i+1));
440 }
471 }
441
472
442 QSignalSpy opt0spy(opt[0], SIGNAL(activeChanged(bool)));
473 QSignalSpy opt0spy(opt[0], SIGNAL(activeChanged(bool)));
tests/plugins/Unity/filtersbindingstest.h+1−1
@@ -41,7 +41,7 @@ class FiltersBindingsTest : public QObject
41 void createCheckOptionFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount);
41 void createCheckOptionFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount);
42 void createRadioOptionFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount);
42 void createRadioOptionFilter(DeeModel *model, const std::string &id, const std::string &name, int optionCount);
43 void createRatingsFilter(DeeModel *model, const std::string &id, const std::string &name);
43 void createRatingsFilter(DeeModel *model, const std::string &id, const std::string &name);
44− void createFilter(DeeModel *model, const std::string &renderer, const std::string &id, const std::string &name, int optionCount);
44+ void createFilter(DeeModel *model, const std::string &renderer, const std::string &id, const std::string &name, int optionCount, bool showAll);
45};
45};
46
46
47#endif // FILTERSBINDINGSTEST_H
47#endif // FILTERSBINDINGSTEST_H
tests/qmltests/CMakeLists.txt+1
@@ -30,6 +30,7 @@ add_qml_test(. Shell IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_
30 ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
30 ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
31add_manual_qml_test(Components DragHandle IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
31add_manual_qml_test(Components DragHandle IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins)
32add_qml_test(Components DraggingArea)
32add_qml_test(Components DraggingArea)
33+add_qml_test(Components EdgeDemoOverlay)
33add_qml_test(Components FilterGrid IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
34add_qml_test(Components FilterGrid IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
34add_qml_test(Components ResponsiveFlowView)
35add_qml_test(Components ResponsiveFlowView)
35add_qml_test(Components ResponsiveGridView)
36add_qml_test(Components ResponsiveGridView)
tests/qmltests/Components/tst_EdgeDemoOverlay.qmlnew file+123
@@ -0,0 +1,123 @@
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.Test 0.1 as UT
20+import "../../../Components"
21+
22+Item {
23+ id: root
24+ width: boxWidth * 3
25+ height: boxHeight * 2
26+
27+ property int boxWidth: 250
28+ property int boxHeight: 250
29+
30+ EdgeDemoOverlay {
31+ id: top
32+ edge: "top"
33+ title: "Top"
34+ text: "Displayed on top left"
35+ anchors.left: parent.left
36+ anchors.top: parent.top
37+ width: boxWidth
38+ height: boxHeight
39+ }
40+
41+ EdgeDemoOverlay {
42+ id: right
43+ edge: "right"
44+ title: "Right"
45+ text: "Displayed on top right"
46+ anchors.right: parent.right
47+ anchors.top: parent.top
48+ width: boxWidth
49+ height: boxHeight
50+ }
51+
52+ EdgeDemoOverlay {
53+ id: left
54+ edge: "left"
55+ title: "Left"
56+ text: "Displayed on bottom right"
57+ anchors.right: parent.right
58+ anchors.bottom: parent.bottom
59+ width: boxWidth
60+ height: boxHeight
61+ available: false
62+ }
63+
64+ EdgeDemoOverlay {
65+ id: bottom
66+ edge: "bottom"
67+ title: "Bottom"
68+ text: "Displayed on bottom left"
69+ anchors.left: parent.left
70+ anchors.bottom: parent.bottom
71+ width: boxWidth
72+ height: boxHeight
73+ }
74+
75+ EdgeDemoOverlay {
76+ id: none
77+ edge: "none"
78+ title: "None"
79+ text: "Displayed on top middle"
80+ anchors.horizontalCenter: parent.horizontalCenter
81+ anchors.top: parent.top
82+ width: boxWidth
83+ height: boxHeight
84+ }
85+
86+ SignalSpy {
87+ id: signalSpy
88+ }
89+
90+ UT.UnityTestCase {
91+ name: "EdgeDemoOverlay"
92+ when: windowShown
93+
94+ function test_animations() {
95+ compare(right.running, true)
96+
97+ compare(left.running, false)
98+ left.available = true
99+ compare(left.running, true)
100+ }
101+
102+ function test_skip() {
103+ signalSpy.target = bottom
104+ signalSpy.signalName = "skip"
105+ signalSpy.clear()
106+ var bottomSkip = findChild(bottom, "skipLabel")
107+ mousePress(bottomSkip, 1, 1)
108+ mouseRelease(bottomSkip, 1, 1)
109+ signalSpy.wait()
110+ compare(bottom.available, false)
111+
112+ // Test that the 'none' edge skips anywhere
113+ signalSpy.target = none
114+ signalSpy.clear()
115+ var backgroundShade = findChild(none, "backgroundShade")
116+ tryCompare(none, "opacity", 1)
117+ mousePress(backgroundShade, 1, 1)
118+ mouseRelease(backgroundShade, 1, 1)
119+ signalSpy.wait()
120+ compare(none.available, false)
121+ }
122+ }
123+}
tests/qmltests/Launcher/tst_Launcher.qml+12−6
@@ -198,6 +198,14 @@ Item {
198 compare(findChild(delegate, "progressOverlay").visible, LauncherModel.get(i).progress >= 0)
198 compare(findChild(delegate, "progressOverlay").visible, LauncherModel.get(i).progress >= 0)
199 }
199 }
200 }
200 }
201+
202+ function test_focusedHighlight() {
203+ var launcherListView = findChild(launcher, "launcherListView");
204+ for (var i = 0; i < launcherListView.count; ++i) {
205+ var delegate = findChild(launcherListView, "launcherDelegate" + i)
206+ compare(findChild(delegate, "focusedHighlight").visible, LauncherModel.get(i).focused)
207+ }
208+ }
201 }
209 }
202
210
203 UT.UnityTestCase {
211 UT.UnityTestCase {
@@ -249,11 +257,10 @@ Item {
249 name: "LauncherInit"
257 name: "LauncherInit"
250 when: windowShown
258 when: windowShown
251
259
252− /*
260+ function initTestCase() {
253− * FIXME: There is a bug in ListView which makes it snap to an item
261+ var listView = findChild(launcher, "launcherListView");
254− * instead of the edge at startup. Enable this test once our patch for
262+ tryCompare(listView, "flicking", false)
255− * ListView has landed upstream.
263+ }
256− * https://bugreports.qt-project.org/browse/QTBUG-32251
257
264
258 function test_initFirstUnfolded() {
265 function test_initFirstUnfolded() {
259
266
@@ -267,7 +274,6 @@ Item {
267 // Now do check that snapping is in fact enabled
274 // Now do check that snapping is in fact enabled
268 compare(listView.snapMode, ListView.SnapToItem, "Snapping is not enabled");
275 compare(listView.snapMode, ListView.SnapToItem, "Snapping is not enabled");
269 }
276 }
270− */
271 }
277 }
272
278
273 UT.UnityTestCase {
279 UT.UnityTestCase {