on xenial help sign in
merged with trunk
7c68bd9Nick Dedekind
Bottombar/Bottombar.qml+82−17
@@ -34,15 +34,32 @@ Item {
34
34
35 state: "hidden"
35 state: "hidden"
36
36
37+ function hide() {
38+ dismissTimer.stop()
39+ bottombar.state = "hidden"
40+ }
41+
42+ onApplicationIsOnForegroundChanged: {
43+ if (!applicationIsOnForeground) {
44+ hide()
45+ }
46+ }
47+
37 onStateChanged: {
48 onStateChanged: {
38 if (state == "hidden") {
49 if (state == "hidden") {
39 dismissTimer.stop()
50 dismissTimer.stop()
51+ bottomBarVisibilityCommunicatorShell.forceHidden = false
40 } else {
52 } else {
41 dismissTimer.restart()
53 dismissTimer.restart()
42 }
54 }
43 }
55 }
44
56
45 onPreventHidingChanged: {
57 onPreventHidingChanged: {
58+ if (!preventHiding) {
59+ if (state == "hint" || state == "reveal")
60+ hide()
61+ }
62+
46 if (dismissTimer.running) {
63 if (dismissTimer.running) {
47 dismissTimer.restart();
64 dismissTimer.restart();
48 }
65 }
@@ -50,7 +67,7 @@ Item {
50
67
51 Timer {
68 Timer {
52 id: dismissTimer
69 id: dismissTimer
53− interval: 5000
70+ interval: 1000
54 onTriggered: {
71 onTriggered: {
55 if (!bottombar.preventHiding) {
72 if (!bottombar.preventHiding) {
56 bottombar.state = "hidden"
73 bottombar.state = "hidden"
@@ -103,24 +120,29 @@ Item {
103
120
104 EdgeDragArea {
121 EdgeDragArea {
105 id: dragArea
122 id: dragArea
123+ objectName: "hudDragArea"
106 width: parent.width
124 width: parent.width
107− height: distanceThreshold
125+ height: shell.edgeSize
108 anchors.bottom: parent.bottom
126 anchors.bottom: parent.bottom
109
127
110− distanceThreshold: units.gu(1)
128+ distanceThreshold: units.gu(8)
111 enabled: !theHud.shown && bottombar.enabled && applicationIsOnForeground
129 enabled: !theHud.shown && bottombar.enabled && applicationIsOnForeground
112 direction: Direction.Upwards
130 direction: Direction.Upwards
131+ maxSilenceTime: 2000
113
132
114 property int previousStatus: -1
133 property int previousStatus: -1
115 property real touchStartX: -1
134 property real touchStartX: -1
116
135
136+ readonly property real distanceFromThreshold: (-distance) - distanceThreshold // distance is negative
137+ readonly property real revealDistance: units.gu(2)
138+ readonly property real commitDistance: units.gu(6)
139+ readonly property real commitProgress: MathLocal.clamp(distanceFromThreshold / commitDistance, 0, 1)
140+
117 onStatusChanged: {
141 onStatusChanged: {
118 if (status === DirectionalDragArea.WaitingForTouch) {
142 if (status === DirectionalDragArea.WaitingForTouch) {
119 if (previousStatus == DirectionalDragArea.Recognized) {
143 if (previousStatus == DirectionalDragArea.Recognized) {
120 if (hudButton.mouseOver) {
144 if (hudButton.mouseOver) {
121 hudButton.clicked()
145 hudButton.clicked()
122− } else {
123− bottombar.state = "hidden"
124 }
146 }
125 }
147 }
126 } else if (status === DirectionalDragArea.Undecided) {
148 } else if (status === DirectionalDragArea.Undecided) {
@@ -128,35 +150,78 @@ Item {
128 touchStartX = touchX
150 touchStartX = touchX
129 }
151 }
130 } else if (status === DirectionalDragArea.Recognized) {
152 } else if (status === DirectionalDragArea.Recognized) {
131− bottombar.state = "shown"
153+ bottombar.state = "hint"
132 }
154 }
133 previousStatus = status
155 previousStatus = status
134 }
156 }
157+
158+ onDistanceChanged: {
159+ if (status === DirectionalDragArea.Recognized) {
160+ if (distanceFromThreshold > commitDistance)
161+ bottombar.state = "shown"
162+ else if (distanceFromThreshold > revealDistance)
163+ bottombar.state = "reveal"
164+ }
165+ }
166+ }
167+
168+ Item {
169+ id: dismissArea
170+ anchors {
171+ top: parent.top
172+ left: parent.left
173+ right: parent.right
174+ }
175+ height: parent.height - bottomBarVisibilityCommunicatorShell.position
176+
177+ MouseArea {
178+ anchors.fill: parent
179+ enabled: bottombar.state == "shown"
180+ onPressed: {
181+ bottomBarVisibilityCommunicatorShell.forceHidden = true
182+ bottombar.state = "hidden"
183+ }
184+ }
185+
186+ InputFilterArea {
187+ anchors.fill: parent
188+ blockInput: (hudButton.opacity == 1)
189+ }
135 }
190 }
136
191
137 MouseArea {
192 MouseArea {
138− anchors.fill: parent
193+ anchors {
194+ top: dismissArea.bottom
195+ left: parent.left
196+ right: parent.right
197+ bottom: parent.bottom
198+ }
139− enabled: bottombar.state == "shown"
199+ enabled: bottombar.state == "shown" && bottomBarVisibilityCommunicatorShell.position > 0
140 onPressed: {
200 onPressed: {
141 bottombar.state = "hidden"
201 bottombar.state = "hidden"
142 }
202 }
143 }
203 }
144
204
145− InputFilterArea {
146− anchors.fill: parent
147− blockInput: (hudButton.opacity == 1)
148− }
149−
150 states: [
205 states: [
151 State {
206 State {
152 name: "hidden"
207 name: "hidden"
153− PropertyChanges { target: hudButton; opacity: 0}
208+ PropertyChanges { target: hudButton; opacity: 0 }
154− PropertyChanges { target: hudButton; bottomMargin: units.gu(-1)}
209+ PropertyChanges { target: hudButton; bottomMargin: units.gu(-2) }
210+ },
211+ State {
212+ name: "hint"
213+ extend: "hidden"
214+ PropertyChanges { target: hudButton; opacity: 0.5 }
215+ },
216+ State {
217+ name: "reveal"
218+ extend: "hint"
219+ PropertyChanges { target: hudButton; bottomMargin: units.gu(-2) + units.gu(2) * dragArea.commitProgress }
155 },
220 },
156 State {
221 State {
157 name: "shown"
222 name: "shown"
158− PropertyChanges { target: hudButton; opacity: 1}
223+ PropertyChanges { target: hudButton; opacity: 1 }
159− PropertyChanges { target: hudButton; bottomMargin: units.gu(0)}
224+ PropertyChanges { target: hudButton; bottomMargin: units.gu(0) }
160 }
225 }
161 ]
226 ]
162}
227}
CMakeLists.txt−1
@@ -96,7 +96,6 @@ enable_testing()
96# Autopilot tests
96# Autopilot tests
97include(autopilot)
97include(autopilot)
98declare_autopilot_test(shell unity8.shell ${CMAKE_SOURCE_DIR}/tests/autopilot/)
98declare_autopilot_test(shell unity8.shell ${CMAKE_SOURCE_DIR}/tests/autopilot/)
99−declare_autopilot_test(indicators_client unity8.indicators_client ${CMAKE_SOURCE_DIR}/tests/autopilot/)
100
99
101set(SHELL_APP unity8)
100set(SHELL_APP unity8)
102
101
Components/ApplicationManagerWrapper.qml−29
@@ -25,7 +25,6 @@ Item {
25 property variant mainStageFocusedApplication: null
25 property variant mainStageFocusedApplication: null
26 property variant sideStageFocusedApplication: null
26 property variant sideStageFocusedApplication: null
27 property bool sideStageEnabled: true
27 property bool sideStageEnabled: true
28− signal focusRequested(string desktopFile)
29 property bool keyboardVisible: ApplicationManager.keyboardVisible
28 property bool keyboardVisible: ApplicationManager.keyboardVisible
30 property int keyboardHeight: ApplicationManager.keyboardHeight
29 property int keyboardHeight: ApplicationManager.keyboardHeight
31
30
@@ -155,32 +154,4 @@ Item {
155 }
154 }
156 return desktopFile.substring(left+1, right);
155 return desktopFile.substring(left+1, right);
157 }
156 }
158−
159− Connections {
160− target: ApplicationManager
161− onFocusRequested: {
162− // FIXME: hardcoded mapping from ApplicationManager.FavoriteApplications
163− // enum to desktop files
164− var desktopFile
165− if (favoriteApplication == ApplicationManager.CameraApplication) {
166− desktopFile = "/usr/share/applications/camera-app.desktop"
167− } else if (favoriteApplication == ApplicationManager.GalleryApplication) {
168− desktopFile = "/usr/share/applications/gallery-app.desktop"
169− } else if (favoriteApplication == ApplicationManager.ShareApplication) {
170− desktopFile = "/usr/share/applications/share-app.desktop"
171− } else if (favoriteApplication == ApplicationManager.BrowserApplication) {
172− desktopFile = "/usr/share/applications/webbrowser-app.desktop"
173− } else if (favoriteApplication == ApplicationManager.PhoneApplication) {
174− desktopFile = "/usr/share/applications/phone-app.desktop"
175− } else if (favoriteApplication == ApplicationManager.DialerApplication) {
176− desktopFile = "/usr/share/applications/dialer-app.desktop"
177− } else if (favoriteApplication == ApplicationManager.MessagingApplication) {
178− desktopFile = "/usr/share/applications/messaging-app.desktop"
179− } else if (favoriteApplication == ApplicationManager.AddressbookApplication) {
180− desktopFile = "/usr/share/applications/address-book-app.desktop"
181− }
182−
183− applicationManager.focusRequested(desktopFile);
184− }
185− }
186}
157}
Components/EdgeDemoOverlay.qml+9−2
@@ -121,7 +121,6 @@ Showable {
121
121
122 Column {
122 Column {
123 id: labelGroup
123 id: labelGroup
124− layer.enabled: true // otherwise the underlining on "Skip intro" jumps
125 spacing: units.gu(3)
124 spacing: units.gu(3)
126
125
127 anchors {
126 anchors {
@@ -150,7 +149,15 @@ Showable {
150 text: i18n.tr("Skip intro")
149 text: i18n.tr("Skip intro")
151 color: UbuntuColors.orange
150 color: UbuntuColors.orange
152 fontSize: "small"
151 fontSize: "small"
153− font.underline: true
152+
153+ Icon {
154+ anchors.left: parent.right
155+ anchors.verticalCenter: parent.verticalCenter
156+ height: units.dp(12)
157+ width: units.dp(12)
158+ name: "chevron"
159+ color: UbuntuColors.orange
160+ }
154
161
155 MouseArea {
162 MouseArea {
156 // Make clickable area bigger than just the link because
163 // Make clickable area bigger than just the link because
Components/LazyImage.qml+22−9
@@ -52,7 +52,7 @@ Item {
52 id: placeholder
52 id: placeholder
53 objectName: "placeholder"
53 objectName: "placeholder"
54 color: "#22FFFFFF"
54 color: "#22FFFFFF"
55− anchors.fill: parent
55+ anchors.fill: shape
56 visible: opacity != 0
56 visible: opacity != 0
57
57
58 ActivityIndicator {
58 ActivityIndicator {
@@ -79,7 +79,10 @@ Item {
79 UbuntuShape {
79 UbuntuShape {
80 id: shape
80 id: shape
81 objectName: "shape"
81 objectName: "shape"
82+ height: root.initialHeight
83+ width: root.initialWidth
82− anchors.fill: parent
84+ anchors.centerIn: root.scaleTo == "fit" ? parent : undefined
85+
83 opacity: 0
86 opacity: 0
84 visible: opacity != 0
87 visible: opacity != 0
85
88
@@ -88,16 +91,19 @@ Item {
88 objectName: "image"
91 objectName: "image"
89
92
90 property url nextSource
93 property url nextSource
94+ property string format: image.implicitWidth > image.implicitHeight ? "landscape" : "portrait"
91
95
92− width: root.scaleTo == "height" ? implicitWidth * root.height / implicitHeight : implicitWidth
93− height: root.scaleTo == "width" ? implicitHeight * root.width / implicitWidth : implicitHeight
94− fillMode: Image.PreserveAspectCrop
96+ fillMode: Image.PreserveAspectFit
95 asynchronous: true
97 asynchronous: true
96 cache: false
98 cache: false
97 horizontalAlignment: Image.AlignHCenter
99 horizontalAlignment: Image.AlignHCenter
98 verticalAlignment: Image.AlignVCenter
100 verticalAlignment: Image.AlignVCenter
99− sourceSize.width: root.scaleTo == "width" ? root.width : 0
101+ sourceSize.width: root.scaleTo == "width" ? root.width
102+ : root.scaleTo == "fit" && root.width < root.height ? root.width
103+ : undefined
100− sourceSize.height: root.scaleTo == "height" ? root.height : 0
104+ sourceSize.height: root.scaleTo == "height" ? root.height
105+ : root.scale == "fit" && root.height < root.width ? root.height
106+ : undefined
101 }
107 }
102 }
108 }
103
109
@@ -117,9 +123,14 @@ Item {
117 State {
123 State {
118 name: "ready"
124 name: "ready"
119 when: image.status === Image.Ready && image.source != ""
125 when: image.status === Image.Ready && image.source != ""
120− PropertyChanges { target: root; implicitWidth: image.width; implicitHeight: image.height }
126+ PropertyChanges { target: root; implicitWidth: shape.width; implicitHeight: shape.height }
121− PropertyChanges { target: shape; opacity: 1 }
122 PropertyChanges { target: placeholder; opacity: 0 }
127 PropertyChanges { target: placeholder; opacity: 0 }
128+ PropertyChanges { target: shape; opacity: 1
129+ width: root.scaleTo == "width" || (root.scaleTo == "fit" && image.format == "landscape") ? root.width
130+ : root.scaleTo == "" ? image.implicitWidth : image.implicitWidth * height / image.implicitHeight
131+ height: root.scaleTo == "height" || (root.scaleTo == "fit" && image.format == "portrait") ? root.height
132+ : root.scaleTo == "" ? image.implicitHeight : image.implicitHeight * width / image.implicitWidth
133+ }
123 },
134 },
124 State {
135 State {
125 name: "error"
136 name: "error"
@@ -138,6 +149,7 @@ Item {
138 ParallelAnimation {
149 ParallelAnimation {
139 NumberAnimation { target: shape; property: "opacity"; easing.type: Easing.Linear }
150 NumberAnimation { target: shape; property: "opacity"; easing.type: Easing.Linear }
140 UbuntuNumberAnimation { target: root; properties: "implicitWidth,implicitHeight" }
151 UbuntuNumberAnimation { target: root; properties: "implicitWidth,implicitHeight" }
152+ UbuntuNumberAnimation { target: shape; properties: "width,height" }
141 NumberAnimation {
153 NumberAnimation {
142 targets: [placeholder, activity, errorImage]; property: "opacity";
154 targets: [placeholder, activity, errorImage]; property: "opacity";
143 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
155 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
@@ -157,6 +169,7 @@ Item {
157 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
169 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
158 }
170 }
159 UbuntuNumberAnimation { target: root; properties: "implicitWidth,implicitHeight" }
171 UbuntuNumberAnimation { target: root; properties: "implicitWidth,implicitHeight" }
172+ UbuntuNumberAnimation { target: shape; properties: "width,height" }
160 }
173 }
161 PropertyAction { target: shape; property: "visible" }
174 PropertyAction { target: shape; property: "visible" }
162 }
175 }
Components/PageHeader.qml+44−1
@@ -18,6 +18,7 @@ import QtQuick 2.0
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19import Ubuntu.Components.Popups 0.1
19import Ubuntu.Components.Popups 0.1
20import Ubuntu.Components.ListItems 0.1 as ListItem
20import Ubuntu.Components.ListItems 0.1 as ListItem
21+import Unity 0.1
21
22
22Item {
23Item {
23 /*!
24 /*!
@@ -30,6 +31,7 @@ Item {
30 property bool searchEntryEnabled: false
31 property bool searchEntryEnabled: false
31 property alias searchQuery: searchField.text
32 property alias searchQuery: searchField.text
32 property ListModel searchHistory: SearchHistoryModel {}
33 property ListModel searchHistory: SearchHistoryModel {}
34+ property Scope scope
33
35
34 height: units.gu(8.5)
36 height: units.gu(8.5)
35 implicitHeight: units.gu(8.5)
37 implicitHeight: units.gu(8.5)
@@ -148,7 +150,7 @@ Item {
148 hasClearButton: false
150 hasClearButton: false
149
151
150 primaryItem: AbstractButton {
152 primaryItem: AbstractButton {
151− enabled: searchField.text != ""
153+ enabled: searchField.text != "" && !searchIndicator.running
152 onClicked: {
154 onClicked: {
153 if (searchField.text != "") {
155 if (searchField.text != "") {
154 searchHistory.addQuery(searchField.text)
156 searchHistory.addQuery(searchField.text)
@@ -158,8 +160,22 @@ Item {
158 height: parent.height
160 height: parent.height
159 width: height
161 width: height
160
162
163+ ActivityIndicator {
164+ id: searchIndicator
165+ objectName: "searchIndicator"
166+
167+ anchors {
168+ verticalCenter: parent.verticalCenter
169+ left: parent.left
170+ leftMargin: units.gu(0.5)
171+ }
172+
173+ running: opacity > 0
174+ }
175+
161 Image {
176 Image {
162 id: primaryImage
177 id: primaryImage
178+ objectName: "primaryImage"
163 anchors {
179 anchors {
164 verticalCenter: parent.verticalCenter
180 verticalCenter: parent.verticalCenter
165 left: parent.left
181 left: parent.left
@@ -167,6 +183,7 @@ Item {
167 }
183 }
168 width: units.gu(3)
184 width: units.gu(3)
169 height: units.gu(3)
185 height: units.gu(3)
186+ visible: opacity > 0
170 }
187 }
171
188
172 Item {
189 Item {
@@ -185,6 +202,32 @@ Item {
185 onActiveFocusChanged: {
202 onActiveFocusChanged: {
186 if (!activeFocus) searchContainer.closePopover()
203 if (!activeFocus) searchContainer.closePopover()
187 }
204 }
205+
206+ states: [
207+ State {
208+ name: "searching"
209+ when: scope && scope.searchInProgress
210+ PropertyChanges { target: searchIndicator; running: true; opacity: 1 }
211+ PropertyChanges { target: primaryImage; opacity: 0 }
212+ },
213+ State {
214+ name: "idle"
215+ when: !scope || !scope.searchInProgress
216+ PropertyChanges { target: searchIndicator; opacity: 0 }
217+ PropertyChanges { target: primaryImage; opacity: 1 }
218+ }
219+ ]
220+
221+ transitions: [
222+ Transition {
223+ to: "searching"
224+ reversible: true
225+ SequentialAnimation {
226+ NumberAnimation { target: primaryImage; property: "opacity"; duration: UbuntuAnimation.FastDuration; easing.type: Easing.Linear }
227+ NumberAnimation { target: searchIndicator; property: "opacity"; duration: UbuntuAnimation.FastDuration; easing.type: Easing.Linear }
228+ }
229+ }
230+ ]
188 }
231 }
189
232
190 states: [
233 states: [
Greeter/PinPadButton.qml → Components/PinPadButton.qmlrenamed

The content is the same.

Components/Showable.qml+11
@@ -30,6 +30,7 @@ Item {
30 property bool created: true
30 property bool created: true
31 property bool required
31 property bool required
32 property bool __shouldShow: false
32 property bool __shouldShow: false
33+ property bool __skipShowAnimation: false
33
34
34 property list<QtObject> hides
35 property list<QtObject> hides
35 property var showAnimation
36 property var showAnimation
@@ -58,6 +59,11 @@ Item {
58 }
59 }
59 }
60 }
60
61
62+ function showNow() {
63+ __skipShowAnimation = true;
64+ show();
65+ }
66+
61 onCreatedChanged: {
67 onCreatedChanged: {
62 if (created && __shouldShow) {
68 if (created && __shouldShow) {
63 __reallyShow();
69 __reallyShow();
@@ -67,6 +73,7 @@ Item {
67
73
68 function __reallyShow() {
74 function __reallyShow() {
69 if (!available) {
75 if (!available) {
76+ __skipShowAnimation = false;
70 return false;
77 return false;
71 }
78 }
72
79
@@ -80,11 +87,15 @@ Item {
80 if (!showAnimation.running) {
87 if (!showAnimation.running) {
81 showAnimation.restart()
88 showAnimation.restart()
82 }
89 }
90+ if (__skipShowAnimation) {
91+ showAnimation.complete();
92+ }
83 } else {
93 } else {
84 visible = true;
94 visible = true;
85 }
95 }
86
96
87 shown = true;
97 shown = true;
98+ __skipShowAnimation = false;
88 return true;
99 return true;
89 }
100 }
90
101
Components/Stage.qml+4−1
@@ -97,7 +97,9 @@ Showable {
97 if (shouldUseScreenshots) {
97 if (shouldUseScreenshots) {
98 stage.__focusApplicationUsingScreenshots(stage.focusedApplication);
98 stage.__focusApplicationUsingScreenshots(stage.focusedApplication);
99 } else {
99 } else {
100+ if (stage.focusedApplicationWhenUsingScreenshots) {
100− stage.__focusActualApplication(stage.focusedApplicationWhenUsingScreenshots);
101+ stage.__focusActualApplication(stage.focusedApplicationWhenUsingScreenshots);
102+ }
101 }
103 }
102 }
104 }
103
105
@@ -244,6 +246,7 @@ Showable {
244 */
246 */
245 delayedHideScreenshots.start();
247 delayedHideScreenshots.start();
246 } else {
248 } else {
249+ stage.focusedApplicationWhenUsingScreenshots = null;
247 stage.__hideScreenshots();
250 stage.__hideScreenshots();
248 }
251 }
249 }
252 }
Components/Tile.qml+6−63
@@ -18,70 +18,13 @@ import QtQuick 2.0
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19
19
20AbstractButton {
20AbstractButton {
21− id: root
22− property alias source: image.source
21+ property url source
23− property alias fillMode: image.fillMode
22+ property int fillMode: Image.PreserveAspectCrop
24− property alias horizontalAlignment: image.horizontalAlignment
23+ property int horizontalAlignment: Text.AlignHCenter
25− property alias verticalAlignment: image.verticalAlignment
24+ property string text
26− property alias text: label.text
27 property int imageWidth
25 property int imageWidth
28 property int imageHeight
26 property int imageHeight
27+ property int maximumLineCount: 1
29
28
30− UbuntuShape {
29+ style: TileStyle {}
31− id: icon
32− anchors {
33− top: parent.top
34− horizontalCenter: parent.horizontalCenter
35− }
36− radius: "medium"
37− width: imageWidth
38− height: imageHeight
39− image: Image {
40− id: image
41− objectName: "image"
42− sourceSize { width: icon.width; height: icon.height }
43− asynchronous: true
44− cache: false
45− }
46− }
47−
48− UbuntuShape {
49− id: borderPressed
50− objectName: "borderPressed"
51−
52− anchors.fill: icon
53− radius: "medium"
54− borderSource: "radius_pressed.sci"
55− opacity: root.pressed ? 1.0 : 0.0
56− Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
57− }
58−
59− Item {
60− anchors {
61− left: parent.left
62− right: parent.right
63− top: icon.bottom
64− }
65− height: units.gu(2)
66−
67− Label {
68− id: label
69− objectName: "label"
70− anchors {
71− baseline: parent.bottom
72− left: parent.left
73− right: parent.right
74− leftMargin: units.gu(1)
75− rightMargin: units.gu(1)
76− }
77−
78− color: Theme.palette.selected.backgroundText
79− opacity: 0.9
80− style: Text.Raised
81− styleColor: "black"
82− fontSize: "small"
83− elide: Text.ElideMiddle
84− horizontalAlignment: Text.AlignHCenter
85− }
86− }
87}
30}
Components/TileStyle.qmlnew file+81
@@ -0,0 +1,81 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+
20+Item {
21+ id: tile
22+
23+ anchors.fill: parent
24+
25+ UbuntuShape {
26+ id: icon
27+ anchors {
28+ top: parent.top
29+ horizontalCenter: parent.horizontalCenter
30+ }
31+ radius: "medium"
32+ width: styledItem.imageWidth
33+ height: styledItem.imageHeight
34+ image: Image {
35+ id: image
36+ objectName: "image"
37+ sourceSize { width: icon.width; height: icon.height }
38+ asynchronous: true
39+ cache: false
40+ source: styledItem.source
41+ fillMode: styledItem.fillMode
42+ horizontalAlignment: Image.AlignHCenter
43+ verticalAlignment: Image.AlignVCenter
44+ }
45+ }
46+
47+ UbuntuShape {
48+ id: borderPressed
49+ objectName: "borderPressed"
50+
51+ anchors.fill: icon
52+ radius: "medium"
53+ borderSource: "radius_pressed.sci"
54+ opacity: styledItem.pressed ? 1.0 : 0.0
55+ Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
56+ }
57+
58+ Label {
59+ id: label
60+ objectName: "label"
61+ anchors {
62+ baseline: icon.bottom
63+ baselineOffset: units.gu(2)
64+ left: parent.left
65+ right: parent.right
66+ leftMargin: units.gu(1)
67+ rightMargin: units.gu(1)
68+ }
69+
70+ color: Theme.palette.selected.backgroundText
71+ opacity: 0.9
72+ style: Text.Raised
73+ styleColor: "black"
74+ fontSize: "small"
75+ elide: Text.ElideMiddle
76+ horizontalAlignment: styledItem.horizontalAlignment
77+ text: styledItem.text
78+ wrapMode: Text.Wrap
79+ maximumLineCount: styledItem.maximumLineCount
80+ }
81+}
Components/VolumeControl.qml+1−1
@@ -28,7 +28,7 @@ Item {
28 busName: "com.canonical.indicator.sound"
28 busName: "com.canonical.indicator.sound"
29 objectPath: "/com/canonical/indicator/sound"
29 objectPath: "/com/canonical/indicator/sound"
30
30
31− property variant actionObject: action("scroll")
31+ property variant actionObject: action("volume")
32 }
32 }
33
33
34 function volumeUp() {
34 function volumeUp() {
Dash/Apps/AppPreview.qml+70−123
@@ -16,153 +16,101 @@
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19−import Ubuntu.Components.ListItems 0.1 as ListItem
19+import Ubuntu.Components.ListItems 0.1 as ListItems
20−import Ubuntu.DownloadDaemonListener 0.1
21import ".."
20import ".."
21+import "../Generic"
22+import "../Previews"
22import "../../Components"
23import "../../Components"
23
24
24−DashPreview {
25+GenericPreview {
25 id: root
26 id: root
26
27
27 signal sendUserReview(string review)
28 signal sendUserReview(string review)
28
29
29− title: root.previewData.title
30+ previewImages: previewImagesComponent
31+ description: descriptionComponent
32+ header: headerComponent
30
33
31− header: ListView {
34+ // TODO: Ratings are not yet complete... enable this once they work
32− spacing: units.gu(1)
35+ //ratings: ratingsComponent
33− orientation: ListView.Horizontal
34− height: units.gu(22)
35− anchors {
36− left: parent.left
37− right: parent.right
38− margins: units.gu(1)
39− }
40− model: previewData.infoMap["more-screenshots"] != null ? previewData.infoMap["more-screenshots"].value : [previewData.image]
41
36
42− delegate: UbuntuShape {
37+ Component {
43− id: shape
38+ id: previewImagesComponent
39+ ListView {
40+ id: previewImageListView
41+ spacing: units.gu(1)
42+ orientation: ListView.Horizontal
43+ height: units.gu(22)
44+ model: previewData.infoMap["more-screenshots"] != null ? previewData.infoMap["more-screenshots"].value : [previewData.image]
45+ cacheBuffer: width * 3
46+
47+ LazyImage {
48+ objectName: "placeholderScreenshot"
44− anchors {
49+ anchors {
45− top: parent.top
50+ top: parent.top
46− bottom: parent.bottom
51+ bottom: parent.bottom
52+ }
53+ scaleTo: "height"
54+ source: "broken_image"
55+ initialWidth: units.gu(13)
56+ visible: previewImageListView.count == 0
47 }
57 }
48− width: units.gu(12)
58+
49− radius: "medium"
59+ delegate: LazyImage {
50− borderSource: ""
60+ id: shape
51− image: Image {
61+ anchors {
52− asynchronous: true
62+ top: parent.top
53− sourceSize { width: shape.width; height: shape.height }
63+ bottom: parent.bottom
64+ }
54 source: modelData ? modelData : ""
65 source: modelData ? modelData : ""
55− fillMode: Image.PreserveAspectCrop
66+ scaleTo: "height"
67+ initialWidth: units.gu(13)
56 }
68 }
57 }
69 }
58 }
70 }
59
71
60 Component {
72 Component {
61− id: buttonsComponent
73+ id: headerComponent
62−
74+ Header {
63− GridView {
64− id: buttonsGrid
65− objectName: "gridButtons"
75+ objectName: "previewHeader"
66−
76+ title: previewData.title
67− property int numOfRows: (count + 1) / 2
77+ icon: previewData.appIcon
68− property int spacing: units.gu(1)
78+ subtitle: root.previewData.infoMap["publisher"] ? root.previewData.infoMap["publisher"].value : ""
69− height: Math.max(units.gu(5), units.gu(5)*numOfRows + spacing*(numOfRows - 1))
79+ rating: Math.round(root.previewData.rating * 10)
70−
80+ reviews: root.previewData.numRatings
71− interactive: false
81+ rated: root.previewData.infoMap["rated"] ? root.previewData.infoMap["rated"].value : 0
72− cellWidth: Math.max(units.gu(9), width / 2)
73− cellHeight: buttonHeight + spacing
74− property int buttonWidth: count > 1 ? Math.max(0, width / 2 - spacing) : width
75− property int buttonHeight: units.gu(5)
76−
77− delegate: Button {
78− width: Math.max(units.gu(4), buttonsGrid.buttonWidth)
79− height: buttonsGrid.buttonHeight
80− color: Theme.palette.selected.foreground
81− text: modelData.displayName
82− iconSource: modelData.iconHint
83− iconPosition: "right"
84− onClicked: root.previewData.execute(modelData.id, { })
85− }
86 }
82 }
87 }
83 }
88
84
89 Component {
85 Component {
90− id: progressComponent
86+ id: descriptionComponent
91−
87+ Column {
92− ProgressBar {
93− id: progressBar
94− objectName: "progressBar"
95− value: 0
96− maximumValue: 100
97− height: units.gu(5)
88+ spacing: units.gu(1)
98−
99− property var model
100−
101− DownloadTracker {
102− service: "com.canonical.applications.Downloader"
103− dbusPath: root.previewData.infoMap["progressbar_source"] ? root.previewData.infoMap["progressbar_source"].value : ""
104−
105− onProgress: {
106− var percentage = parseInt(received * 100 / total);
107− progressBar.value = percentage;
108− }
109−
110− onFinished: {
111− root.previewData.execute(progressBar.model[0].id, { })
112− }
113
89
114− onError: {
90+ Label {
115− root.previewData.execute(progressBar.model[1].id, { "error": error });
91+ anchors { left: parent.left; right: parent.right }
116− }
92+ text: root.previewData.description
93+ fontSize: "medium"
94+ color: Theme.palette.selected.backgroundText
95+ opacity: .6
96+ wrapMode: Text.WordWrap
97+ style: Text.Raised
98+ styleColor: "black"
117 }
99 }
118−
119− }
120− }
121−
122− buttons: Loader {
123− anchors {
124− left: parent.left
125− right: parent.right
126− }
127−
128− sourceComponent: root.previewData.infoMap["show_progressbar"] ? progressComponent : buttonsComponent
129−
130− onLoaded: {
131− item.model = root.previewData.actions;
132 }
100 }
133 }
101 }
134
102
135− body: Column {
103+ Component {
136− spacing: units.gu(1)
104+ id: ratingsComponent
137−
138− AppInfo {
139− objectName: "appInfo"
140− anchors { left: parent.left; right: parent.right }
141−
142− appName: root.previewData.title
143− icon: root.previewData.appIcon
144− rating: Math.round(root.previewData.rating * 10)
145− reviews: root.previewData.numRatings
146− rated: root.previewData.infoMap["rated"] ? root.previewData.infoMap["rated"].value : 0
147− }
148−
149− Label {
150− anchors { left: parent.left; right: parent.right }
151− text: root.previewData.description
152− fontSize: "medium"
153− color: Theme.palette.selected.backgroundText
154− opacity: .6
155− wrapMode: Text.WordWrap
156− style: Text.Raised
157− styleColor: "black"
158− }
159−
160 Column {
105 Column {
106+ id: columnReviewRating
107+ objectName: "columnReviewRating"
161 visible: root.previewData.rating >= 0
108 visible: root.previewData.rating >= 0
162− anchors { left: parent.left; right: parent.right }
163− spacing: parent.spacing
164
109
110+ spacing: units.gu(1)
111+ height: childrenRect.height
112+
165− ListItem.ThinDivider { }
113+ ListItems.ThinDivider { }
166
114
167 Item {
115 Item {
168 anchors { left: parent.left; right: parent.right }
116 anchors { left: parent.left; right: parent.right }
@@ -188,13 +136,12 @@ DashPreview {
188 }
136 }
189 }
137 }
190
138
191− ListItem.ThinDivider { }
139+ ListItems.ThinDivider { }
192
140
193− AppReviews {
141+ Reviews {
194 id: appReviews
142 id: appReviews
195 objectName: "appReviews"
143 objectName: "appReviews"
196− // TODO: This should make this visible when the feature for reviews/comments is complete.
144+
197− visible: false
198 anchors { left: parent.left; right: parent.right }
145 anchors { left: parent.left; right: parent.right }
199
146
200 model: root.previewData.infoMap["comments"] ? root.previewData.infoMap["comments"].value : undefined
147 model: root.previewData.infoMap["comments"] ? root.previewData.infoMap["comments"].value : undefined
Dash/Apps/AppsAvailableForDownloadModel.qmldeleted−81
@@ -1,81 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import "../../Applications"
19−
20−ListModel {
21− ListElement {
22− uri: "application://evernote.desktop"
23− icon: "../../graphics/applicationIcons/evernote.png"
24− category: 0
25− mimetype: "application/x-desktop"
26− title: "Evernote"
27− comment: ""
28− dndUri: "file:///usr/share/applications/evernote.desktop"
29− metadata: ""
30− }
31− ListElement {
32− uri: "application://map.desktop"
33− icon: "../../graphics/applicationIcons/map.png"
34− category: 0
35− mimetype: "application/x-desktop"
36− title: "Map"
37− comment: ""
38− dndUri: "file:///usr/share/applications/map.desktop"
39− metadata: ""
40− }
41− ListElement {
42− uri: "application://pinterest.desktop"
43− icon: "../../graphics/applicationIcons/pinterest.png"
44− category: 0
45− mimetype: "application/x-desktop"
46− title: "Pinterest"
47− comment: ""
48− dndUri: "file:///usr/share/applications/pinterest.desktop"
49− metadata: ""
50− }
51− ListElement {
52− uri: "application://soundcloud.desktop"
53− icon: "../../graphics/applicationIcons/soundcloud.png"
54− category: 0
55− mimetype: "application/x-desktop"
56− title: "Soundcloud"
57− comment: ""
58− dndUri: "file:///usr/share/applications/soundcloud.desktop"
59− metadata: ""
60− }
61− ListElement {
62− uri: "application://wikipedia.desktop"
63− icon: "../../graphics/applicationIcons/wikipedia.png"
64− category: 0
65− mimetype: "application/x-desktop"
66− title: "Wikipedia"
67− comment: ""
68− dndUri: "file:///usr/share/applications/wikipedia.desktop"
69− metadata: ""
70− }
71− ListElement {
72− uri: "application://youtube.desktop"
73− icon: "../../graphics/applicationIcons/youtube.png"
74− category: 0
75− mimetype: "application/x-desktop"
76− title: "Youtube"
77− comment: ""
78− dndUri: "file:///usr/share/applications/youtube.desktop"
79− metadata: ""
80− }
81−}
Dash/Apps/DashPluginFilterGrid.qmlnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import "../../Components"
20+import "../Generic"
21+
22+GenericFilterGrid {
23+ id: filtergrid
24+
25+ delegate: Tile {
26+ id: tile
27+ objectName: "delegate" + index
28+ width: filtergrid.cellWidth
29+ height: filtergrid.cellHeight
30+ text: model.title
31+ imageWidth: filtergrid.iconWidth
32+ imageHeight: filtergrid.iconHeight
33+ source: model.icon
34+
35+ style: FlatTileStyle {
36+ disabled: model.rendererHints['scope_disabled'] === 1;
37+ }
38+
39+ onClicked: {
40+ var data = { model: model }
41+ filtergrid.clicked(index, data, tile.y)
42+ }
43+
44+ onPressAndHold: {
45+ var data = { model: model }
46+ filtergrid.pressAndHold(index, data, tile.y)
47+ }
48+ }
49+}
Dash/Apps/FrequentlyUsedAppsModel.qml+4−4
@@ -68,13 +68,13 @@ ListModel {
68 metadata: ""
68 metadata: ""
69 }
69 }
70 ListElement {
70 ListElement {
71− uri: "application:///usr/share/applications/facebook-webapp.desktop"
71+ uri: "appid://com.ubuntu.developer.webapps.webapp-facebook/webapp-facebook/current-user-version"
72 icon: "../../graphics/applicationIcons/facebook.png"
72 icon: "../../graphics/applicationIcons/facebook.png"
73 category: 0
73 category: 0
74 mimetype: "application/x-desktop"
74 mimetype: "application/x-desktop"
75 title: "Facebook"
75 title: "Facebook"
76 comment: ""
76 comment: ""
77− dndUri: "file:///usr/share/applications/facebook-webapp.desktop"
77+ dndUri: "appid://com.ubuntu.developer.webapps.webapp-facebook/webapp-facebook/current-user-version"
78 metadata: ""
78 metadata: ""
79 }
79 }
80 ListElement {
80 ListElement {
@@ -88,13 +88,13 @@ ListModel {
88 metadata: ""
88 metadata: ""
89 }
89 }
90 ListElement {
90 ListElement {
91− uri: "application:///usr/share/applications/gmail-webapp.desktop"
91+ uri: "appid://com.ubuntu.developer.webapps.webapp-gmail/webapp-gmail/current-user-version"
92 icon: "../../graphics/applicationIcons/gmail.png"
92 icon: "../../graphics/applicationIcons/gmail.png"
93 category: 0
93 category: 0
94 mimetype: "application/x-desktop"
94 mimetype: "application/x-desktop"
95 title: "GMail"
95 title: "GMail"
96 comment: ""
96 comment: ""
97− dndUri: "file:///usr/share/applications/gmail-webapp.desktop"
97+ dndUri: "appid://com.ubuntu.developer.webapps.webapp-gmail/webapp-gmail/current-user-version"
98 metadata: ""
98 metadata: ""
99 }
99 }
100 ListElement {
100 ListElement {
Dash/Apps/RunningApplicationsGrid.qml+20−1
@@ -22,6 +22,8 @@ ResponsiveFlowView {
22 clip: true
22 clip: true
23
23
24 signal updateScreenshots
24 signal updateScreenshots
25+ property alias enableHeightBehavior: heightBehaviour.enabled
26+ property bool enableHeightBehaviorOnNextCreation: firstModel.count + secondModel.count == 0
25
27
26 Connections {
28 Connections {
27 target: shell
29 target: shell
@@ -29,7 +31,24 @@ ResponsiveFlowView {
29 onStageScreenshotsReadyChanged: if (shell.dashShown && shell.stageScreenshotsReady) updateScreenshots();
31 onStageScreenshotsReadyChanged: if (shell.dashShown && shell.stageScreenshotsReady) updateScreenshots();
30 }
32 }
31
33
34+ Behavior on height {
35+ id: heightBehaviour
36+ enabled: false
32− Behavior on height { NumberAnimation { duration: 200; easing.type: Easing.InOutQuad } }
37+ NumberAnimation { duration: 200; easing.type: Easing.InOutQuad }
38+ }
39+
40+ Connections {
41+ target: root.firstModel
42+ onCountChanged: {
43+ heightBehaviour.enabled = true;
44+ }
45+ }
46+ Connections {
47+ target: root.secondModel
48+ onCountChanged: {
49+ heightBehaviour.enabled = true;
50+ }
51+ }
33
52
34 property bool canEnableTerminationMode: true
53 property bool canEnableTerminationMode: true
35
54
Dash/Dash.qml+3
@@ -22,6 +22,9 @@ import "../Components"
22
22
23Showable {
23Showable {
24 id: dash
24 id: dash
25+ objectName: "dash"
26+
27+ visible: shown
25
28
26 property alias contentProgress: dashContent.contentProgress
29 property alias contentProgress: dashContent.contentProgress
27 property string showScopeOnLoaded: "home.scope"
30 property string showScopeOnLoaded: "home.scope"
Dash/DashApps.qml+2
@@ -24,6 +24,7 @@ import "Apps"
24
24
25GenericScopeView {
25GenericScopeView {
26 id: scopeView
26 id: scopeView
27+ objectName: "DashApps"
27
28
28 // FIXME: a way to aggregate these models would be ideal
29 // FIXME: a way to aggregate these models would be ideal
29 property var mainStageApplicationsModel: shell.applicationManager.mainStageApplications
30 property var mainStageApplicationsModel: shell.applicationManager.mainStageApplications
@@ -51,5 +52,6 @@ GenericScopeView {
51
52
52 onScopeChanged: {
53 onScopeChanged: {
53 scopeView.scope.categories.overrideResults("recent", runningApplicationsModel);
54 scopeView.scope.categories.overrideResults("recent", runningApplicationsModel);
55+ enableHeightBehaviorOnNextCreation = (mainStageApplicationsModel.count + sideStageApplicationModel.count == 0)
54 }
56 }
55}
57}
Dash/DashContent.qml+2−1
@@ -114,6 +114,7 @@ Item {
114 height: ListView.view.height
114 height: ListView.view.height
115 asynchronous: true
115 asynchronous: true
116 source: scopeMapper.map(scope.id)
116 source: scopeMapper.map(scope.id)
117+ objectName: scope.id + " loader"
117
118
118 // these are needed for autopilot tests
119 // these are needed for autopilot tests
119 readonly property string scopeId: scope.id
120 readonly property string scopeId: scope.id
@@ -122,7 +123,7 @@ Item {
122
123
123 onLoaded: {
124 onLoaded: {
124 item.scope = Qt.binding(function() { return scope })
125 item.scope = Qt.binding(function() { return scope })
125− item.isCurrent = Qt.binding(function() { return ListView.isCurrentItem })
126+ item.isCurrent = Qt.binding(function() { return visible && ListView.isCurrentItem })
126 item.searchHistory = Qt.binding(function() { return shell.searchHistory })
127 item.searchHistory = Qt.binding(function() { return shell.searchHistory })
127 dashContentList.movementStarted.connect(item.movementStarted)
128 dashContentList.movementStarted.connect(item.movementStarted)
128 dashContent.positionedAtBeginning.connect(item.positionedAtBeginning)
129 dashContent.positionedAtBeginning.connect(item.positionedAtBeginning)
Dash/DashPreview.qml+91−93
@@ -23,19 +23,18 @@ Rectangle {
23 property int keyboardSize: Qt.inputMethod.visible ? Qt.inputMethod.keyboardRectangle.height : 0
23 property int keyboardSize: Qt.inputMethod.visible ? Qt.inputMethod.keyboardRectangle.height : 0
24 property var previewData
24 property var previewData
25
25
26− property string title: ""
27 property real previewWidthRatio: 0.5
26 property real previewWidthRatio: 0.5
28
27
28+ property Component previewImages
29 property Component header
29 property Component header
30− property Component buttons
30+ property Component actions
31− property Component body
31+ property Component description
32+ property Component ratings
32
33
33− readonly property bool narrowMode: width <= height
34+ readonly property bool narrowMode: width <= height * 1.5
35+ readonly property int columnWidth: narrowMode ? contentRow.width : (contentRow.width / 3) - contentRow.spacing
34 readonly property int contentSpacing: units.gu(3)
36 readonly property int contentSpacing: units.gu(3)
35
37
36− signal close()
37− signal previewImageClicked()
38−
39 color: Qt.rgba(0, 0, 0, .3)
38 color: Qt.rgba(0, 0, 0, .3)
40 clip: true
39 clip: true
41
40
@@ -61,87 +60,32 @@ Rectangle {
61 anchors.fill: parent
60 anchors.fill: parent
62 }
61 }
63
62
64− Item {
65− id: headerRow
66− height: units.gu(4)
67− anchors {
68− top: parent.top
69− left: parent.left
70− right: parent.right
71− margins: root.contentSpacing
72− }
73−
74− MouseArea {
75− anchors {
76− fill: parent
77− leftMargin: -root.contentSpacing
78− rightMargin: -root.contentSpacing
79− topMargin: -root.contentSpacing
80− }
81−
82− onClicked: root.close();
83− }
84−
85− Item {
86− id: labelItem
87− anchors {
88− fill: parent
89− rightMargin: closePreviewImage.width + spacing
90− }
91−
92− property int spacing: units.gu(2)
93−
94− Label {
95− id: title
96− objectName: "titleLabel"
97− anchors {
98− left: parent.left
99− right: parent.right
100− }
101−
102− elide: Text.ElideRight
103− fontSize: "x-large"
104− font.weight: Font.Light
105− color: Theme.palette.selected.backgroundText
106− opacity: 0.9
107− text: root.title
108− style: Text.Raised
109− styleColor: "black"
110− }
111− Image {
112− id: closePreviewImage
113− source: "graphics/tablet/icon_close_preview.png"
114− width: units.gu(4)
115− height: units.gu(1.5)
116− anchors {
117− bottom: title.bottom
118− bottomMargin: units.dp(7)
119− left: parent.left
120− leftMargin: title.paintedWidth + labelItem.spacing
121− }
122− }
123− }
124− }
125
63
126 Row {
64 Row {
127 id: contentRow
65 id: contentRow
128 anchors {
66 anchors {
129 left: parent.left
67 left: parent.left
68+ top: parent.top
130 right: parent.right
69 right: parent.right
131− top: headerRow.bottom
132 bottom: parent.bottom
70 bottom: parent.bottom
71+ topMargin: root.contentSpacing
72+ leftMargin: root.contentSpacing
133− margins: root.contentSpacing
73+ rightMargin: root.contentSpacing
134 }
74 }
75+ height: childrenRect.height
135
76
136 spacing: units.gu(2)
77 spacing: units.gu(2)
137
78
79+
138 Flickable {
80 Flickable {
139 id: leftFlickable
81 id: leftFlickable
140 objectName: "leftFlickable"
82 objectName: "leftFlickable"
83+ anchors {
141− anchors.top: parent.top
84+ top: parent.top
142− anchors.bottom: parent.bottom
85+ bottom: parent.bottom
143− width: root.narrowMode ? contentRow.width : contentRow.width * root.previewWidthRatio
86+ }
87+ width: root.columnWidth
144− contentHeight: leftColumn.height
88+ contentHeight: leftColumn.height + root.contentSpacing
145 anchors.bottomMargin: root.keyboardSize
89 anchors.bottomMargin: root.keyboardSize
146 clip: true
90 clip: true
147
91
@@ -150,33 +94,44 @@ Rectangle {
150 Column {
94 Column {
151 id: leftColumn
95 id: leftColumn
152 objectName: "leftColumn"
96 objectName: "leftColumn"
97+ height: childrenRect.height
98+ spacing: root.contentSpacing
153 anchors {
99 anchors {
154 left: parent.left
100 left: parent.left
155 right: parent.right
101 right: parent.right
156 }
102 }
157− height: childrenRect.height
103+ }
158− spacing: units.gu(1)
104+ }
159
105
160− Loader {
106+ Flickable {
161− id: headerLoader
107+ id: centerFlickable
162− anchors.left: parent.left
108+ anchors {
163− anchors.right: parent.right
109+ top: parent.top
164− sourceComponent: root.header
110+ bottom: parent.bottom
165− }
111+ }
166− Loader {
112+ width: root.columnWidth
167− id: buttonLoader
113+ contentHeight: centerColumn.height
114+ clip: true
115+
116+ Column {
117+ id: centerColumn
118+ objectName: "centerColumn"
119+ height: childrenRect.height
120+ anchors {
168− anchors.left: parent.left
121+ left: parent.left
169− anchors.right: parent.right
122+ right: parent.right
170− sourceComponent: root.buttons
171 }
123 }
124+ spacing: root.contentSpacing
172 }
125 }
173 }
126 }
174
127
175 Flickable {
128 Flickable {
176 id: rightFlickable
129 id: rightFlickable
130+ anchors {
177− anchors.top: parent.top
131+ top: parent.top
178− anchors.bottom: parent.bottom
132+ bottom: parent.bottom
179− width: narrowMode ? 0 : (contentRow.width - leftColumn.width - contentRow.spacing)
133+ }
134+ width: root.columnWidth
180 contentHeight: rightColumn.height
135 contentHeight: rightColumn.height
181 clip: true
136 clip: true
182
137
@@ -193,9 +148,52 @@ Rectangle {
193 }
148 }
194
149
195 Loader {
150 Loader {
151+ id: previewImageLoader
152+ parent: leftColumn
153+ sourceComponent: root.previewImages
154+ anchors {
155+ left: parent.left
156+ right: parent.right
157+ }
158+ }
159+
160+ Loader {
161+ id: ratingsLoader
196 parent: root.narrowMode ? leftColumn : rightColumn
162 parent: root.narrowMode ? leftColumn : rightColumn
163+ anchors {
164+ left: parent.left
165+ right: parent.right
166+ }
167+ sourceComponent: root.ratings
168+ }
169+
170+ Loader {
171+ id: descriptionLoader
172+ parent: root.narrowMode ? leftColumn : centerColumn
173+ anchors {
197− anchors.left: parent.left
174+ left: parent.left
175+ right: parent.right
176+ }
177+ sourceComponent: root.description
178+ }
179+
180+ Loader {
181+ id: actionsLoader
182+ parent: root.narrowMode ? leftColumn : centerColumn
183+ anchors {
184+ left: parent.left
198− anchors.right: parent.right
185+ right: parent.right
186+ }
199− sourceComponent: root.body
187+ sourceComponent: root.actions
188+ }
189+
190+ Loader {
191+ id: headerLoader
192+ parent: root.narrowMode ? leftColumn : centerColumn
193+ anchors {
194+ left: parent.left
195+ right: parent.right
196+ }
197+ sourceComponent: root.header
200 }
198 }
201}
199}
Dash/Generic/FlatTileStyle.qmlnew file+79
@@ -0,0 +1,79 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+
20+Item {
21+ id: tile
22+
23+ property bool disabled: false
24+
25+ anchors.fill: parent
26+
27+ Image {
28+ id: icon
29+ objectName: "image"
30+ width: styledItem.imageWidth
31+ height: styledItem.imageHeight
32+
33+ anchors.horizontalCenter: parent.horizontalCenter
34+
35+ sourceSize { width: width; height: height }
36+ asynchronous: true
37+ cache: false
38+ source: styledItem.source
39+ fillMode: styledItem.fillMode
40+ opacity: tile.disabled ? 0.3 : 1.0
41+ horizontalAlignment: Image.AlignHCenter
42+ verticalAlignment: Image.AlignVCenter
43+ }
44+
45+ UbuntuShape {
46+ id: borderPressed
47+ objectName: "borderPressed"
48+
49+ anchors.fill: icon
50+ radius: "medium"
51+ borderSource: "radius_pressed.sci"
52+ opacity: styledItem.pressed ? 1.0 : 0.0
53+ Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
54+ }
55+
56+ Label {
57+ id: label
58+ objectName: "label"
59+ anchors {
60+ baseline: icon.bottom
61+ baselineOffset: units.gu(2)
62+ left: parent.left
63+ right: parent.right
64+ leftMargin: units.gu(1)
65+ rightMargin: units.gu(1)
66+ }
67+
68+ color: Theme.palette.selected.backgroundText
69+ opacity: 0.9
70+ style: Text.Raised
71+ styleColor: "black"
72+ fontSize: "small"
73+ elide: Text.ElideMiddle
74+ horizontalAlignment: styledItem.horizontalAlignment
75+ text: styledItem.text
76+ wrapMode: Text.Wrap
77+ maximumLineCount: styledItem.maximumLineCount
78+ }
79+}
Dash/Generic/GenericFilterGrid.qml−3
@@ -39,11 +39,8 @@ FilterGrid {
39 text: model.title
39 text: model.title
40 imageWidth: filtergrid.iconWidth
40 imageWidth: filtergrid.iconWidth
41 imageHeight: filtergrid.iconHeight
41 imageHeight: filtergrid.iconHeight
42−
43 source: model.icon
42 source: model.icon
44
43
45− fillMode: Image.PreserveAspectCrop
46−
47 onClicked: {
44 onClicked: {
48 var data = { model: model }
45 var data = { model: model }
49 filtergrid.clicked(index, data, tile.y)
46 filtergrid.clicked(index, data, tile.y)
Dash/Generic/GenericPreview.qml+158−70
@@ -16,90 +16,178 @@
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19+import Ubuntu.Components.ListItems 0.1 as ListItems
20+import Ubuntu.DownloadDaemonListener 0.1
19import "../../Components"
21import "../../Components"
20−import "../../Components/ListItems" as ListItems
21import ".."
22import ".."
23+import "../Previews"
22
24
23DashPreview {
25DashPreview {
24 id: genericPreview
26 id: genericPreview
25
27
26− title: previewData.title
28+ previewImages: previewImagesComponent
27− previewWidthRatio: 0.6
29+ header: headerComponent
28−
30+ actions: (previewData.infoMap !== undefined && previewData.infoMap["show_progressbar"]) ? progressComponent : actionsComponent
29− property url url: previewData.image
31+ description: descriptionComponent
30−
32+
31− header: UbuntuShape {
33+ Component {
32− id: urlLoader
34+ id: previewImagesComponent
33− anchors.left: parent.left
35+
34− anchors.right: parent.right
36+ LazyImage {
35− height: width * previewImage.sourceSize.height / previewImage.sourceSize.width
37+ objectName: "genericPreviewImage"
36− radius: "medium"
38+ anchors {
37− image: Image {
39+ left: parent.left
38− id: previewImage
40+ right: parent.right
39− asynchronous: true
41+ }
42+ scaleTo: "width"
40− source: genericPreview.url
43+ source: genericPreview.previewData.image
41− fillMode: Image.PreserveAspectCrop
44+ initialHeight: width
45+ }
46+ }
47+
48+ Component {
49+ id: headerComponent
50+ Header {
51+ title: previewData.title
52+ subtitle: previewData.subtitle
42 }
53 }
43 }
54 }
44
55
45− buttons: GridView {
56+ Component {
46− id: buttons
57+ id: actionsComponent
58+
59+ Column {
60+ id: buttonList
61+ spacing: units.gu(1)
62+ Repeater {
63+ objectName: "buttonList"
47− model: genericPreview.previewData.actions
64+ model: previewData.actions
48−
65+
49− property int numOfRows: (count + 1) / 2
50− property int spacing: units.gu(1)
51− height: Math.max(units.gu(4), units.gu(4)*numOfRows + spacing*(numOfRows - 1))
52−
53− cellWidth: Math.max(units.gu(9), width / 2)
54− cellHeight: buttonHeight + spacing
55− property int buttonWidth: Math.max(0, width / 2 - spacing)
56− property int buttonHeight: units.gu(4)
57−
58− delegate: Button {
66+ delegate: Button {
59− width: Math.max(units.gu(4), buttons.buttonWidth)
67+ objectName: "button" + index
68+ width: parent.width
60− height: buttons.buttonHeight
69+ height: buttonList.buttonHeight
61− color: "#dd4814"
70+ color: Theme.palette.selected.foreground
62− text: modelData.displayName
71+ text: modelData.displayName
63− iconSource: modelData.iconHint
72+ iconSource: modelData.iconHint
64− iconPosition: "right"
73+ iconPosition: "right"
65− visible: true
66− onClicked: {
67− genericPreview.previewData.execute(modelData.id, { })
74+ onClicked: previewData.execute(modelData.id, { })
75+ }
68 }
76 }
69 }
77 }
70− focus: false
71 }
78 }
72− body: Column {
79+
80+ Component {
81+ id: progressComponent
82+
83+ ProgressBar {
84+ id: progressBar
85+ objectName: "progressBar"
86+ value: 0
87+ maximumValue: 100
73− spacing: units.gu(2)
88+ height: units.gu(5)
74−
89+
75− Label {
90+ property var model: previewData.actions
76− anchors { left: parent.left; right: parent.right }
91+
77− visible: text != ""
92+ DownloadTracker {
78− fontSize: "medium"
93+ service: "com.canonical.applications.Downloader"
79− opacity: 0.6
94+ dbusPath: previewData.infoMap["progressbar_source"] ? previewData.infoMap["progressbar_source"].value : ""
80− color: "white"
95+
81− text: previewData.subtitle.replace(/[\r\n]+/g, "<br />")
96+ onProgress: {
82− style: Text.Raised
97+ var percentage = parseInt(received * 100 / total);
83− styleColor: "black"
98+ progressBar.value = percentage;
84− wrapMode: Text.WordWrap
99+ }
85− textFormat: Text.RichText
100+
86− // FIXME: workaround for https://bugreports.qt-project.org/browse/QTBUG-33020
101+ onFinished: {
87− onWidthChanged: { wrapMode = Text.NoWrap; wrapMode = Text.WordWrap }
102+ previewData.execute(progressBar.model[0].id, { })
103+ }
104+
105+ onError: {
106+ previewData.execute(progressBar.model[1].id, { "error": error });
107+ }
108+ }
109+
88 }
110 }
111+ }
89
112
113+ Component {
114+ id: descriptionComponent
115+ Column {
116+ spacing: units.gu(2)
117+
90− Label {
118+ Label {
119+ id: descriptionLabel
91− anchors { left: parent.left; right: parent.right }
120+ anchors { left: parent.left; right: parent.right }
92− visible: text != ""
121+ visible: text != ""
93− fontSize: "small"
122+ fontSize: "small"
94− opacity: 0.6
123+ opacity: 0.6
95− color: "white"
124+ color: "white"
96− text: previewData.description.replace(/[\r\n]+/g, "<br />")
125+ text: previewData.description.replace(/[\r\n]/g, "<br />")
97− style: Text.Raised
126+ style: Text.Raised
98− styleColor: "black"
127+ styleColor: "black"
99− wrapMode: Text.WordWrap
128+ wrapMode: Text.WordWrap
100− textFormat: Text.RichText
129+ textFormat: Text.RichText
101− // FIXME: workaround for https://bugreports.qt-project.org/browse/QTBUG-33020
130+ // FIXME: workaround for https://bugreports.qt-project.org/browse/QTBUG-33020
102− onWidthChanged: { wrapMode = Text.NoWrap; wrapMode = Text.WordWrap }
131+ onWidthChanged: { wrapMode = Text.NoWrap; wrapMode = Text.WordWrap }
132+ }
133+
134+ Column {
135+ objectName: "infoHintColumn"
136+ anchors {
137+ left: parent.left
138+ right: parent.right
139+ }
140+ Repeater {
141+ objectName: "infoHintRepeater"
142+ model: previewData.infoHints
143+
144+ delegate: Item {
145+ objectName: "infoHintItem" + index
146+ width: parent.width
147+ height: units.gu(5)
148+ Row {
149+ width: parent.width
150+ spacing: units.gu(1)
151+ property int columnWidth: (width - spacing) / 2
152+ anchors.verticalCenter: parent.verticalCenter
153+
154+ Label {
155+ objectName: "displayNameLabel"
156+ visible: valueLabel.visible
157+ fontSize: "small"
158+ opacity: 0.9
159+ color: "white"
160+ horizontalAlignment: Text.AlignLeft
161+ width: parent.columnWidth
162+ text: modelData.displayName
163+ style: Text.Raised
164+ styleColor: "black"
165+ }
166+ Label {
167+ id: valueLabel
168+ objectName: "valueLabel"
169+ visible: modelData.value != ""
170+ fontSize: "small"
171+ opacity: 0.6
172+ color: "white"
173+ horizontalAlignment: Text.AlignRight
174+ width: parent.columnWidth
175+ text: modelData.value ? modelData.value : ""
176+ style: Text.Raised
177+ styleColor: "black"
178+ wrapMode: Text.WordWrap
179+ }
180+ }
181+ ListItems.ThinDivider {
182+ anchors {
183+ left: parent.left
184+ bottom: parent.bottom
185+ right: parent.right
186+ }
187+ }
188+ }
189+ }
190+ }
103 }
191 }
104 }
192 }
105}
193}
Dash/Generic/WeatherFilterGrid.qmlnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import "../../Components"
20+
21+GenericFilterGrid {
22+ id: filtergrid
23+
24+ delegateHeight: units.gu(11.5)
25+
26+ delegate: Tile {
27+ id: tile
28+ objectName: "delegate" + index
29+ width: filtergrid.cellWidth
30+ height: filtergrid.cellHeight
31+ text: model.title
32+ imageWidth: filtergrid.iconWidth
33+ imageHeight: filtergrid.iconHeight
34+ source: model.icon
35+ maximumLineCount: 2
36+
37+ style: FlatTileStyle {}
38+
39+ onClicked: {
40+ var data = { model: model }
41+ filtergrid.clicked(index, data, tile.y)
42+ }
43+
44+ onPressAndHold: {
45+ var data = { model: model }
46+ filtergrid.pressAndHold(index, data, tile.y)
47+ }
48+ }
49+}
Dash/GenericScopeView.qml+32−4
@@ -22,6 +22,7 @@ import "../Components/ListItems" as ListItems
22ScopeView {
22ScopeView {
23 id: scopeView
23 id: scopeView
24 readonly property alias previewShown: previewLoader.onScreen
24 readonly property alias previewShown: previewLoader.onScreen
25+ property bool enableHeightBehaviorOnNextCreation: false
25
26
26 onIsCurrentChanged: {
27 onIsCurrentChanged: {
27 pageHeader.resetSearch();
28 pageHeader.resetSearch();
@@ -30,6 +31,8 @@ ScopeView {
30
31
31 onMovementStarted: categoryView.showHeader()
32 onMovementStarted: categoryView.showHeader()
32
33
34+ onPositionedAtBeginning: categoryView.positionAtBeginning()
35+
33 Binding {
36 Binding {
34 target: scopeView.scope
37 target: scopeView.scope
35 property: "searchQuery"
38 property: "searchQuery"
@@ -58,6 +61,7 @@ ScopeView {
58
61
59 ScopeListView {
62 ScopeListView {
60 id: categoryView
63 id: categoryView
64+ objectName: "categoryListView"
61 anchors.fill: parent
65 anchors.fill: parent
62 model: scopeView.categories
66 model: scopeView.categories
63 forceNoClip: previewLoader.onScreen
67 forceNoClip: previewLoader.onScreen
@@ -82,13 +86,18 @@ ScopeView {
82 right: parent.right
86 right: parent.right
83 }
87 }
84
88
85− source: getRenderer(model.renderer, model.contentType)
89+ source: getRenderer(model.renderer, model.contentType, model.rendererHint)
86
90
87 onLoaded: {
91 onLoaded: {
92+ if (item.enableHeightBehavior !== undefined && item.enableHeightBehaviorOnNextCreation !== undefined) {
93+ item.enableHeightBehavior = scopeView.enableHeightBehaviorOnNextCreation;
94+ scopeView.enableHeightBehaviorOnNextCreation = false;
95+ }
88 if (source.toString().indexOf("Apps/RunningApplicationsGrid.qml") != -1) {
96 if (source.toString().indexOf("Apps/RunningApplicationsGrid.qml") != -1) {
89 // TODO: the running apps grid doesn't support standard scope results model yet
97 // TODO: the running apps grid doesn't support standard scope results model yet
90 item.firstModel = Qt.binding(function() { return results.firstModel })
98 item.firstModel = Qt.binding(function() { return results.firstModel })
91 item.secondModel = Qt.binding(function() { return results.secondModel })
99 item.secondModel = Qt.binding(function() { return results.secondModel })
100+ item.canEnableTerminationMode = Qt.binding(function() { return scopeView.isCurrent })
92 } else {
101 } else {
93 item.model = Qt.binding(function() { return results })
102 item.model = Qt.binding(function() { return results })
94 }
103 }
@@ -101,6 +110,12 @@ ScopeView {
101 }
110 }
102 }
111 }
103
112
113+ Component.onDestruction: {
114+ if (item.enableHeightBehavior !== undefined && item.enableHeightBehaviorOnNextCreation !== undefined) {
115+ scopeView.enableHeightBehaviorOnNextCreation = item.enableHeightBehaviorOnNextCreation;
116+ }
117+ }
118+
104 Connections {
119 Connections {
105 target: rendererLoader.item
120 target: rendererLoader.item
106 onClicked: {
121 onClicked: {
@@ -176,6 +191,7 @@ ScopeView {
176 width: categoryView.width
191 width: categoryView.width
177 text: scopeView.scope.name
192 text: scopeView.scope.name
178 searchEntryEnabled: true
193 searchEntryEnabled: true
194+ scope: scopeView.scope
179 }
195 }
180 }
196 }
181
197
@@ -185,19 +201,31 @@ ScopeView {
185 }
201 }
186 }
202 }
187
203
188− function getRenderer(rendererId, contentType) {
204+ function getRenderer(rendererId, contentType, rendererHint) {
189 if (rendererId == "default") {
205 if (rendererId == "default") {
190 rendererId = getDefaultRendererId(contentType);
206 rendererId = getDefaultRendererId(contentType);
191 }
207 }
192 switch (rendererId) {
208 switch (rendererId) {
193 case "grid": {
209 case "grid": {
194 switch (contentType) {
210 switch (contentType) {
195− case "video": return "Generic/GenericFilterGridPotrait.qml";
211+ case "video": return "Video/VideoFilterGrid.qml";
196 case "music": return "Music/MusicFilterGrid.qml";
212 case "music": return "Music/MusicFilterGrid.qml";
213+ case "apps": {
214+ if (rendererHint == "toggled")
215+ return "Apps/DashPluginFilterGrid.qml";
216+ else
217+ return "Generic/GenericFilterGrid.qml";
218+ }
219+ case "weather": return "Generic/WeatherFilterGrid.qml";
197 default: return "Generic/GenericFilterGrid.qml";
220 default: return "Generic/GenericFilterGrid.qml";
198 }
221 }
199 }
222 }
223+ case "carousel": {
224+ switch (contentType) {
225+ case "music": return "Music/MusicCarousel.qml";
200− case "carousel": return "Generic/GenericCarousel.qml";
226+ default: return "Generic/GenericCarousel.qml";
227+ }
228+ }
201 case "special": {
229 case "special": {
202 switch (contentType) {
230 switch (contentType) {
203 case "apps": return "Apps/RunningApplicationsGrid.qml";
231 case "apps": return "Apps/RunningApplicationsGrid.qml";
Dash/Movie/MoviePreview.qmlnew file+71
@@ -0,0 +1,71 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import ".."
20+import "../Generic"
21+import "../../Components"
22+import "../Previews"
23+
24+GenericPreview {
25+ id: root
26+
27+ property bool ready: previewData ? true : false
28+ property url url: ready ? previewData.image : ""
29+
30+ previewImages: previewImageComponent
31+ header: headerComponent
32+
33+ Component {
34+ id: previewImageComponent
35+ LazyImage {
36+ anchors.left: parent.left
37+ anchors.right: parent.right
38+ scaleTo: "width"
39+ visible: height > 0
40+ source: root.url
41+ initialHeight: width * 10 / 16
42+
43+ Image {
44+ objectName: "playButton"
45+ anchors.centerIn: parent
46+ readonly property bool bigButton: parent.width > units.gu(40)
47+ width: bigButton ? units.gu(8) : units.gu(4.5)
48+ height: width
49+ source: "../graphics/play_button%1%2.png".arg(previewImageMouseArea.pressed ? "_active" : "").arg(bigButton ? "_big" : "")
50+ }
51+
52+ MouseArea {
53+ id: previewImageMouseArea
54+ anchors.fill: parent
55+ onClicked: {
56+ Qt.openUrlExternally(previewData.result.uri);
57+ }
58+ }
59+ }
60+ }
61+
62+ Component {
63+ id: headerComponent
64+ Header {
65+ title: previewData.title
66+ rating: Math.round(previewData.rating * 10)
67+ reviews: previewData.numRatings
68+ rated: previewData.infoMap["rated"] ? previewData.infoMap["rated"].value : 0
69+ }
70+ }
71+}
Dash/Music/MusicFilterGrid.qml+21−22
@@ -16,42 +16,41 @@
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18import "../../Components"
18import "../../Components"
19+import "../Generic"
19
20
20−FilterGrid {
21+GenericFilterGrid {
21− id: filterGrid
22+ id: filtergrid
22
23
23− minimumHorizontalSpacing: units.gu(2)
24− maximumNumberOfColumns: 5
25− delegateWidth: units.gu(17)
24+ delegateWidth: units.gu(11)
26− delegateHeight: iconHeight + units.gu(3.5)
25+ delegateHeight: units.gu(16)
27− verticalSpacing: units.gu(2)
28
26
29− readonly property int iconWidth: (width / columns) * 0.8
27+ iconWidth: units.gu(11)
30− readonly property int iconHeight: iconWidth
28+ iconHeight: units.gu(11)
31
29
32− signal clicked(int index, var delegateItem, real itemY)
33− signal pressAndHold(int index, var delegateItem, real itemY)
34−
35− delegate: AlbumTile {
30+ delegate: Tile {
36 id: tile
31 id: tile
37 objectName: "delegate" + index
32 objectName: "delegate" + index
38− width: filterGrid.cellWidth
33+ width: filtergrid.cellWidth
39− height: filterGrid.cellHeight
34+ height: filtergrid.cellHeight
40− iconWidth: filterGrid.iconWidth
41− iconHeight: filterGrid.iconHeight
42−
43− artist: model.title
44− album: model.comment
35+ text: model.comment
36+ imageWidth: filtergrid.iconWidth
37+ imageHeight: filtergrid.iconHeight
45 source: model.icon
38 source: model.icon
39+ maximumLineCount: 2
40+ horizontalAlignment: Text.AlignLeft
41+
42+ style: MusicTileStyle {
43+ artist: model.title
44+ }
46
45
47 onClicked: {
46 onClicked: {
48 var data = { model: model }
47 var data = { model: model }
49− filterGrid.clicked(index, data, tile.y)
48+ filtergrid.clicked(index, data, tile.y)
50 }
49 }
51
50
52 onPressAndHold: {
51 onPressAndHold: {
53 var data = { model: model }
52 var data = { model: model }
54− filterGrid.pressAndHold(index, data, tile.y)
53+ filtergrid.pressAndHold(index, data, tile.y)
55 }
54 }
56 }
55 }
57}
56}
Dash/Music/MusicTileStyle.qmlnew file+101
@@ -0,0 +1,101 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+
20+Item {
21+ id: tile
22+
23+ property alias artist: artistLabel.text
24+
25+ anchors.fill: parent
26+
27+ UbuntuShape {
28+ id: icon
29+ anchors {
30+ top: parent.top
31+ horizontalCenter: parent.horizontalCenter
32+ }
33+ radius: "medium"
34+ width: styledItem.imageWidth
35+ height: styledItem.imageHeight
36+ image: Image {
37+ id: image
38+ objectName: "image"
39+ sourceSize { width: icon.width; height: icon.height }
40+ asynchronous: true
41+ cache: false
42+ source: styledItem.source
43+ fillMode: styledItem.fillMode
44+ horizontalAlignment: Image.AlignHCenter
45+ verticalAlignment: Image.AlignVCenter
46+ }
47+ }
48+
49+ UbuntuShape {
50+ id: borderPressed
51+ objectName: "borderPressed"
52+
53+ anchors.fill: icon
54+ radius: "medium"
55+ borderSource: "radius_pressed.sci"
56+ opacity: styledItem.pressed ? 1.0 : 0.0
57+ Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
58+ }
59+
60+ Label {
61+ id: label
62+ objectName: "label"
63+ anchors {
64+ baseline: icon.bottom
65+ baselineOffset: units.gu(2)
66+ left: icon.left
67+ right: parent.right
68+ rightMargin: units.gu(1)
69+ }
70+
71+ color: Theme.palette.selected.backgroundText
72+ opacity: 0.9
73+ style: Text.Raised
74+ styleColor: "black"
75+ fontSize: "small"
76+ font.weight: Font.Bold
77+ elide: Text.ElideRight
78+ horizontalAlignment: styledItem.horizontalAlignment
79+ text: styledItem.text
80+ wrapMode: Text.Wrap
81+ maximumLineCount: styledItem.maximumLineCount
82+ }
83+
84+ Label {
85+ id: artistLabel
86+ anchors {
87+ top: label.bottom
88+ left: label.left
89+ right: label.right
90+ rightMargin: units.gu(1)
91+ }
92+
93+ color: Theme.palette.selected.backgroundText
94+ opacity: 0.9
95+ style: Text.Raised
96+ styleColor: "black"
97+ fontSize: "x-small"
98+ elide: Text.ElideMiddle
99+ horizontalAlignment: styledItem.horizontalAlignment
100+ }
101+}
Dash/PreviewDelegateMapper.qml+1
@@ -22,6 +22,7 @@ QtObject {
22 readonly property string appPreview: "Apps/AppPreview.qml"
22 readonly property string appPreview: "Apps/AppPreview.qml"
23 property var previewDelegateMapping: {"preview-generic": genericPreview,
23 property var previewDelegateMapping: {"preview-generic": genericPreview,
24 "preview-application": appPreview,
24 "preview-application": appPreview,
25+ "preview-movie": "Movie/MoviePreview.qml",
25 }
26 }
26 }
27 }
27
28
Dash/Previews/Header.qmlnew file+109
@@ -0,0 +1,109 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import "../../Components"
20+
21+Row {
22+ id: root
23+ property alias icon: image.source
24+ property alias title: titleLabel.text
25+ property alias subtitle: subtitleLabel.text
26+ property alias rating: ratingStars.rating
27+ property int rated: 0
28+ property int reviews: 0
29+
30+ spacing: units.gu(2)
31+ height: imageShape.visible ? imageShape.height : contentColumn.height
32+
33+ UbuntuShape {
34+ id: imageShape
35+ width: height
36+ height: Math.max(units.gu(6), contentColumn.height)
37+ visible: image.source.toString().length > 0
38+ image: Image {
39+ id: image
40+ sourceSize { width: imageShape.width; height: imageShape.height }
41+ asynchronous: true
42+ fillMode: Image.PreserveAspectFit
43+ }
44+ }
45+
46+ Column {
47+ id: contentColumn
48+ spacing: units.gu(1)
49+ width: parent.width - x
50+
51+ Label {
52+ id: titleLabel
53+ objectName: "titleLabel"
54+ fontSize: "large"
55+ color: "white"
56+ style: Text.Raised
57+ styleColor: "black"
58+ opacity: .9
59+ width: parent.width
60+ elide: Text.ElideRight
61+ }
62+
63+ Label {
64+ id: subtitleLabel
65+ objectName: "subtitleLabel"
66+ fontSize: "medium"
67+ color: "white"
68+ style: Text.Raised
69+ styleColor: "black"
70+ opacity: .6
71+ visible: text.length > 0
72+ }
73+
74+ Row {
75+ visible: root.rating >= 0
76+ spacing: units.gu(1)
77+
78+ RatingStars {
79+ id: ratingStars
80+ maximumRating: 10
81+ rating: -1
82+ }
83+
84+ Label {
85+ id: ratedLabel
86+ objectName: "ratedLabel"
87+ fontSize: "medium"
88+ color: "white"
89+ style: Text.Raised
90+ styleColor: "black"
91+ opacity: .6
92+ //TRANSLATORS: Number of persons who rated this app/video/whatever
93+ text: i18n.tr("(%1)").arg(root.rated)
94+ }
95+
96+ Label {
97+ id: reviewsLabel
98+ objectName: "reviewsLabel"
99+ fontSize: "medium"
100+ color: "white"
101+ style: Text.Raised
102+ styleColor: "black"
103+ opacity: .6
104+ //TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
105+ text: i18n.tr("%1 review", "%1 reviews", root.reviews).arg(root.reviews)
106+ }
107+ }
108+ }
109+}
Dash/Apps/AppReviews.qml → Dash/Previews/Reviews.qmlrenamed

The content is the same.

Dash/ScopeView.qml+11−3
@@ -31,14 +31,22 @@ FocusScope {
31 // FIXME delay the search so that daemons have time to settle, note that
31 // FIXME delay the search so that daemons have time to settle, note that
32 // removing this will break ScopeView::test_changeScope
32 // removing this will break ScopeView::test_changeScope
33 onScopeChanged: {
33 onScopeChanged: {
34+ if (scope) {
34− timer.restart();
35+ timer.restart();
35− scope.activateApplication.connect(activateApp);
36+ scope.activateApplication.connect(activateApp);
37+ }
36 }
38 }
37
39
38 function activateApp(desktopFilePath) {
40 function activateApp(desktopFilePath) {
39 shell.activateApplication(desktopFilePath);
41 shell.activateApplication(desktopFilePath);
40 }
42 }
41
43
44+ Binding {
45+ target: scope
46+ property: "isActive"
47+ value: isCurrent
48+ }
49+
42 Timer {
50 Timer {
43 id: timer
51 id: timer
44 interval: 2000
52 interval: 2000
@@ -47,7 +55,7 @@ FocusScope {
47
55
48 SortFilterProxyModel {
56 SortFilterProxyModel {
49 id: categoryFilter
57 id: categoryFilter
50− model: scope.categories
58+ model: scope ? scope.categories : null
51 dynamicSortFilter: true
59 dynamicSortFilter: true
52 filterRole: Categories.RoleCount
60 filterRole: Categories.RoleCount
53 filterRegExp: /^0$/
61 filterRegExp: /^0$/
Dash/Video/VideosFilterGrid.qml → Dash/Video/VideoFilterGrid.qmlrenamed+17−13
@@ -16,20 +16,16 @@
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18import "../../Components"
18import "../../Components"
19+import "../Generic"
19
20
20−FilterGrid {
21+GenericFilterGrid {
21 id: filtergrid
22 id: filtergrid
22
23
23− minimumHorizontalSpacing: units.gu(0.5)
24− maximumNumberOfColumns: 5
25 delegateWidth: units.gu(11)
24 delegateWidth: units.gu(11)
26− delegateHeight: iconHeight + units.gu(2.5)
25+ delegateHeight: units.gu(15)
27− verticalSpacing: units.gu(2)
28
26
29− readonly property int iconWidth: (width / columns) * 0.8
27+ iconWidth: units.gu(11)
30− readonly property int iconHeight: iconWidth * 16 / 11
28+ iconHeight: units.gu(11)
31−
32− signal clicked(int index, var data, real itemY)
33
29
34 delegate: Tile {
30 delegate: Tile {
35 id: tile
31 id: tile
@@ -40,11 +36,19 @@ FilterGrid {
40 imageWidth: filtergrid.iconWidth
36 imageWidth: filtergrid.iconWidth
41 imageHeight: filtergrid.iconHeight
37 imageHeight: filtergrid.iconHeight
42 source: model.icon
38 source: model.icon
43− fillMode: Image.PreserveAspectCrop
39+ maximumLineCount: 2
40+ horizontalAlignment: Text.AlignLeft
41+
42+ style: VideoTileStyle {}
43+
44 onClicked: {
44 onClicked: {
45− var fileUri = model.uri.replace(/^[^:]+:/, "")
45+ var data = { model: model }
46− var data = {fileUri: fileUri, nfoUri: model.comment}
47− filtergrid.clicked(index, data, tile.y);
46+ filtergrid.clicked(index, data, tile.y)
47+ }
48+
49+ onPressAndHold: {
50+ var data = { model: model }
51+ filtergrid.pressAndHold(index, data, tile.y)
48 }
52 }
49 }
53 }
50}
54}
Dash/Video/VideoPreview.qmldeleted−210
@@ -1,210 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Ubuntu.Components 0.1
19−import ".."
20−import "../../Components"
21−
22−DashPreview {
23− id: root
24−
25− property var item
26− property alias ready: nfo.ready
27− property bool playable: fileUri != ""
28− readonly property url fileUri: item ? item.fileUri : ""
29− property url url: item ? item.nfoUri.replace(/\.nfo$/, "-fanart.jpg") : ""
30−
31− VideoInfo {
32− id: nfo
33− source: item ? item.nfoUri : ""
34− }
35−
36− title: nfo.ready ? nfo.video.title : ""
37− previewWidthRatio: 0.6
38−
39− onPreviewImageClicked: {
40− if (playable) {
41− shell.activateApplication('/usr/share/applications/mediaplayer-app.desktop', root.fileUri);
42− }
43− }
44−
45− // TODO: replace this UbuntuShape with the Video component once that lands
46− // with the player.
47− header: UbuntuShape {
48− id: urlLoader
49− anchors.left: parent.left
50− anchors.right: parent.right
51− height: width * previewImage.sourceSize.height / previewImage.sourceSize.width
52− radius: "medium"
53− image: Image {
54− id: previewImage
55− asynchronous: true
56− source: root.url
57− fillMode: Image.PreserveAspectCrop
58− }
59−
60− Image {
61− objectName: "playButton"
62− anchors.centerIn: parent
63− visible: root.playable
64− readonly property bool bigButton: parent.width > units.gu(40)
65− width: bigButton ? units.gu(8) : units.gu(4.5)
66− height: width
67− source: "../graphics/play_button%1%2.png".arg(previewImageMouseArea.pressed ? "_active" : "").arg(bigButton ? "_big" : "")
68− }
69−
70− MouseArea {
71− id: previewImageMouseArea
72− anchors.fill: parent
73− onClicked: root.previewImageClicked()
74− }
75− }
76−
77− buttons: Row {
78− spacing: units.gu(2)
79−
80− property int buttonWidth: Math.min(units.gu(22), (width - spacing) / 2)
81− Button {
82− width: parent.buttonWidth
83− color: Theme.palette.selected.foreground
84− text: nfo.ready && nfo.video.buyPrice != "" ? "Buy for " + nfo.video.buyPrice : ""
85− visible: text != ""
86− iconSource: "graphics/icon_button_amazon.png"
87− iconPosition: "right"
88− }
89− Button {
90− width: parent.buttonWidth
91− color: Theme.palette.selected.foreground
92− text: nfo.ready && nfo.video.buyPrice != "" ? "Rent for " + nfo.video.rentPrice : ""
93− visible: text != ""
94− iconSource: "graphics/icon_button_u1.png"
95− iconPosition: "right"
96− }
97− }
98−
99− body: Column {
100− spacing: units.gu(2)
101− RatingStars {
102− maximumRating: 10 // FIXME: this should happen on the backend side
103− rating: nfo.ready ? nfo.video.rating: 0
104− }
105−
106− Label {
107− text: nfo.ready ? nfo.video.plot : ""
108− color: Theme.palette.selected.backgroundText
109− opacity: .6
110− fontSize: "medium"
111− width: parent.width
112− wrapMode: Text.WordWrap
113− style: Text.Raised
114− styleColor: "black"
115− }
116−
117− Grid {
118− columns: 2
119− spacing: units.gu(1)
120− width: parent.width
121− property int firstColWidth: units.gu(9)
122− property int secondColWidth: width - firstColWidth - spacing
123− Label {
124− visible: directedLabel.visible
125− fontSize: "small"
126− opacity: 0.9
127− color: "white"
128− horizontalAlignment: Text.AlignRight
129− width: parent.firstColWidth
130− text: i18n.tr("Directed by:")
131− style: Text.Raised
132− styleColor: "black"
133− }
134− Label {
135− id: directedLabel
136− visible: text != ""
137− fontSize: "small"
138− opacity: 0.6
139− color: "white"
140− width: parent.secondColWidth
141− text: nfo.ready ? nfo.video.director : ""
142− style: Text.Raised
143− styleColor: "black"
144− wrapMode: Text.WordWrap
145− }
146− Label {
147− visible: starringLabel.visible
148− fontSize: "small"
149− opacity: 0.9
150− horizontalAlignment: Text.AlignRight
151− color: "white"
152− width: parent.firstColWidth
153− text: i18n.tr("Starring:")
154− style: Text.Raised
155− styleColor: "black"
156− }
157− Label {
158− id: starringLabel
159− visible: text != ""
160− fontSize: "small"
161− opacity: 0.6
162− color: "white"
163− width: parent.secondColWidth
164− text: nfo.ready ? nfo.getActors().join(", ") : ""
165− wrapMode: Text.WordWrap
166− style: Text.Raised
167− styleColor: "black"
168− }
169− Label {
170− visible: authorLabel.visible
171− fontSize: "small"
172− opacity: 0.9
173− horizontalAlignment: Text.AlignRight
174− color: "white"
175− width: parent.firstColWidth
176− text: i18n.tr("Author:")
177− style: Text.Raised
178− styleColor: "black"
179− }
180− Label {
181− id: authorLabel
182− visible: text != ""
183− fontSize: "small"
184− opacity: 0.6
185− color: "white"
186− width: parent.secondColWidth
187− text: nfo.ready ? nfo.video.author : ""
188− wrapMode: Text.WordWrap
189− style: Text.Raised
190− styleColor: "black"
191− }
192− }
193−
194− Label {
195− fontSize: "small"
196− opacity: 0.6
197− color: "white"
198− text: {
199− var parts = []
200− if (nfo.ready) {
201− if (nfo.video.year) parts.push(nfo.video.year)
202− if (nfo.video.runtime) parts.push("%1 minutes".arg(nfo.video.runtime))
203− }
204− return parts.join(", ");
205− }
206− style: Text.Raised
207− styleColor: "black"
208− }
209− }
210−}
Dash/Video/VideoTileStyle.qmlnew file+86
@@ -0,0 +1,86 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+
20+Item {
21+ id: tile
22+
23+ anchors.fill: parent
24+
25+ Image {
26+ id: icon
27+ anchors {
28+ top: parent.top
29+ horizontalCenter: parent.horizontalCenter
30+ }
31+ width: styledItem.imageWidth
32+ height: styledItem.imageHeight
33+ source: "graphics/movie_icon_holder.png"
34+
35+ Image {
36+ id: image
37+ objectName: "image"
38+ anchors {
39+ fill: parent;
40+ topMargin: units.gu(2);
41+ bottomMargin: units.gu(2)
42+ }
43+ sourceSize { width: icon.width; height: icon.height }
44+ asynchronous: true
45+ cache: false
46+ source: styledItem.source
47+ fillMode: styledItem.fillMode
48+ horizontalAlignment: Image.AlignHCenter
49+ verticalAlignment: Image.AlignVCenter
50+ }
51+ }
52+
53+ UbuntuShape {
54+ id: borderPressed
55+ objectName: "borderPressed"
56+
57+ anchors.fill: icon
58+ radius: "medium"
59+ borderSource: "radius_pressed.sci"
60+ opacity: styledItem.pressed ? 1.0 : 0.0
61+ Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
62+ }
63+
64+ Label {
65+ id: label
66+ objectName: "label"
67+ anchors {
68+ baseline: icon.bottom
69+ baselineOffset: units.gu(2)
70+ left: icon.left
71+ right: parent.right
72+ rightMargin: units.gu(1)
73+ }
74+
75+ color: Theme.palette.selected.backgroundText
76+ opacity: 0.9
77+ style: Text.Raised
78+ styleColor: "black"
79+ fontSize: "small"
80+ elide: Text.ElideRight
81+ horizontalAlignment: styledItem.horizontalAlignment
82+ text: styledItem.text
83+ wrapMode: Text.Wrap
84+ maximumLineCount: styledItem.maximumLineCount
85+ }
86+}
Dash/Video/graphics/movie_icon_holder@27.pngnew file

Binary file not shown.

Greeter/Gradient.js+7−3
@@ -15,8 +15,12 @@
15 */
15 */
16
16
17function threeColorByIndex(index, total, colors) {
17function threeColorByIndex(index, total, colors) {
18− var red, green, blue
18+ var red, green, blue;
19+ var p = 0.0;
20+
21+ if(total > 0) {
19− var p = index / total
22+ p = index / total;
23+ }
20
24
21 if (p < 0.5) {
25 if (p < 0.5) {
22 red = (colors.main.r * p * 2.0) + colors.start.r * (0.5 - p) * 2.0;
26 red = (colors.main.r * p * 2.0) + colors.start.r * (0.5 - p) * 2.0;
@@ -28,5 +32,5 @@ function threeColorByIndex(index, total, colors) {
28 blue = colors.end.b * (p - 0.5) * 2.0 + colors.main.b * (1.0 - p) * 2.0;
32 blue = colors.end.b * (p - 0.5) * 2.0 + colors.main.b * (1.0 - p) * 2.0;
29 }
33 }
30
34
31− return Qt.rgba(red, green, blue, 1)
35+ return Qt.rgba(red, green, blue, 1);
32}
36}
Greeter/GreeterContent.qml+11−7
@@ -135,19 +135,23 @@ MouseArea {
135
135
136 Infographics {
136 Infographics {
137 id: infographics
137 id: infographics
138+ objectName: "infographics"
138 height: narrowMode ? parent.height : 0.75 * parent.height
139 height: narrowMode ? parent.height : 0.75 * parent.height
139 model: greeterContentLoader.infographicModel
140 model: greeterContentLoader.infographicModel
140
141
141− Component.onCompleted: infographics.updateUsername(greeterContentLoader.currentIndex)
142+ property string selectedUser
143+ property string infographicUser: AccountsService.statsWelcomeScreen ? selectedUser : ""
144+ onInfographicUserChanged: greeterContentLoader.infographicModel.username = infographicUser
142
145
143− Connections {
146+ Component.onCompleted: {
144− target: root
147+ selectedUser = greeterContentLoader.model.data(greeterContentLoader.currentIndex, LightDM.UserRoles.NameRole)
145− onSelected: infographics.updateUsername(uid)
148+ greeterContentLoader.infographicModel.username = infographicUser
149+ greeterContentLoader.infographicModel.readyForDataChange()
146 }
150 }
147
151
148− function updateUsername(uid) {
152+ Connections {
153+ target: root
149− greeterContentLoader.infographicModel.username = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
154+ onSelected: infographics.selectedUser = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
150− greeterContentLoader.infographicModel.readyForDataChangeSlot();
151 }
155 }
152
156
153 anchors {
157 anchors {
Greeter/Infographics.qml+10−1
@@ -29,21 +29,30 @@ Item {
29 Connections {
29 Connections {
30 target: model
30 target: model
31
31
32+ onDataAboutToAppear: startHideAnimation() // hide "no data" label
32 onDataAppeared: startShowAnimation()
33 onDataAppeared: startShowAnimation()
33
34
34 onDataAboutToChange: startHideAnimation()
35 onDataAboutToChange: startHideAnimation()
35−
36 onDataChanged: startShowAnimation()
36 onDataChanged: startShowAnimation()
37
37
38 onDataAboutToDisappear: startHideAnimation()
38 onDataAboutToDisappear: startHideAnimation()
39+ onDataDisappeared: startShowAnimation() // show "no data" label
39 }
40 }
40
41
41 function startShowAnimation() {
42 function startShowAnimation() {
43+ dotHideAnimTimer.stop()
44+ circleShrinkAnimTimer.stop()
45+ notification.hideAnim.stop()
46+
42 dotShowAnimTimer.startFromBeginning()
47 dotShowAnimTimer.startFromBeginning()
43 notification.showAnim.start()
48 notification.showAnim.start()
44 }
49 }
45
50
46 function startHideAnimation() {
51 function startHideAnimation() {
52+ dotShowAnimTimer.stop()
53+ circleGrowAnimTimer.stop()
54+ notification.showAnim.stop()
55+
47 dotHideAnimTimer.startFromBeginning()
56 dotHideAnimTimer.startFromBeginning()
48 notification.hideAnim.start()
57 notification.hideAnim.start()
49 }
58 }
Greeter/PinLockscreen.qml+5
@@ -32,6 +32,8 @@ Column {
32 signal entered(string passphrase)
32 signal entered(string passphrase)
33 signal cancel()
33 signal cancel()
34
34
35+ property bool entryEnabled: true
36+
35 function clear(playAnimation) {
37 function clear(playAnimation) {
36 pinentryField.text = "";
38 pinentryField.text = "";
37 if (playAnimation) {
39 if (playAnimation) {
@@ -140,6 +142,7 @@ Column {
140 width: root.padWidth / 3
142 width: root.padWidth / 3
141 height: root.padHeight / 4
143 height: root.padHeight / 4
142 text: index + 1
144 text: index + 1
145+ enabled: entryEnabled
143
146
144 onClicked: {
147 onClicked: {
145 pinentryField.text = pinentryField.text + text;
148 pinentryField.text = pinentryField.text + text;
@@ -161,6 +164,7 @@ Column {
161 height: root.padHeight / 4
164 height: root.padHeight / 4
162 text: "0"
165 text: "0"
163 onClicked: pinentryField.text = pinentryField.text + text
166 onClicked: pinentryField.text = pinentryField.text + text
167+ enabled: entryEnabled
164 }
168 }
165
169
166 PinPadButton {
170 PinPadButton {
@@ -169,6 +173,7 @@ Column {
169 height: root.padHeight / 4
173 height: root.padHeight / 4
170 iconName: "erase"
174 iconName: "erase"
171 onClicked: pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1)
175 onClicked: pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1)
176+ enabled: entryEnabled
172 }
177 }
173 }
178 }
174 }
179 }
Notifications/Notification.qml+49−5
@@ -17,6 +17,8 @@
17import QtQuick 2.0
17import QtQuick 2.0
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19import Unity.Notifications 1.0
19import Unity.Notifications 1.0
20+import QMenuModel 0.1
21+import Utils 0.1
20
22
21UbuntuShape {
23UbuntuShape {
22 id: notification
24 id: notification
@@ -33,11 +35,30 @@ UbuntuShape {
33
35
34 objectName: "background"
36 objectName: "background"
35 implicitHeight: contentColumn.height + contentColumn.spacing * 2
37 implicitHeight: contentColumn.height + contentColumn.spacing * 2
36− color: Qt.rgba(0, 0, 0, 0.85)
38+ color: Qt.rgba(0.132, 0.117, 0.109, 0.97)
37 opacity: 0
39 opacity: 0
40+ radius: "medium"
38
41
39 clip: true
42 clip: true
40
43
44+ UnityMenuModelPaths {
45+ id: paths
46+
47+ source: hints["x-canonical-private-menu-model"]
48+
49+ busNameHint: "busName"
50+ actionsHint: "actions"
51+ menuObjectPathHint: "menuPath"
52+ }
53+
54+ UnityMenuModel {
55+ id: unityMenuModel
56+
57+ busName: paths.busName
58+ actions: paths.actions
59+ menuObjectPath: paths.menuObjectPath
60+ }
61+
41 Behavior on implicitHeight {
62 Behavior on implicitHeight {
42 id: heightBehavior
63 id: heightBehavior
43
64
@@ -108,6 +129,8 @@ UbuntuShape {
108 id: labelColumn
129 id: labelColumn
109 width: parent.width - x
130 width: parent.width - x
110
131
132+ anchors.verticalCenter: (icon.visible && !bodyLabel.visible) ? icon.verticalCenter : undefined
133+
111 Label {
134 Label {
112 id: summaryLabel
135 id: summaryLabel
113
136
@@ -141,6 +164,27 @@ UbuntuShape {
141 }
164 }
142 }
165 }
143
166
167+ Column {
168+ objectName: "dialogListView"
169+ spacing: units.gu(2)
170+
171+ visible: count > 0
172+
173+ anchors.left: parent.left; anchors.right: parent.right
174+
175+ Repeater {
176+ model: unityMenuModel
177+
178+ NotificationMenuItemFactory {
179+ anchors.left: parent.left; anchors.right: parent.right
180+
181+ menuModel: unityMenuModel
182+ menuData: model
183+ menuIndex: index
184+ }
185+ }
186+ }
187+
144 Item {
188 Item {
145 id: buttonRow
189 id: buttonRow
146
190
@@ -149,8 +193,8 @@ UbuntuShape {
149 left: parent.left
193 left: parent.left
150 right: parent.right
194 right: parent.right
151 }
195 }
152− visible: notification.type == Notification.SnapDecision
196+ visible: notification.type == Notification.SnapDecision && actionRepeater.count > 0
153− height: units.gu(4)
197+ height: units.gu(5)
154
198
155 property real buttonWidth: (width - contentColumn.spacing) / 2
199 property real buttonWidth: (width - contentColumn.spacing) / 2
156 property bool expanded
200 property bool expanded
@@ -195,7 +239,7 @@ UbuntuShape {
195 top: parent.top
239 top: parent.top
196 bottom: parent.bottom
240 bottom: parent.bottom
197 }
241 }
198− gradient: notification.hints == Notification.ButtonTint ? UbuntuColors.orangeGradient : UbuntuColors.greyGradient
242+ gradient: notification.hints["x-canonical-private-button-tint"] == "true" ? UbuntuColors.orangeGradient : UbuntuColors.greyGradient
199 visible: width > 0
243 visible: width > 0
200 onClicked: notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
244 onClicked: notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
201 }
245 }
@@ -241,7 +285,7 @@ UbuntuShape {
241 }
285 }
242
286
243 text: loader.actionLabel
287 text: loader.actionLabel
244− height: units.gu(4)
288+ height: units.gu(5)
245 gradient: UbuntuColors.greyGradient
289 gradient: UbuntuColors.greyGradient
246 onClicked: notification.notification.invokeAction(loader.actionId)
290 onClicked: notification.notification.invokeAction(loader.actionId)
247 }
291 }
Notifications/NotificationMenuItemFactory.qmlnew file+96
@@ -0,0 +1,96 @@
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+ * Nick Dedekind <nick.dedekind@canonical.com>
18+ */
19+
20+import QtQuick 2.0
21+import Ubuntu.Components 0.1
22+import "../Components"
23+import "../Greeter"
24+
25+Loader {
26+ id: menuFactory
27+
28+ property QtObject menuModel: null
29+ property QtObject menuData: null
30+ property int menuIndex
31+ property var notification
32+
33+ property var _map: {
34+ "com.canonical.snapdecision.textfield": textfield,
35+ "com.canonical.snapdecision.pinlock" : pinLock,
36+ }
37+
38+ sourceComponent: {
39+ if (menuData.type !== undefined) {
40+ var component = _map[menuData.type];
41+ if (component !== undefined) {
42+ return component;
43+ }
44+ }
45+ }
46+
47+ Component {
48+ id: textfield
49+
50+ Column {
51+ spacing: units.gu(2)
52+
53+ anchors.left: parent.left; anchors.right: parent.right
54+
55+ Component.onCompleted: {
56+ menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
57+ textfield.echoMode = menuData.ext.xEchoModePassword ? TextInput.Password : TextInput.Normal
58+ }
59+
60+ Label {
61+ text: menuData.label
62+ }
63+
64+ TextField {
65+ id: textfield
66+
67+ anchors.left: parent.left; anchors.right: parent.right
68+ height: units.gu(5)
69+ onTextChanged: {
70+ menuModel.changeState(menuIndex, text);
71+ }
72+ }
73+ }
74+ }
75+
76+ Component {
77+ id: pinLock
78+ PinLockscreen {
79+ anchors.left: parent.left; anchors.right: parent.right
80+
81+ Component.onCompleted: {
82+ menuModel.loadExtendedAttributes(menuIndex, {'x-canonical-pin-length': 'int'});
83+ pinLength = menuData.ext.xCanonicalPinLength;
84+ }
85+
86+ onEntered: {
87+ menuModel.changeState(menuIndex, passphrase);
88+ entryEnabled = false;
89+ }
90+
91+ onCancel: {
92+ menuModel.activate(menuIndex, false);
93+ }
94+ }
95+ }
96+}
Panel/IndicatorRow.qml+51−12
@@ -27,6 +27,8 @@ Item {
27 property alias row: row
27 property alias row: row
28 property QtObject indicatorsModel: null
28 property QtObject indicatorsModel: null
29 property var visibleIndicators: defined
29 property var visibleIndicators: defined
30+ property int overFlowWidth: width
31+ property bool showAll: false
30
32
31 width: units.gu(40)
33 width: units.gu(40)
32 height: units.gu(3)
34 height: units.gu(3)
@@ -42,6 +44,15 @@ Item {
42 }
44 }
43 }
45 }
44
46
47+ Timer {
48+ id: allVisible
49+ interval: 1000
50+
51+ onTriggered: {
52+ showAll = false;
53+ }
54+ }
55+
45 Row {
56 Row {
46 id: row
57 id: row
47
58
@@ -54,16 +65,31 @@ Item {
54 objectName: "rowRepeater"
65 objectName: "rowRepeater"
55 model: indicatorsModel ? indicatorsModel : undefined
66 model: indicatorsModel ? indicatorsModel : undefined
56
67
68+ property int lastCount: 0
69+ onCountChanged: {
70+ if (lastCount < count) {
71+ showAll = true;
72+ allVisible.start();
73+ }
74+ lastCount = count;
75+ }
76+
57 Item {
77 Item {
58 id: itemWrapper
78 id: itemWrapper
59 height: indicatorRow.height
79 height: indicatorRow.height
60 width: indicatorItem.width
80 width: indicatorItem.width
61 visible: indicatorItem.indicatorVisible
81 visible: indicatorItem.indicatorVisible
82+ opacity: 1.0
83+ y: 0
84+ state: "standard"
62
85
63 property int ownIndex: index
86 property int ownIndex: index
64 property alias highlighted: indicatorItem.highlighted
87 property alias highlighted: indicatorItem.highlighted
65 property alias dimmed: indicatorItem.dimmed
88 property alias dimmed: indicatorItem.dimmed
66
89
90+ property bool hidden: !showAll && !indicatorItem.highlighted && (indicatorRow.state == "locked" || indicatorRow.state == "commit")
91+ property bool overflow: row.width - itemWrapper.x > overFlowWidth
92+
67 IndicatorItem {
93 IndicatorItem {
68 id: indicatorItem
94 id: indicatorItem
69 height: parent.height
95 height: parent.height
@@ -87,22 +113,35 @@ Item {
87 }
113 }
88 indicatorRow.visibleIndicators[model.identifier] = indicatorVisible;
114 indicatorRow.visibleIndicators[model.identifier] = indicatorVisible;
89 indicatorRow.visibleIndicatorsChanged();
115 indicatorRow.visibleIndicatorsChanged();
116+
117+ if (indicatorVisible) {
118+ showAll = true;
119+ allVisible.start();
120+ }
90 }
121 }
91 }
122 }
92
123
93− opacity: {
124+ states: [
94− if (!indicatorItem.highlighted && (indicatorRow.state == "locked" || indicatorRow.state == "commit")) {
125+ State {
95− return 0.0;
126+ name: "standard"
96− } else {
127+ when: !hidden && !overflow
97− return 1.0;
128+ },
129+ State {
130+ name: "overflow"
131+ when: hidden || overflow
132+ PropertyChanges { target: itemWrapper; opacity: 0.0 }
98 }
133 }
99− }
134+ ]
100− Behavior on opacity {
135+
136+ transitions: [
137+ Transition {
101− StandardAnimation {
138+ StandardAnimation {
102− // flow away from current index
139+ target: itemWrapper
103− duration: (rowRepeater.count - Math.abs(indicatorRow.currentItemIndex - index)) * (500/rowRepeater.count)
140+ property: "opacity"
141+ duration: 300
104− }
142+ }
105− }
143+ }
144+ ]
106 }
145 }
107 }
146 }
108 }
147 }
Panel/Indicators.qml+6−1
@@ -17,6 +17,7 @@
17import QtQuick 2.0
17import QtQuick 2.0
18import Ubuntu.Components 0.1
18import Ubuntu.Components 0.1
19import Ubuntu.Gestures 0.1
19import Ubuntu.Gestures 0.1
20+import Unity.Indicators 0.1 as Indicators
20
21
21import "../Components"
22import "../Components"
22import "../Components/ListItems"
23import "../Components/ListItems"
@@ -28,6 +29,8 @@ Showable {
28 property real openedHeight: units.gu(71)
29 property real openedHeight: units.gu(71)
29 property int panelHeight: units.gu(3)
30 property int panelHeight: units.gu(3)
30 property bool pinnedMode: true //should be set true if indicators menu can cover whole screen
31 property bool pinnedMode: true //should be set true if indicators menu can cover whole screen
32+ property alias overFlowWidth: indicatorRow.overFlowWidth
33+ property alias showAll: indicatorRow.showAll
31
34
32 property int hintValue
35 property int hintValue
33 readonly property int lockThreshold: openedHeight / 2
36 readonly property int lockThreshold: openedHeight / 2
@@ -249,8 +252,10 @@ Showable {
249 anchors.fill: indicatorRow
252 anchors.fill: indicatorRow
250 }
253 }
251
254
252− IndicatorsDataModel {
255+ Indicators.IndicatorsModel {
253 id: indicatorsModel
256 id: indicatorsModel
257+
258+ Component.onCompleted: load()
254 }
259 }
255
260
256 IndicatorRow {
261 IndicatorRow {
Panel/Indicators/DatetimeIndicatorPage.qmldeleted−97
@@ -1,97 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− * Ubo Riboni <ugo.riboni@canonical.com>
19− */
20−
21−import QtQuick 2.0
22−import Ubuntu.Components 0.1
23−
24−Flickable {
25− id: page
26−
27− contentHeight: image.height
28−
29− Image {
30− id: image
31− anchors {
32− left: parent.left
33− right: parent.right
34− }
35− source: "../graphics/time_and_date@18.png"
36− fillMode: Image.PreserveAspectFit
37− }
38−
39− Item {
40− anchors {
41− top: parent.top
42− topMargin: units.gu(5)
43− left: parent.left
44− right: parent.right
45− }
46−
47− height: units.gu(30)
48−
49− Label {
50− id: timeLabel
51− anchors {
52− horizontalCenter: parent.horizontalCenter
53− verticalCenter: parent.verticalCenter
54− }
55−
56− text: ""
57− color: Theme.palette.selected.backgroundText
58− font.weight: Font.Light
59− font.pixelSize: units.gu(6)
60− }
61−
62− Label {
63− id: dateLabel
64−
65− anchors {
66− left: parent.left
67− leftMargin: units.gu(2)
68− bottom: parent.bottom
69− bottomMargin: units.gu(1.5)
70− }
71− text: ""
72− color: Theme.palette.selected.backgroundText
73− fontSize: "small"
74− }
75− }
76−
77− Timer {
78− interval: 1000 * 10 // 10 seconds
79− running: true
80− repeat: true
81− triggeredOnStart: true
82− onTriggered: updateTime();
83− }
84−
85− function updateTime() {
86− var dt = new Date();
87− var time = Qt.formatTime(dt);
88− var space = time.indexOf(" ");
89− timeLabel.text = time.substr(0, space > 0 ? space : 5);
90− dateLabel.text = Qt.formatDateTime(dt, "dddd,\ndd MMMM");
91− }
92−
93− // Make it compatible with the PluginItem interface
94− function start() {}
95− function stop() {}
96− function reset() {}
97−}
Panel/Indicators/DatetimeIndicatorWidget.qmldeleted−67
@@ -1,67 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
23−
24−Indicators.IndicatorWidget {
25− id: indicatorWidget
26−
27− width: timeLabel.width + units.gu(1)
28− rootMenuType: "com.canonical.indicator.root.time"
29−
30− property alias label: timeLabel.text
31−
32− Label {
33− id: timeLabel
34− objectName: "timeLabel"
35− color: Theme.palette.selected.backgroundText
36− opacity: 0.8
37− font.family: "Ubuntu"
38− fontSize: "medium"
39− anchors.centerIn: parent
40− text: Qt.formatTime(timer.dateNow)
41− }
42−
43− Timer {
44− id: timer
45− interval: 1000 * 10
46− running: indicatorWidget.visible
47− repeat: true
48− triggeredOnStart: true
49− property date dateNow
50−
51− onTriggered: dateNow = new Date
52− }
53−
54− onActionStateChanged: {
55− if (action == undefined || !action.valid) {
56− enabled = false;
57− return;
58− }
59−
60− if (action.state == undefined) {
61− enabled = false;
62− return;
63− }
64−
65− enabled = action.state[3];
66− }
67−}
Panel/Indicators/DefaultIndicatorPage.qml+1−1
@@ -18,7 +18,7 @@
18 */
18 */
19
19
20import QtQuick 2.0
20import QtQuick 2.0
21−import Unity.IndicatorsLegacy 0.1 as Indicators
21+import Unity.Indicators 0.1 as Indicators
22
22
23Indicators.IndicatorPage {
23Indicators.IndicatorPage {
24 anchors.fill: parent
24 anchors.fill: parent
Panel/Indicators/DefaultIndicatorPage2.qmldeleted−25
@@ -1,25 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.Indicators 0.1 as Indicators
22−
23−Indicators.IndicatorPage {
24− anchors.fill: parent
25−}
Panel/Indicators/DefaultIndicatorWidget.qml+47−21
@@ -19,16 +19,16 @@
19
19
20import QtQuick 2.0
20import QtQuick 2.0
21import Ubuntu.Components 0.1
21import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
22+import Unity.Indicators 0.1 as Indicators
23
23
24Indicators.IndicatorWidget {
24Indicators.IndicatorWidget {
25 id: indicatorWidget
25 id: indicatorWidget
26
26
27− enabled:true
28 width: itemRow.width + units.gu(0.5)
27 width: itemRow.width + units.gu(0.5)
29
28
30− property alias label: itemLabel.text
29+ property alias leftLabel: itemLeftLabel.text
31− property alias iconSource: itemImage.source
30+ property alias rightLabel: itemRightLabel.text
31+ property var icons: undefined
32
32
33 Row {
33 Row {
34 id: itemRow
34 id: itemRow
@@ -40,19 +40,43 @@ Indicators.IndicatorWidget {
40 }
40 }
41 spacing: units.gu(0.5)
41 spacing: units.gu(0.5)
42
42
43− // FIXME : Should us Ubuntu.Icon . results in low res images
43+ Label {
44− Image {
44+ id: itemLeftLabel
45− id: itemImage
46− objectName: "itemImage"
45+ objectName: "leftLabel"
47− visible: source != ""
46+ color: Theme.palette.selected.backgroundText
48− height: indicatorWidget.iconSize
47+ opacity: 0.8
49− width: indicatorWidget.iconSize
48+ font.family: "Ubuntu"
49+ fontSize: "medium"
50 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+ }
51 }
75 }
52
76
53 Label {
77 Label {
54− id: itemLabel
78+ id: itemRightLabel
55− objectName: "itemLabel"
79+ objectName: "rightLabel"
56 color: Theme.palette.selected.backgroundText
80 color: Theme.palette.selected.backgroundText
57 opacity: 0.8
81 opacity: 0.8
58 font.family: "Ubuntu"
82 font.family: "Ubuntu"
@@ -62,16 +86,18 @@ Indicators.IndicatorWidget {
62 }
86 }
63 }
87 }
64
88
65− onActionStateChanged: {
89+ onRootActionStateChanged: {
66− if (action == undefined || !action.valid) {
90+ if (rootActionState == undefined) {
67− return;
91+ leftLabel = "";
68− }
92+ rightLabel = "";
69−
93+ icons = undefined;
70− if (action.state == undefined) {
94+ enabled = false;
71 return;
95 return;
72 }
96 }
73
97
74− label = action.state[Indicators.ActionState.Label];
98+ leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
75− iconSource = "image://theme/" + action.state[Indicators.ActionState.IconSource];
99+ rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
100+ icons = rootActionState.icons;
101+ enabled = rootActionState.visible;
76 }
102 }
77}
103}
Panel/Indicators/DefaultIndicatorWidget2.qmldeleted−103
@@ -1,103 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.Indicators 0.1 as Indicators
23−
24−Indicators.IndicatorWidget {
25− id: indicatorWidget
26−
27− width: itemRow.width + units.gu(0.5)
28−
29− property alias leftLabel: itemLeftLabel.text
30− property alias rightLabel: itemRightLabel.text
31− property var icons: undefined
32−
33− Row {
34− id: itemRow
35− objectName: "itemRow"
36− anchors {
37− top: parent.top
38− bottom: parent.bottom
39− horizontalCenter: parent.horizontalCenter
40− }
41− spacing: units.gu(0.5)
42−
43− Label {
44− id: itemLeftLabel
45− objectName: "leftLabel"
46− color: Theme.palette.selected.backgroundText
47− opacity: 0.8
48− font.family: "Ubuntu"
49− fontSize: "medium"
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− }
75− }
76−
77− Label {
78− id: itemRightLabel
79− objectName: "rightLabel"
80− color: Theme.palette.selected.backgroundText
81− opacity: 0.8
82− font.family: "Ubuntu"
83− fontSize: "medium"
84− anchors.verticalCenter: parent.verticalCenter
85− visible: text != ""
86− }
87− }
88−
89− onActionStateChanged: {
90− if (actionState == undefined) {
91− leftLabel = "";
92− rightLabel = "";
93− icons = undefined;
94− enabled = false;
95− return;
96− }
97−
98− leftLabel = actionState.leftLabel ? actionState.leftLabel : "";
99− rightLabel = actionState.rightLabel ? actionState.rightLabel : "";
100− icons = actionState.icons;
101− enabled = actionState.visible;
102− }
103−}
Panel/Indicators/MessagingIndicatorPage.qmldeleted−35
@@ -1,35 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
23−
24−Indicators.IndicatorPage {
25− anchors.fill: parent
26−
27− highlightFollowsCurrentItem: false
28− emptyText: "You have no more outstanding messages."
29−
30− function stop() {
31− // never stops the service
32− // this will keep all objects in memory, consume more memory
33− // but will optimize the menu contruction on the screen
34− }
35−}
Panel/Indicators/MessagingIndicatorWidget.qmldeleted−25
@@ -1,25 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−
22−DefaultIndicatorWidget {
23− // default the icon so we have something to show when we don't have the bus.
24− iconSource: "image://theme/indicator-messages"
25−}
Panel/Indicators/NetworkIndicatorPage.qmldeleted−83
@@ -1,83 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.IndicatorsLegacy 0.1 as Indicators
22−import Unity.IndicatorsLegacy.Network 0.1 as ICNetwork
23−import Ubuntu.Components 0.1
24−
25−PageStack {
26− id: networkPage
27− // Stops the search for a parent tree node.
28− // We don't want it going up to the indicator tabs.
29− // FIXME: need a better way of doing this.
30− // https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1211704
31− __propagated: null
32−
33− property alias title: _mainPage.title
34− property alias emptyText: pluginItem.emptyText
35− property alias busType: pluginItem.busType
36− property alias busName: pluginItem.busName
37− property alias actionsObjectPath : pluginItem.actionsObjectPath
38− property alias menuObjectPaths : pluginItem.menuObjectPaths
39−
40− anchors.fill: parent
41−
42− Page {
43− id: _mainPage
44−
45− Indicators.IndicatorPage {
46− id: pluginItem
47− anchors.fill: parent
48− }
49− }
50−
51− Component {
52− id: passwordPageComponent
53−
54− ICNetwork.PasswordPage {
55− agent: networkAgent
56− }
57− }
58−
59− ICNetwork.NetworkAgent {
60− id: networkAgent
61−
62− onSecretRequested: {
63− networkPage.push(passwordPageComponent, {"token": token});
64− }
65− }
66−
67− function start()
68− {
69− push(_mainPage);
70− pluginItem.start();
71− }
72−
73− function stop()
74− {
75− clear();
76− pluginItem.stop();
77− }
78−
79− function reset()
80− {
81− pluginItem.reset();
82− }
83−}
Panel/Indicators/NetworkIndicatorPage2.qmldeleted−82
@@ -1,82 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.Indicators 0.1 as Indicators
22−import Unity.Indicators.Network 0.1 as ICNetwork
23−import Ubuntu.Components 0.1
24−
25−PageStack {
26− id: networkPage
27− // Stops the search for a parent tree node.
28− // We don't want it going up to the indicator tabs.
29− // FIXME: need a better way of doing this.
30− // https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1211704
31− __propagated: null
32−
33− property alias title: _mainPage.title
34− property alias emptyText: pluginItem.emptyText
35− property alias busName: pluginItem.busName
36− property alias actionsObjectPath : pluginItem.actionsObjectPath
37− property alias menuObjectPaths : pluginItem.menuObjectPaths
38−
39− anchors.fill: parent
40−
41− Page {
42− id: _mainPage
43−
44− Indicators.IndicatorPage {
45− id: pluginItem
46− anchors.fill: parent
47− }
48− }
49−
50− Component {
51− id: passwordPageComponent
52−
53− ICNetwork.PasswordPage {
54− agent: networkAgent
55− }
56− }
57−
58− ICNetwork.NetworkAgent {
59− id: networkAgent
60−
61− onSecretRequested: {
62− networkPage.push(passwordPageComponent, {"token": token});
63− }
64− }
65−
66− function start()
67− {
68− push(_mainPage);
69− pluginItem.start();
70− }
71−
72− function stop()
73− {
74− clear();
75− pluginItem.stop();
76− }
77−
78− function reset()
79− {
80− pluginItem.reset();
81− }
82−}
Panel/Indicators/NetworkIndicatorWidget.qmldeleted−112
@@ -1,112 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
23−
24−Indicators.IndicatorWidget {
25− id: indicatorWidget
26−
27− width: networkIcon.width + units.gu(0.5)
28−
29− property int signalStrength: 0
30− property int connectionState: Indicators.NetworkConnection.Initial
31− rootMenuType: "com.canonical.indicator.root.network"
32−
33− // FIXME : Should us Ubuntu.Icon . results in low res images
34− Image {
35− id: networkIcon
36− objectName: "itemImage"
37− source: get_icon_for_signal(connectionState, signalStrength)
38− visible: source != ""
39− height: indicatorWidget.iconSize
40− width: indicatorWidget.iconSize
41− anchors.centerIn: parent
42− }
43−
44− onActionStateChanged: {
45− if (action == undefined || !action.valid) {
46− enabled = false;
47− return;
48− }
49−
50− if (action.state == undefined) {
51− enabled = false;
52− connectionState = 0;
53− return;
54− }
55−
56− enabled = true;
57− connectionState = action.state[Indicators.NetworkActionState.Connection];
58− if (connectionState == Indicators.NetworkConnection.Activated) {
59− signalStrength = action.state[Indicators.NetworkActionState.SignalStrength];
60− }
61− }
62−
63− NumberAnimation {
64− id: activation_animation
65− target: indicatorWidget
66− property: "signalStrength"
67− from: 0
68− to: 100
69− duration: 2500 // 5 states in 2.5 seconds
70− loops: Animation.Infinite
71− }
72−
73− states: [
74− State {
75− name: "unknown"
76− when: connectionState < Indicators.NetworkConnection.Activating || connectionState > Indicators.NetworkConnection.Deactivating
77− PropertyChanges { target: activation_animation; running: false }
78− },
79− State {
80− name: "activating"
81− when: connectionState == Indicators.NetworkConnection.Activating
82− PropertyChanges { target: activation_animation; running: true }
83− },
84− State {
85− name: "activated"
86− when: connectionState == Indicators.NetworkConnection.Activated
87− PropertyChanges { target: activation_animation; running: false }
88− },
89− State {
90− name: "deactivating"
91− when: connectionState == Indicators.NetworkConnection.Deactivating
92− PropertyChanges { target: activation_animation; running: true }
93− }
94− ]
95−
96−
97− function get_icon_for_signal(con_state, value) {
98− if (con_state >= Indicators.NetworkConnection.Activating && con_state <= Indicators.NetworkConnection.Deactivating) {
99− if (value == 0) {
100− return "image://theme/nm-signal-00";
101− } else if (value <= 25) {
102− return "image://theme/nm-signal-25";
103− } else if (value <= 50) {
104− return "image://theme/nm-signal-50";
105− } else if (value <= 75) {
106− return "image://theme/nm-signal-75";
107− }
108− return "image://theme/nm-signal-100";
109− }
110− return "image://theme/wifi-none";
111− }
112−}
Panel/Indicators/SoundIndicatorWidget.qmldeleted−26
@@ -1,26 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−
22−DefaultIndicatorWidget {
23− // default the icon so we have something to show when we don't have the bus.
24− iconSource: "image://theme/audio-volume-high"
25− enabled: true
26−}
Panel/Indicators/client/IndicatorsList.qml+14−9
@@ -20,7 +20,7 @@
20import QtQuick 2.0
20import QtQuick 2.0
21import Ubuntu.Components 0.1
21import Ubuntu.Components 0.1
22import Ubuntu.Components.ListItems 0.1 as ListItem
22import Ubuntu.Components.ListItems 0.1 as ListItem
23−import Unity.IndicatorsLegacy 0.1 as Indicators
23+import Unity.Indicators 0.1 as Indicators
24import "../.."
24import "../.."
25
25
26Page {
26Page {
@@ -28,8 +28,10 @@ Page {
28 anchors.fill: parent
28 anchors.fill: parent
29 title: "Plugin list"
29 title: "Plugin list"
30
30
31− IndicatorsDataModel {
31+ Indicators.IndicatorsModel {
32 id: indicatorsModel
32 id: indicatorsModel
33+
34+ Component.onCompleted: load()
33 }
35 }
34
36
35 ListView {
37 ListView {
@@ -38,22 +40,25 @@ Page {
38 anchors.fill: parent
40 anchors.fill: parent
39 model: indicatorsModel
41 model: indicatorsModel
40
42
41− delegate: Indicators.MenuItem {
43+ delegate: Indicators.FramedMenuItem {
42 anchors.left: parent.left
44 anchors.left: parent.left
43 anchors.right: parent.right
45 anchors.right: parent.right
44 objectName: identifier
46 objectName: identifier
45
47
46− Label {
48+ text: identifier
47− anchors.left: parent.left
48− anchors.leftMargin: units.gu(0.5)
49− anchors.verticalCenter: parent.verticalCenter
50− text: title
51− }
52
49
53 onClicked: {
50 onClicked: {
54 var new_page = Qt.createComponent("IndicatorsPage.qml");
51 var new_page = Qt.createComponent("IndicatorsPage.qml");
55 page.pageStack.push(new_page.createObject(pages), {"indicatorProperties" : model.indicatorProperties, "pageSource" : model.pageSource});
52 page.pageStack.push(new_page.createObject(pages), {"indicatorProperties" : model.indicatorProperties, "pageSource" : model.pageSource});
56 }
53 }
54+
55+ Rectangle {
56+ id: background
57+
58+ anchors.fill: parent
59+ color: "#221e1c"
60+ z: -1
61+ }
57 }
62 }
58 }
63 }
59}
64}
Panel/Indicators/client/IndicatorsTree.qml+4
@@ -44,6 +44,10 @@ Page {
44 menuObjectPath: page.deviceMenuObjectPath
44 menuObjectPath: page.deviceMenuObjectPath
45 }
45 }
46
46
47+ Indicators.RootActionState {
48+ menu: unityModel
49+ }
50+
47 Indicators.ModelPrinter {
51 Indicators.ModelPrinter {
48 id: printer
52 id: printer
49 model: unityModel
53 model: unityModel
Panel/IndicatorsDataModel.qmldeleted−79
@@ -1,79 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.Indicators 0.1 as Indicators
22−import Utils 0.1
23−
24−Indicators.IndicatorsModel {
25− id: ic_model
26−
27− Component.onCompleted: load()
28−
29− indicatorData : {
30− 'indicator-location' : {
31− 'title': 'Location',
32− 'description' : '',
33− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
34− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
35− },
36− 'indicator-bluetooth' : {
37− 'title': 'Bluetooth',
38− 'description' : '',
39− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
40− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
41− },
42− 'indicator-messages' : {
43− 'title': 'Messaging',
44− 'description' : '',
45− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
46− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
47− },
48− 'indicator-sound' : {
49− 'title': 'Sound',
50− 'description' : '',
51− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
52− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
53− },
54− 'indicator-network' : {
55− 'title': 'Networks',
56− 'description' : '',
57− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
58− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorPage2.qml'
59− },
60− 'indicator-power' : {
61− 'title': 'Battery',
62− 'description' : '',
63− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
64− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
65− },
66− 'indicator-session' : {
67− 'title': 'Session',
68− 'description' : '',
69− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
70− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
71− },
72− 'indicator-datetime' : {
73− 'title': 'Date and Time',
74− 'description' : '',
75− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
76− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
77− }
78− }
79−}
Panel/MenuContent.qml+9−2
@@ -100,16 +100,17 @@ MainView {
100 Tab {
100 Tab {
101 id: tab
101 id: tab
102 objectName: model.identifier
102 objectName: model.identifier
103− title: model.title
104
103
105 page: Page {
104 page: Page {
106 Loader {
105 Loader {
106+ id: loader
107 clip: true
107 clip: true
108 anchors.fill: parent
108 anchors.fill: parent
109 source: pageSource
109 source: pageSource
110 asynchronous: true
110 asynchronous: true
111
111
112− property bool contentActive: content.__contentActive && menuActivator.content[index].active
112+ readonly property bool indexActive: index >= 0 && index < menuActivator.count && menuActivator.content[index].active
113+ readonly property bool contentActive: content.__contentActive && indexActive
113
114
114 onContentActiveChanged: {
115 onContentActiveChanged: {
115 if (contentActive && item) {
116 if (contentActive && item) {
@@ -136,6 +137,12 @@ MainView {
136 item.start()
137 item.start()
137 }
138 }
138 }
139 }
140+
141+ Binding {
142+ target: tab
143+ property: "title"
144+ value: loader.item && loader.item.hasOwnProperty("title") && loader.item.title !== "" ? loader.item.title : model.identifier
145+ }
139 }
146 }
140 }
147 }
141 }
148 }
Panel/Panel.qml+3−2
@@ -73,6 +73,7 @@ Item {
73
73
74 Indicators {
74 Indicators {
75 id: indicatorsMenu
75 id: indicatorsMenu
76+ objectName: "indicators"
76
77
77 anchors.right: parent.right
78 anchors.right: parent.right
78 y: panelBackground.y
79 y: panelBackground.y
@@ -82,6 +83,7 @@ Item {
82 panelHeight: __panelMinusSeparatorLineHeight
83 panelHeight: __panelMinusSeparatorLineHeight
83 openedHeight: parent.height + (pinnedMode ? 0 : root.panelHeight)
84 openedHeight: parent.height + (pinnedMode ? 0 : root.panelHeight)
84 pinnedMode: !fullscreenMode
85 pinnedMode: !fullscreenMode
86+ overFlowWidth: search.state=="hidden" ? parent.width : parent.width - search.width
85
87
86 property real unitProgress: (height - panelHeight) / (openedHeight - panelHeight)
88 property real unitProgress: (height - panelHeight) / (openedHeight - panelHeight)
87 }
89 }
@@ -120,14 +122,13 @@ Item {
120 return "hidden";
122 return "hidden";
121 }
123 }
122 }
124 }
123− if (root.searchVisible) {
125+ if (root.searchVisible && !indicatorsMenu.showAll) {
124 return "visible";
126 return "visible";
125 }
127 }
126
128
127 return "hidden";
129 return "hidden";
128 }
130 }
129
131
130− width: units.gu(13)
131 height: __panelMinusSeparatorLineHeight
132 height: __panelMinusSeparatorLineHeight
132 anchors {
133 anchors {
133 top: panelBackground.top
134 top: panelBackground.top
Panel/SearchIndicator.qml+9−8
@@ -21,7 +21,7 @@ import "../Components"
21Item {
21Item {
22 id: search
22 id: search
23
23
24− width: units.gu(9)
24+ width: container.width + units.gu(2)
25 height: units.gu(3)
25 height: units.gu(3)
26
26
27 property string headerText: i18n.tr("Search")
27 property string headerText: i18n.tr("Search")
@@ -34,21 +34,24 @@ Item {
34 onClicked: search.clicked()
34 onClicked: search.clicked()
35 }
35 }
36
36
37− Item {
37+ Row {
38 id: container
38 id: container
39 objectName: "container"
39 objectName: "container"
40
40
41− width: parent.width
42 height: parent.height
41 height: parent.height
42+ width: childrenRect.width
43+ anchors {
44+ left: parent.left
45+ leftMargin: units.gu(1)
46+ }
47+ spacing: units.gu(1)
43
48
44− Behavior on opacity { StandardAnimation {} }
49+ Behavior on opacity { StandardAnimation { duration: 300 } }
45
50
46 Image {
51 Image {
47 id: icon
52 id: icon
48 source: "graphics/search.png"
53 source: "graphics/search.png"
49 anchors.verticalCenter: parent.verticalCenter
54 anchors.verticalCenter: parent.verticalCenter
50− anchors.left: parent.left
51− anchors.leftMargin: units.gu(1)
52 }
55 }
53
56
54 Label {
57 Label {
@@ -56,8 +59,6 @@ Item {
56 color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
59 color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
57 fontSize: "small"
60 fontSize: "small"
58 font.capitalization: Font.AllUppercase
61 font.capitalization: Font.AllUppercase
59− anchors.left: icon.right
60− anchors.leftMargin: units.gu(1)
61 anchors.verticalCenter: parent.verticalCenter
62 anchors.verticalCenter: parent.verticalCenter
62 }
63 }
63 }
64 }
Shell.qml+64−47
@@ -99,17 +99,6 @@ FocusScope {
99 }
99 }
100 }
100 }
101
101
102− Connections {
103− target: applicationManager
104− ignoreUnknownSignals: true
105− onFocusRequested: {
106− // TODO: this should be protected to only unlock for certain applications / certain usecases
107− // potentially only in connection with a notification
108− greeter.hide();
109− shell.activateApplication(desktopFile);
110− }
111− }
112−
113 function activateApplication(desktopFile, argument) {
102 function activateApplication(desktopFile, argument) {
114 if (applicationManager) {
103 if (applicationManager) {
115 // For newly started applications, as it takes them time to draw their first frame
104 // For newly started applications, as it takes them time to draw their first frame
@@ -160,10 +149,6 @@ FocusScope {
160 }
149 }
161 }
150 }
162
151
163− OSKController {
164− anchors.fill: parent // as needs to know the geometry of the shell
165− }
166−
167 VolumeControl {
152 VolumeControl {
168 id: volumeControl
153 id: volumeControl
169 }
154 }
@@ -405,7 +390,7 @@ FocusScope {
405
390
406 width: shell.edgeSize
391 width: shell.edgeSize
407 direction: Direction.Leftwards
392 direction: Direction.Leftwards
408− enabled: edgeDemo.dashEnabled
393+ enabled: greeter.showProgress == 0 && edgeDemo.dashEnabled
409 property bool haveApps: mainStage.applications.count > 0 || sideStage.applications.count > 0
394 property bool haveApps: mainStage.applications.count > 0 || sideStage.applications.count > 0
410
395
411 maxTotalDragDistance: haveApps ? parent.width : parent.width * 0.7
396 maxTotalDragDistance: haveApps ? parent.width : parent.width * 0.7
@@ -472,6 +457,26 @@ FocusScope {
472
457
473 dragHandleWidth: shell.edgeSize
458 dragHandleWidth: shell.edgeSize
474
459
460+ property var previousMainApp: null
461+ property var previousSideApp: null
462+
463+ function removeApplicationFocus() {
464+ greeter.previousMainApp = applicationManager.mainStageFocusedApplication;
465+ greeter.previousSideApp = applicationManager.sideStageFocusedApplication;
466+ applicationManager.unfocusCurrentApplication();
467+ }
468+
469+ function restoreApplicationFocus() {
470+ if (greeter.previousMainApp) {
471+ applicationManager.focusApplication(greeter.previousMainApp);
472+ greeter.previousMainApp = null;
473+ }
474+ if (greeter.previousSideApp) {
475+ applicationManager.focusApplication(greeter.previousSideApp);
476+ greeter.previousSideApp = null;
477+ }
478+ }
479+
475 onShownChanged: {
480 onShownChanged: {
476 if (shown) {
481 if (shown) {
477 lockscreen.reset();
482 lockscreen.reset();
@@ -482,6 +487,9 @@ FocusScope {
482 greeter.selected(0);
487 greeter.selected(0);
483 }
488 }
484 greeter.forceActiveFocus();
489 greeter.forceActiveFocus();
490+ removeApplicationFocus();
491+ } else {
492+ restoreApplicationFocus();
485 }
493 }
486 }
494 }
487
495
@@ -498,6 +506,29 @@ FocusScope {
498 launcher.tease();
506 launcher.tease();
499 }
507 }
500 }
508 }
509+
510+ Connections {
511+ target: applicationManager
512+ ignoreUnknownSignals: true
513+ // If any app is focused when greeter is open, it's due to a user action
514+ // like a snap decision (say, an incoming call).
515+ // TODO: these should be protected to only unlock for certain applications / certain usecases
516+ // potentially only in connection with a notification.
517+ onMainStageFocusedApplicationChanged: {
518+ if (greeter.shown && applicationManager.mainStageFocusedApplication) {
519+ greeter.previousMainApp = null // make way for new focused app
520+ greeter.previousSideApp = null
521+ greeter.hide()
522+ }
523+ }
524+ onSideStageFocusedApplicationChanged: {
525+ if (greeter.shown && applicationManager.sideStageFocusedApplication) {
526+ greeter.previousMainApp = null // make way for new focused app
527+ greeter.previousSideApp = null
528+ greeter.hide()
529+ }
530+ }
531+ }
501 }
532 }
502
533
503 InputFilterArea {
534 InputFilterArea {
@@ -510,34 +541,11 @@ FocusScope {
510 id: powerConnection
541 id: powerConnection
511 target: Powerd
542 target: Powerd
512
543
513− property var previousMainApp: null
514− property var previousSideApp: null
515−
516− function setFocused(focused) {
517− if (!focused) {
518− powerConnection.previousMainApp = applicationManager.mainStageFocusedApplication;
519− powerConnection.previousSideApp = applicationManager.sideStageFocusedApplication;
520− applicationManager.unfocusCurrentApplication();
521− } else {
522− if (powerConnection.previousMainApp) {
523− applicationManager.focusApplication(powerConnection.previousMainApp);
524− powerConnection.previousMainApp = null;
525− }
526− if (powerConnection.previousSideApp) {
527− applicationManager.focusApplication(powerConnection.previousSideApp);
528− powerConnection.previousSideApp = null;
529− }
530− }
531− }
532−
533 onDisplayPowerStateChange: {
544 onDisplayPowerStateChange: {
534 // We ignore any display-off signals when the proximity sensor
545 // We ignore any display-off signals when the proximity sensor
535 // is active. This usually indicates something like a phone call.
546 // is active. This usually indicates something like a phone call.
536 if (status == Powerd.Off && (flags & Powerd.UseProximity) == 0) {
547 if (status == Powerd.Off && (flags & Powerd.UseProximity) == 0) {
537− powerConnection.setFocused(false);
538− greeter.show();
548+ greeter.showNow();
539− } else if (status == Powerd.On) {
540− powerConnection.setFocused(true);
541 }
549 }
542
550
543 // No reason to chew demo CPU when user isn't watching
551 // No reason to chew demo CPU when user isn't watching
@@ -550,13 +558,9 @@ FocusScope {
550 }
558 }
551
559
552 function showHome() {
560 function showHome() {
561+ var animate = !greeter.shown && !stages.shown
553 greeter.hide()
562 greeter.hide()
554− // Animate if moving between application and dash
555− if (!stages.shown) {
556− dash.setCurrentScope("home.scope", true, false)
563+ dash.setCurrentScope("home.scope", animate, false)
557− } else {
558− dash.setCurrentScope("home.scope", false, false)
559− }
560 stages.hide()
564 stages.hide()
561 }
565 }
562
566
@@ -623,6 +627,7 @@ FocusScope {
623 }
627 }
624
628
625 Bottombar {
629 Bottombar {
630+ id: bottombar
626 theHud: hud
631 theHud: hud
627 anchors.fill: parent
632 anchors.fill: parent
628 enabled: hud.available
633 enabled: hud.available
@@ -650,7 +655,7 @@ FocusScope {
650 onDashItemSelected: showHome()
655 onDashItemSelected: showHome()
651 onDash: {
656 onDash: {
652 if (stages.shown) {
657 if (stages.shown) {
653− dash.setCurrentScope("applications.scope", true, false)
658+ dash.setCurrentScope("applications.scope", true /* animate */, true /* reset */)
654 stages.hide();
659 stages.hide();
655 launcher.hide();
660 launcher.hide();
656 }
661 }
@@ -663,6 +668,7 @@ FocusScope {
663 if (shown) {
668 if (shown) {
664 panel.indicators.hide()
669 panel.indicators.hide()
665 hud.hide()
670 hud.hide()
671+ bottombar.hide()
666 }
672 }
667 }
673 }
668 }
674 }
@@ -692,10 +698,17 @@ FocusScope {
692 PropertyChanges { target: notifications; width: units.gu(38) }
698 PropertyChanges { target: notifications; width: units.gu(38) }
693 }
699 }
694 ]
700 ]
701+
702+ InputFilterArea {
703+ anchors { left: parent.left; right: parent.right }
704+ height: parent.contentHeight
705+ blockInput: height > 0
706+ }
695 }
707 }
696 }
708 }
697
709
698 focus: true
710 focus: true
711+ onFocusChanged: if (!focus) forceActiveFocus();
699
712
700 InputFilterArea {
713 InputFilterArea {
701 anchors {
714 anchors {
@@ -723,6 +736,10 @@ FocusScope {
723 value: "unity8"
736 value: "unity8"
724 }
737 }
725
738
739+ OSKController {
740+ anchors.fill: parent // as needs to know the geometry of the shell
741+ }
742+
726 //FIXME: This should be handled in the input stack, keyboard shouldnt propagate
743 //FIXME: This should be handled in the input stack, keyboard shouldnt propagate
727 MouseArea {
744 MouseArea {
728 anchors.bottom: parent.bottom
745 anchors.bottom: parent.bottom
debian/changelog+212
@@ -1,3 +1,215 @@
1+unity8 (7.82+13.10.20131010-0ubuntu1) saucy; urgency=low
2+
3+ [ David Callé ]
4+ * Small logic change in preview descriptions line breaks. Multiple new
5+ lines are now replaced by multiple br tags.
6+
7+ [ Nick Dedekind ]
8+ * Use indicator identifier for indicators-client list item label.
9+ * Make sure overflow indicators are hidden and not the search label.
10+
11+ [ Mirco Müller ]
12+ * Tweaks to notifications to improve spec-compliance. - updated
13+ notifications-qmltest to reflect the use of a variant-map for the
14+ hints - made text-fields as heigh as buttons - made the summary
15+ align horizontally to the icon - updated button-height and bubble-
16+ background.
17+
18+ [ Pawel Stolowski ]
19+ * Handle category_order_changes signal from scopes (used in Home only)
20+ and reorder categories accordingly.
21+ * Implementation of albumart image provider for audio content.
22+
23+ [ Michael Terry ]
24+ * Hide the greeter when an app is focused, fixing snap decisions
25+ launching an app in the greeter (like receiving a call).
26+
27+ [ Michael Zanetti ]
28+ * Launcher - remove support for pinning items in the backend After the
29+ latest design changes, recent apps is everything that is contained
30+ in the ApplicationManager. So no need for storing anything else than
31+ pinned apps in the config.
32+
33+ [ Michał Sawicz ]
34+ * Remove the mir socket before starting unity8 during autopilot tests.
35+
36+ [ Ubuntu daily release ]
37+ * Automatic snapshot from revision 420
38+
39+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 10 Oct 2013 04:15:13 +0000
40+
41+unity8 (7.82+13.10.20131008.1-0ubuntu1) saucy; urgency=low
42+
43+ [ Michal Hruby ]
44+ * Add Scope::isActive property and corresponding tests. (LP: #1230352)
45+
46+ [ Daniel d'Andrada ]
47+ * Move OSKController to the front as it will now also block input
48+ meant to the OSK That's in the unity-mir implementation. The
49+ SurfaceFlinger one is still an empty noop. Currently, when the OSK
50+ is up, both shell and OSK get user input, thus we need the
51+ OSKController to shield our shell components from them. (LP:
52+ #1236773)
53+
54+ [ Michał Sawicz ]
55+ * Add Scope::isActive property and corresponding tests. (LP: #1230352)
56+ * Force focus back on shell in case it loses it for some reason.
57+
58+ [ Ubuntu daily release ]
59+ * Automatic snapshot from revision 409
60+
61+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 08 Oct 2013 19:14:20 +0000
62+
63+unity8 (7.82+13.10.20131008-0ubuntu1) saucy; urgency=low
64+
65+ [ Michał Sawicz ]
66+ * update previews to match design. (LP: #1224555)
67+ * Add an InputFilterArea in Notifications. (LP: #1233411, #1235215)
68+
69+ [ Ying-Chun Liu ]
70+ * update previews to match design. (LP: #1224555)
71+
72+ [ Albert Astals ]
73+ * Unrevert 376 by reverting r395 and a small fix to fix the cpu
74+ hogging issue . (LP: #1124567)
75+
76+ [ Michael Terry ]
77+ * Add Showable.showNow() method and use it in Shell to immediately
78+ show greeter when we blank the screen rather than animating it. (LP:
79+ #1233564)
80+
81+ [ Michael Zanetti ]
82+ * update previews to match design. (LP: #1224555)
83+
84+ [ Diego Sarmentero ]
85+ * update previews to match design. (LP: #1224555)
86+
87+ [ Ubuntu daily release ]
88+ * Automatic snapshot from revision 404
89+
90+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 08 Oct 2013 02:57:55 +0000
91+
92+unity8 (7.82+13.10.20131007-0ubuntu1) saucy; urgency=low
93+
94+ [ Michał Sawicz ]
95+ * Respect pre-set import and library paths and prevent segfault in
96+ startShell.
97+
98+ [ Ubuntu daily release ]
99+ * Automatic snapshot from revision 399
100+
101+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 07 Oct 2013 07:10:46 +0000
102+
103+unity8 (7.82+13.10.20131005-0ubuntu1) saucy; urgency=low
104+
105+ [ Michał Sawicz ]
106+ * Revert r376 that caused constant CPU usage due to the
107+ ActivityIndicator.
108+
109+ [ Nick Dedekind ]
110+ * Removed indicators-client autopilot tests. (LP: #1234736)
111+
112+ [ Albert Astals ]
113+ * Revert r388. (LP: #1235268)
114+
115+ [ Christopher Lee ]
116+ * Removes passing -fullscreen to unity8 when on the device (as per bug
117+ #1235065). (LP: #1235065)
118+
119+ [ Ubuntu daily release ]
120+ * Automatic snapshot from revision 396
121+
122+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Sat, 05 Oct 2013 11:45:14 +0000
123+
124+unity8 (7.82+13.10.20131004.2-0ubuntu1) saucy; urgency=low
125+
126+ * Revert 7.82+13.10.20131004.1-0ubuntu1 back to
127+ 7.81.3+13.10.20130927.3-0ubuntu1 due to CPU hogging issue with
128+ 7.82+13.10.20131004.1-0ubuntu1.
129+
130+ -- Loïc Minier <loic.minier@ubuntu.com> Fri, 04 Oct 2013 21:22:29 +0200
131+
132+unity8 (7.82+13.10.20131004.1-0ubuntu1) saucy; urgency=low
133+
134+ [ Michał Sawicz ]
135+ * Bump to indicate support for extended snap decisions.
136+ * Make Tile themeable, add renderers for Dash Plugins and weather.
137+ (LP: #1231948)
138+ * Drop network agents now that they're in indicator-network instead.
139+
140+ [ Michal Hruby ]
141+ * Differentiate generic and music carousels.
142+ * Use the thumbnailer image provider for scope results that don't
143+ specify icon as well as for previews.
144+ * Added an indicator which is displayed in the search bar whenever a
145+ search is in progress. Added accompanying test in tst_PageHeader.
146+ * Expose rendererHint to shell.
147+
148+ [ Albert Astals ]
149+ * Update pot file. (LP: #1232374)
150+ * Only enable the animation when the item is on screen (i.e. !culled)
151+ . (LP: #1200374)
152+ * Do not crash on positionAtBeginning if the list is empty .
153+ * Enable/disable running apps height animation in a less error prone
154+ way.
155+
156+ [ Michael Terry ]
157+ * Use a chevron after 'Skip intro' and drop the underlining.
158+ * Load testability driver when QT_LOAD_TESTABILITY is set. (LP:
159+ #1226234)
160+ * Listen to the system setting StatsWelcomeScreen, which tells us
161+ whether to show user-specific infographic data in the greeter. (LP:
162+ #1207857)
163+
164+ [ Gerry Boland ]
165+ * WM: ensure focusedApplicationWhenUsingScreenshots reset when unused,
166+ and only used when set. Fixes window focus conflict between shell
167+ and ApplicationManager.
168+
169+ [ Nick Dedekind ]
170+ * Removed deprecated Unity.IndicatorsLegacy plugin.
171+ * Added actionState parser to the indicators-client text printer so
172+ that we get the icon.
173+ * Moved indicator page titles to the root action state of menu model.
174+ (LP: #1223635)
175+
176+ [ Mirco Müller ]
177+ * Added rendering- and interaction-support for the first three
178+ extended snap-decision dialog-cases password-entry, user-
179+ authentication and simunlock.
180+
181+ [ Daniel d'Andrada ]
182+ * Revert the reversion of r304 since it doesn't seem to crash anymore
183+ Original commit was Reset apps scope when returning from app to dash
184+ (LP #1193419) If an app is on foreground and you perform a long
185+ left-edge swipe to minimize it, and therefore return to the dash,
186+ the dash should be in the Applications scope and showing the
187+ running/recents applications. (LP: #1193419)
188+
189+ [ Andrea Cimitan ]
190+ * Add behaviours to the hud reveal. (LP: #1224480, #1224633)
191+ * Make Tile themeable, add renderers for Dash Plugins and weather.
192+ (LP: #1231948)
193+
194+ [ Michael Zanetti ]
195+ * fix inserting into quicklistmodel.
196+ * Drop useStorage argument and use exising LAUNCHER_TESTING define for
197+ this decision.
198+
199+ [ Omer Akram ]
200+ * Make the volume/brightness slider changes realtime. (LP: #1227595)
201+
202+ [ Nicolas d'Offay ]
203+ * Fixed black colour on the first of the month due to division. (LP:
204+ #1233657)
205+ * Added an indicator which is displayed in the search bar whenever a
206+ search is in progress. Added accompanying test in tst_PageHeader.
207+
208+ [ Ubuntu daily release ]
209+ * Automatic snapshot from revision 390
210+
211+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 04 Oct 2013 06:55:16 +0000
212+
1unity8 (7.81.3+13.10.20130927.3-0ubuntu1) saucy; urgency=low
213unity8 (7.81.3+13.10.20130927.3-0ubuntu1) saucy; urgency=low
2
214
3 [ Michal Hruby ]
215 [ Michal Hruby ]
debian/control+5−8
@@ -14,8 +14,6 @@ Build-Depends: cmake,
14 libjson-perl,
14 libjson-perl,
15 libnih-dbus-dev,
15 libnih-dbus-dev,
16 libnih-dev,
16 libnih-dev,
17− libnm-glib-dev,
18− libnm-util-dev,
19 libpulse-dev,
17 libpulse-dev,
20 libqmenumodel-dev (>= 0.2.7),
18 libqmenumodel-dev (>= 0.2.7),
21 libqt5v8-5-private-dev,
19 libqt5v8-5-private-dev,
@@ -28,6 +26,7 @@ Build-Depends: cmake,
28 libupstart-dev,
26 libupstart-dev,
29 libusermetricsoutput1-dev,
27 libusermetricsoutput1-dev,
30 libxcb1-dev,
28 libxcb1-dev,
29+ libglib2.0-dev,
31 pkg-config,
30 pkg-config,
32 python:any (>= 2.7),
31 python:any (>= 2.7),
33 python-setuptools,
32 python-setuptools,
@@ -43,6 +42,7 @@ Build-Depends: cmake,
43 qtdeclarative5-test-plugin,
42 qtdeclarative5-test-plugin,
44 qtdeclarative5-ubuntu-ui-toolkit-plugin,
43 qtdeclarative5-ubuntu-ui-toolkit-plugin,
45 qtdeclarative5-xmllistmodel-plugin,
44 qtdeclarative5-xmllistmodel-plugin,
45+ libqt5xmlpatterns5-dev,
46 ttf-ubuntu-font-family,
46 ttf-ubuntu-font-family,
47Standards-Version: 3.9.4
47Standards-Version: 3.9.4
48Homepage: http://launchpad.net/unity
48Homepage: http://launchpad.net/unity
@@ -74,23 +74,20 @@ Depends: gsettings-desktop-schemas,
74 qtdeclarative5-unity-notifications-plugin | unity-notifications-impl,
74 qtdeclarative5-unity-notifications-plugin | unity-notifications-impl,
75 qtdeclarative5-xmllistmodel-plugin,
75 qtdeclarative5-xmllistmodel-plugin,
76 unity-launcher-impl-3,
76 unity-launcher-impl-3,
77− unity-notifications-impl-1,
77+ unity-notifications-impl-2,
78 unity8-fake-env | qtubuntu-shell,
78 unity8-fake-env | qtubuntu-shell,
79 unity8-private (= ${binary:Version}),
79 unity8-private (= ${binary:Version}),
80 unity8-private | unity-launcher-impl,
80 unity8-private | unity-launcher-impl,
81 ${misc:Depends},
81 ${misc:Depends},
82 ${shlibs:Depends},
82 ${shlibs:Depends},
83−Recommends: indicator-battery,
84− indicator-messages,
85− indicator-time,
86− ${unity-default-masterscopes},
83+Recommends: ${unity-default-masterscopes},
84+Breaks: indicator-network (<< 0.5.1)
87Description: Unity 8 shell
85Description: Unity 8 shell
88 The Unity 8 shell is the primary user interface for Ubuntu devices.
86 The Unity 8 shell is the primary user interface for Ubuntu devices.
89
87
90Package: unity8-autopilot
88Package: unity8-autopilot
91Architecture: all
89Architecture: all
92Depends: gir1.2-glib-2.0,
90Depends: gir1.2-glib-2.0,
93− indicators-client (>= ${source:Version}),
94 libautopilot-qt,
91 libautopilot-qt,
95 libqt5test5,
92 libqt5test5,
96 libqt5widgets5,
93 libqt5widgets5,
main.cpp+4−4
@@ -113,7 +113,7 @@ int startShell(int argc, const char** argv, void* server)
113
113
114 // The testability driver is only loaded by QApplication but not by QGuiApplication.
114 // The testability driver is only loaded by QApplication but not by QGuiApplication.
115 // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own.
115 // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own.
116− if (args.contains(QLatin1String("-testability"))) {
116+ if (args.contains(QLatin1String("-testability")) || getenv("QT_LOAD_TESTABILITY")) {
117 QLibrary testLib(QLatin1String("qttestability"));
117 QLibrary testLib(QLatin1String("qttestability"));
118 if (testLib.load()) {
118 if (testLib.load()) {
119 typedef void (*TasInitialize)(void);
119 typedef void (*TasInitialize)(void);
@@ -160,10 +160,10 @@ int startShell(int argc, const char** argv, void* server)
160 prependImportPaths(view->engine(), ::overrideImportPaths());
160 prependImportPaths(view->engine(), ::overrideImportPaths());
161 appendImportPaths(view->engine(), ::fallbackImportPaths());
161 appendImportPaths(view->engine(), ::fallbackImportPaths());
162
162
163− QStringList importPath = view->engine()->importPathList().filter("qt5/imports");
164 if (isUbuntuMirServer) {
163 if (isUbuntuMirServer) {
165− importPath.first().append("/Unity-Mir");
164+ QStringList importPaths = view->engine()->importPathList();
166− view->engine()->addImportPath(importPath.first());
165+ importPaths.replaceInStrings(QRegExp("qt5/imports$"), "qt5/imports/Unity-Mir");
166+ view->engine()->setImportPathList(importPaths);
167 }
167 }
168
168
169 view->setSource(source);
169 view->setSource(source);
plugins/AccountsService/AccountsService.cpp+19
@@ -44,6 +44,7 @@ void AccountsService::setUser(const QString &user)
44
44
45 updateDemoEdges();
45 updateDemoEdges();
46 updateBackgroundFile();
46 updateBackgroundFile();
47+ updateStatsWelcomeScreen();
47}
48}
48
49
49bool AccountsService::demoEdges() const
50bool AccountsService::demoEdges() const
@@ -62,6 +63,11 @@ QString AccountsService::backgroundFile() const
62 return m_backgroundFile;
63 return m_backgroundFile;
63}
64}
64
65
66+bool AccountsService::statsWelcomeScreen() const
67+{
68+ return m_statsWelcomeScreen;
69+}
70+
65void AccountsService::updateDemoEdges()
71void AccountsService::updateDemoEdges()
66{
72{
67 auto demoEdges = m_service->getUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges").toBool();
73 auto demoEdges = m_service->getUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges").toBool();
@@ -80,6 +86,15 @@ void AccountsService::updateBackgroundFile()
80 }
86 }
81}
87}
82
88
89+void AccountsService::updateStatsWelcomeScreen()
90+{
91+ bool statsWelcomeScreen = m_service->getUserProperty(m_user, "com.ubuntu.touch.AccountsService.SecurityPrivacy", "StatsWelcomeScreen").toBool();
92+ if (m_statsWelcomeScreen != statsWelcomeScreen) {
93+ m_statsWelcomeScreen = statsWelcomeScreen;
94+ Q_EMIT statsWelcomeScreenChanged();
95+ }
96+}
97+
83void AccountsService::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
98void AccountsService::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
84{
99{
85 if (m_user != user) {
100 if (m_user != user) {
@@ -90,6 +105,10 @@ void AccountsService::propertiesChanged(const QString &user, const QString &inte
90 if (changed.contains("demo-edges")) {
105 if (changed.contains("demo-edges")) {
91 updateDemoEdges();
106 updateDemoEdges();
92 }
107 }
108+ } else if (interface == "com.ubuntu.touch.AccountsService.SecurityPrivacy") {
109+ if (changed.contains("StatsWelcomeScreen")) {
110+ updateStatsWelcomeScreen();
111+ }
93 }
112 }
94}
113}
95
114
plugins/AccountsService/AccountsService.h+7
@@ -38,6 +38,9 @@ class AccountsService: public QObject
38 Q_PROPERTY (QString backgroundFile
38 Q_PROPERTY (QString backgroundFile
39 READ backgroundFile
39 READ backgroundFile
40 NOTIFY backgroundFileChanged)
40 NOTIFY backgroundFileChanged)
41+ Q_PROPERTY (bool statsWelcomeScreen
42+ READ statsWelcomeScreen
43+ NOTIFY statsWelcomeScreenChanged)
41
44
42public:
45public:
43 explicit AccountsService(QObject *parent = 0);
46 explicit AccountsService(QObject *parent = 0);
@@ -47,11 +50,13 @@ public:
47 bool demoEdges() const;
50 bool demoEdges() const;
48 void setDemoEdges(bool demoEdges);
51 void setDemoEdges(bool demoEdges);
49 QString backgroundFile() const;
52 QString backgroundFile() const;
53+ bool statsWelcomeScreen() const;
50
54
51Q_SIGNALS:
55Q_SIGNALS:
52 void userChanged();
56 void userChanged();
53 void demoEdgesChanged();
57 void demoEdgesChanged();
54 void backgroundFileChanged();
58 void backgroundFileChanged();
59+ void statsWelcomeScreenChanged();
55
60
56private Q_SLOTS:
61private Q_SLOTS:
57 void propertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
62 void propertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
@@ -60,11 +65,13 @@ private Q_SLOTS:
60private:
65private:
61 void updateDemoEdges();
66 void updateDemoEdges();
62 void updateBackgroundFile();
67 void updateBackgroundFile();
68+ void updateStatsWelcomeScreen();
63
69
64 AccountsServiceDBusAdaptor *m_service;
70 AccountsServiceDBusAdaptor *m_service;
65 QString m_user;
71 QString m_user;
66 bool m_demoEdges;
72 bool m_demoEdges;
67 QString m_backgroundFile;
73 QString m_backgroundFile;
74+ bool m_statsWelcomeScreen;
68};
75};
69
76
70#endif
77#endif
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+3
@@ -327,6 +327,9 @@ void ListViewWithPageHeader::setForceNoClip(bool noClip)
327
327
328void ListViewWithPageHeader::positionAtBeginning()
328void ListViewWithPageHeader::positionAtBeginning()
329{
329{
330+ if (m_delegateModel->count() <= 0)
331+ return;
332+
330 qreal headerHeight = (m_headerItem ? m_headerItem->height() : 0);
333 qreal headerHeight = (m_headerItem ? m_headerItem->height() : 0);
331 if (m_firstVisibleIndex != 0) {
334 if (m_firstVisibleIndex != 0) {
332 // TODO This could be optimized by trying to reuse the interesection
335 // TODO This could be optimized by trying to reuse the interesection
plugins/Unity/CMakeLists.txt+1−2
@@ -2,12 +2,11 @@
2include(Plugins)
2include(Plugins)
3
3
4add_subdirectory(Indicators)
4add_subdirectory(Indicators)
5−add_subdirectory(IndicatorsLegacy)
6
5
7# Dependencies
6# Dependencies
8include(FindPkgConfig)
7include(FindPkgConfig)
9pkg_check_modules(QTDEE REQUIRED libdee-qt5>=3.2)
8pkg_check_modules(QTDEE REQUIRED libdee-qt5>=3.2)
10−pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0)
9+pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0>=7.1.1)
11
10
12include_directories(
11include_directories(
13 ${CMAKE_CURRENT_SOURCE_DIR}
12 ${CMAKE_CURRENT_SOURCE_DIR}
plugins/Unity/Indicators/Messaging/qml/QuickReply.qml+1−1
@@ -20,7 +20,7 @@
20
20
21import QtQuick 2.0
21import QtQuick 2.0
22import Ubuntu.Components 0.1
22import Ubuntu.Components 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
23+import Unity.Indicators 0.1 as Indicators
24
24
25Item {
25Item {
26 id: quickReply
26 id: quickReply
plugins/Unity/Indicators/Network/CMakeLists.txt−44
@@ -1,45 +1 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−project(IndicatorsNetworkQml)
5−
6−pkg_check_modules(GLIB glib-2.0>=2.32)
7−pkg_check_modules(LIBNM_GLIB libnm-glib>=0.9.6)
8−pkg_check_modules(LIBNM_UTIL libnm-util>=0.9.6)
9−
10−if(LIBNM_GLIB_FOUND AND LIBNM_UTIL_FOUND AND GLIB_FOUND)
11− set(INDICATORS_NETWORK_SRC
12− networkagent.cpp
13− plugin.cpp
14− secret-agent.c
15− )
16−
17− add_library(IndicatorsNetworkQml MODULE
18− ${INDICATORS_NETWORK_SRC}
19− )
20−
21− qt5_use_modules(IndicatorsNetworkQml Core Qml Widgets)
22−
23− set_target_properties(IndicatorsNetworkQml PROPERTIES COMPILE_FLAGS -fPIC)
24−
25− include_directories(
26− ${CMAKE_CURRENT_SOURCE_DIR}
27− ${GLIB_INCLUDE_DIRS}
28− ${LIBNM_GLIB_INCLUDE_DIRS}
29− ${LIBNM_UTIL_INCLUDE_DIRS}
30− )
31−
32− target_link_libraries(IndicatorsNetworkQml
33− ${GLIB_LIBRARIES}
34− ${LIBNM_GLIB_LIBRARIES}
35− ${LIBNM_UTIL_LIBRARIES}
36− )
37−
38− # export the qmltypes and plugin files
39− export_qmlplugin(Unity.Indicators.Network 0.1 Unity/Indicators/Network TARGETS IndicatorsNetworkQml)
40−
41−else()
42− message(WARNING "Missing glib or libnm dependency for the network plugin, not building")
43−endif()
44−
45add_subdirectory(qml)
1add_subdirectory(qml)
plugins/Unity/Indicators/Network/networkagent.cppdeleted−146
@@ -1,146 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#include "networkagent.h"
22−
23−#include <QVariant>
24−#include <QApplication>
25−#include <QDebug>
26−
27−class NetworkAgentToken
28−{
29−public:
30− NMConnection *connection;
31− NMSettingWirelessSecurity *wisec;
32− guint id;
33− QByteArray keyMgmt;
34−
35− NetworkAgentToken(NMConnection *connection,
36− NMSettingWirelessSecurity *wisec,
37− guint id,
38− QByteArray keyMgmt)
39− : connection(connection),
40− wisec(wisec),
41− id(id),
42− keyMgmt(keyMgmt)
43− {
44− if (connection) {
45− g_object_ref(connection);
46− } else {
47− qWarning() << "invalid connection object";
48− }
49− }
50−
51− ~NetworkAgentToken()
52− {
53− if (connection) {
54− g_object_unref(connection);
55− }
56− }
57−};
58−
59−NetworkAgent::NetworkAgent(QObject *parent)
60− : QObject(parent)
61−{
62− m_agent = unity_settings_secret_agent_new();
63− g_signal_connect(G_OBJECT(m_agent),
64− UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
65− G_CALLBACK(onSecretRequested),
66− this);
67−
68− g_signal_connect(G_OBJECT(m_agent),
69− UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
70− G_CALLBACK(onSecretRequestCancelled),
71− this);
72−}
73−
74−NetworkAgent::~NetworkAgent()
75−{
76− nm_secret_agent_unregister(NM_SECRET_AGENT(m_agent));
77− g_object_unref(m_agent);
78−}
79−
80−void NetworkAgent::authenticate(const QVariant &token, const QString &key)
81−{
82− NetworkAgentToken *pToken = (NetworkAgentToken *) token.value<void *>();
83− if (pToken == NULL) {
84− return;
85− }
86−
87− if ((pToken->keyMgmt == "wpa-none") || (pToken->keyMgmt == "wpa-psk")) {
88− g_object_set(G_OBJECT(pToken->wisec),
89− NM_SETTING_WIRELESS_SECURITY_PSK, qPrintable(key),
90− NULL);
91− } else if (pToken->keyMgmt == "none") {
92− g_object_set(G_OBJECT(pToken->wisec),
93− NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, qPrintable(key),
94− NULL);
95− }
96−
97− GHashTable *settings = nm_connection_to_hash(pToken->connection,
98− NM_SETTING_HASH_FLAG_ALL);
99−
100− unity_settings_secret_agent_provide_secret(m_agent,
101− pToken->id, settings);
102− g_hash_table_unref(settings);
103− delete pToken;
104−}
105−
106−void NetworkAgent::cancel(const QVariant &token)
107−{
108− NetworkAgentToken *pToken = (NetworkAgentToken *) token.value<void *>();
109− if (pToken != NULL) {
110− unity_settings_secret_agent_cancel_request(m_agent, pToken->id);
111− delete pToken;
112− }
113−}
114−
115−void NetworkAgent::onSecretRequested(UnitySettingsSecretAgent* /*agent*/,
116− guint id,
117− NMConnection* connection,
118− const char* /*setting_name*/,
119− const char** /*hints*/,
120− NMSecretAgentGetSecretsFlags /*flags*/,
121− NetworkAgent* self)
122−{
123− NetworkAgentToken *token = new NetworkAgentToken(connection,
124− NULL,
125− id,
126− NULL);
127−
128− token->wisec = nm_connection_get_setting_wireless_security(connection);
129− if (token->wisec) {
130− token->keyMgmt = nm_setting_wireless_security_get_key_mgmt(token->wisec);
131− }
132−
133− QVariant varToken = qVariantFromValue((void *) token);
134− Q_EMIT self->secretRequested(varToken);
135−}
136−
137−void NetworkAgent::onSecretRequestCancelled(UnitySettingsSecretAgent* /*agent*/,
138− guint /*id*/,
139− NMConnection* /*connection*/,
140− const char* /*setting_name*/,
141− const char** /*hints*/,
142− NMSecretAgentGetSecretsFlags /*flags*/,
143− NetworkAgent* /*self*/)
144−{
145− //Do nothing for now
146−}
plugins/Unity/Indicators/Network/networkagent.hdeleted−65
@@ -1,65 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#ifndef NETWORKAGENT_H
22−#define NETWORKAGENT_H
23−
24−#include "secret-agent.h"
25−
26−#include <QObject>
27−
28−class NetworkAgentToken;
29−
30−class NetworkAgent : public QObject
31−{
32− Q_OBJECT
33−public:
34− NetworkAgent(QObject *parent=0);
35− ~NetworkAgent();
36−
37− Q_INVOKABLE void authenticate(const QVariant &token, const QString &key);
38− Q_INVOKABLE void cancel(const QVariant &token);
39−
40−Q_SIGNALS:
41− void secretRequested(const QVariant &token);
42− void secretRequestCancelled();
43−
44−private:
45− UnitySettingsSecretAgent *m_agent;
46−
47− static void onSecretRequested(UnitySettingsSecretAgent *agent,
48− guint id,
49− NMConnection *connection,
50− const char *setting_name,
51− const char **hints,
52− NMSecretAgentGetSecretsFlags flags,
53− NetworkAgent *self);
54−
55− static void onSecretRequestCancelled(UnitySettingsSecretAgent *agent,
56− guint id,
57− NMConnection *connection,
58− const char *setting_name,
59− const char **hints,
60− NMSecretAgentGetSecretsFlags flags,
61− NetworkAgent *self);
62−
63−};
64−
65−#endif
plugins/Unity/Indicators/Network/plugin.hdeleted−32
@@ -1,32 +0,0 @@
1−/*
2− * Copyright (C) 2012 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: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−#ifndef INDICATORS_NETWORK_PLUGIN_H
20−#define INDICATORS_NETWORK_PLUGIN_H
21−
22−#include <QtQml/QQmlExtensionPlugin>
23−
24−class IndicatorsNetworkPlugin : public QQmlExtensionPlugin
25−{
26− Q_OBJECT
27− Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
28−public:
29− void registerTypes(const char *uri);
30−};
31−
32−#endif // INDICATORS_NETWORK_PLUGIN_H
plugins/Unity/Indicators/Network/qml/PasswordPage.qmldeleted−88
@@ -1,88 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−import Unity.Indicators 0.1 as Indicators
24−
25−Page {
26− id: pagePassword
27−
28− property variant agent
29− property variant token
30−
31− anchors.fill: parent
32− title: "Network Authentication"
33−
34− Column {
35− anchors {
36− left: parent.left
37− right: parent.right
38− }
39−
40− Indicators.SectionMenuItem {
41− text: "Authentication"
42− }
43−
44− Indicators.FramedMenuItem {
45− implicitHeight: password.height + units.gu(1)
46−
47− PasswordTextField {
48− id: password
49− anchors {
50− left: parent.left
51− right: parent.right
52− margins: units.gu(3)
53− verticalCenter: parent.verticalCenter
54− }
55− }
56− }
57−
58− Indicators.FramedMenuItem {
59− Row {
60− anchors {
61− right: parent.right
62− verticalCenter: parent.verticalCenter
63− margins: units.gu(3)
64− }
65−
66− spacing: units.gu(1)
67−
68− Button {
69− text: "Cancel"
70− width: units.gu(10)
71− onClicked: {
72− agent.cancel(token);
73− pageStack.pop();
74− }
75− }
76−
77− Button {
78− text: "OK"
79− width: units.gu(10)
80− onClicked: {
81− agent.authenticate(token, password.text);
82− pageStack.pop();
83− }
84− }
85− }
86− }
87− }
88−}
plugins/Unity/Indicators/Network/qml/PasswordTextField.qmldeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−Item {
24− id: textMenu
25−
26− property alias text: textField.text
27−
28− height: contentColumn.height
29−
30− Column {
31− id: contentColumn
32− spacing: units.gu(0.5)
33− anchors {
34− left: parent.left
35− right: parent.right
36− }
37−
38− TextField {
39− id: textField
40−
41− anchors {
42− left: parent.left
43− right: parent.right
44− }
45−
46− placeholderText: "Password"
47− echoMode: showPassword.checked ? TextInput.Normal : TextInput.Password
48− }
49−
50− Row {
51− anchors {
52− left: parent.left
53− right: parent.right
54− }
55−
56− spacing: units.gu(1)
57−
58− CheckBox {
59− id: showPassword
60− }
61−
62− Label {
63− text: "Show password"
64− anchors.verticalCenter: showPassword.verticalCenter
65− }
66− }
67− }
68−}
plugins/Unity/Indicators/Network/qml/qmldir−5
@@ -1,8 +1,3 @@
1module Unity.Indicators.Network
1module Unity.Indicators.Network
2−plugin IndicatorsNetworkQml
3−typeinfo plugin.qmltypes
4
2
5−NetworkPage 0.1 NetworkPage.qml
6AccessPoint 0.1 AccessPoint.qml
3AccessPoint 0.1 AccessPoint.qml
7−PasswordPage 0.1 PasswordPage.qml
8−PasswordTextField 0.1 PasswordTextField.qml
plugins/Unity/Indicators/Network/secret-agent.cdeleted−382
@@ -1,382 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−
22−#include <glib.h>
23−#include <glib-object.h>
24−#include <nm-secret-agent.h>
25−#include "secret-agent.h"
26−
27−#define UNITY_SETTINGS_TYPE_SECRET_AGENT (unity_settings_secret_agent_get_type ())
28−#define UNITY_SETTINGS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgent))
29−#define UNITY_SETTINGS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
30−#define UNITY_SETTINGS_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT))
31−#define UNITY_SETTINGS_IS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT))
32−#define UNITY_SETTINGS_SECRET_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
33−#define UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentPrivate))
34−
35−#define AGENT_ID "com.canonical.settings.network.nm-agent"
36−
37−static gpointer unity_settings_secret_agent_parent_class = NULL;
38−
39−typedef struct _UnitySettingsSecretAgentPrivate UnitySettingsSecretAgentPrivate;
40−
41−struct _UnitySettingsSecretAgentPrivate {
42− GQueue *requests;
43−};
44−
45−typedef struct _SecretRequest {
46− gint id;
47− NMSecretAgent *agent;
48− NMConnection *connection;
49− const char *connection_path;
50− const char *setting_name;
51− const char **hints;
52− NMSecretAgentGetSecretsFlags flags;
53− NMSecretAgentGetSecretsFunc callback;
54− gpointer callback_data;
55−} SecretRequest;
56−
57−GType unity_settings_secret_agent_get_type (void) G_GNUC_CONST;
58−enum {
59− UNITY_SETTINGS_SECRET_AGENT_DUMMY_PROPERTY
60−};
61−
62−enum {
63− SECRET_REQUESTED,
64− REQUEST_CANCELLED,
65− LAST_SIGNAL
66−};
67−
68−static guint signals[LAST_SIGNAL] = { 0 };
69−
70−UnitySettingsSecretAgent* unity_settings_secret_agent_new (void);
71−UnitySettingsSecretAgent* unity_settings_secret_agent_construct (GType object_type);
72−
73−int
74−secret_request_find (SecretRequest *req,
75− guint *id)
76−{
77− if (req->id > *id)
78− return -1;
79−
80− if (req->id < *id)
81− return 1;
82−
83− return 0;
84−}
85−
86−void
87−unity_settings_secret_agent_provide_secret (UnitySettingsSecretAgent *agent,
88− guint request,
89− GHashTable *secrets)
90−{
91− GList *iter;
92− SecretRequest *req;
93− UnitySettingsSecretAgentPrivate *priv = agent->priv;
94−
95− iter = g_queue_find_custom (priv->requests,
96− &request,
97− (GCompareFunc)secret_request_find);
98−
99− if (iter == NULL || iter->data == NULL)
100− {
101− g_warning ("Secret request with id <%d> was not found", (int)request);
102− return;
103− }
104−
105− req = iter->data;
106−
107− req->callback (NM_SECRET_AGENT (agent),
108− req->connection,
109− secrets,
110− NULL,
111− req->callback_data);
112−
113− g_queue_remove_all (priv->requests, req);
114− g_free (req);
115− return;
116−}
117−
118−void
119−free_request (SecretRequest *req)
120−{
121− g_object_unref (req->connection);
122− g_free (req);
123−}
124−
125−void
126−unity_settings_secret_agent_cancel_request (UnitySettingsSecretAgent *agent,
127− guint request)
128−{
129− GList *iter;
130− SecretRequest *req;
131− UnitySettingsSecretAgentPrivate *priv = agent->priv;
132− GError *error;
133−
134− iter = g_queue_find_custom (priv->requests,
135− &request,
136− (GCompareFunc)secret_request_find);
137−
138− if (iter == NULL || iter->data == NULL)
139− {
140− g_warning ("Secret request with id <%d> was not found", (int)request);
141− return;
142− }
143−
144− req = iter->data;
145− error = g_error_new (NM_SECRET_AGENT_ERROR,
146− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
147− "This secret request was canceled by the user.");
148−
149− req->callback (NM_SECRET_AGENT (agent),
150− req->connection,
151− NULL,
152− error,
153− req->callback_data);
154−
155− g_queue_remove_all (priv->requests, req);
156− free_request (req);
157− return;
158−}
159−
160−static void
161−delete_secrets (NMSecretAgent *agent,
162− NMConnection *connection,
163− const char *connection_path,
164− NMSecretAgentDeleteSecretsFunc callback,
165− gpointer callback_data)
166−{
167− g_debug ("delete secrets");
168−}
169−
170−/* If it returns G_MAXUINT it's considered an error */
171−static guint
172−find_available_id (UnitySettingsSecretAgentPrivate *priv)
173−{
174− guint i = 0;
175− guint candidate = 0;
176−
177− if (g_queue_get_length (priv->requests) == G_MAXUINT)
178− return G_MAXUINT;
179−
180− while (i < g_queue_get_length (priv->requests))
181− {
182− SecretRequest *req = (SecretRequest*)g_queue_peek_nth (priv->requests, i);
183−
184− if (req->id == candidate)
185− {
186− candidate++;
187− i = 0;
188− }
189− else
190− {
191− i++;
192− }
193− }
194−
195− return i;
196−}
197−
198−static void
199−get_secrets (NMSecretAgent *agent,
200− NMConnection *connection,
201− const char *connection_path,
202− const char *setting_name,
203− const char **hints,
204− NMSecretAgentGetSecretsFlags flags,
205− NMSecretAgentGetSecretsFunc callback,
206− gpointer callback_data)
207−{
208− guint id;
209− UnitySettingsSecretAgentPrivate *priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (agent);
210− SecretRequest *req = NULL;
211−
212− if (flags == NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE)
213− {
214− GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
215− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
216− "No password found for this connection.");
217− callback (agent, connection, NULL, error, callback_data);
218− g_error_free (error);
219− return;
220− }
221−
222− id = find_available_id (priv);
223− if (id == G_MAXUINT)
224− {
225− GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
226− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
227− "Reached maximum number of requests.");
228− callback (agent, connection, NULL, error, callback_data);
229− g_error_free (error);
230− return;
231− }
232−
233− /* Adding a request */
234− req = (SecretRequest*) g_malloc0 (sizeof (SecretRequest));
235− *req = ((SecretRequest)
236− { id,
237− agent,
238− connection,
239− connection_path,
240− setting_name,
241− hints,
242− flags,
243− callback,
244− callback_data });
245−
246− g_object_ref (connection);
247−
248− g_queue_push_tail (priv->requests, req);
249−
250− g_signal_emit_by_name (agent,
251− UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
252− id,
253− connection,
254− setting_name,
255− hints,
256− flags);
257−}
258−
259−static void
260−save_secrets (NMSecretAgent *agent,
261− NMConnection *connection,
262− const char *connection_path,
263− NMSecretAgentSaveSecretsFunc callback,
264− gpointer callback_data)
265−{
266− g_debug ("save secrets");
267−}
268−
269−static void
270−cancel_get_secrets (NMSecretAgent *agent,
271− const char *connection_path,
272− const char *setting_name)
273−{
274− g_debug ("cancel get secrets");
275−}
276−
277−UnitySettingsSecretAgent*
278−unity_settings_secret_agent_construct (GType object_type)
279−{
280− UnitySettingsSecretAgent * self = NULL;
281− self = (UnitySettingsSecretAgent*) g_object_new (object_type,
282− NM_SECRET_AGENT_IDENTIFIER, AGENT_ID,
283− NULL);
284− return self;
285−}
286−
287−
288−UnitySettingsSecretAgent*
289−unity_settings_secret_agent_new (void)
290−{
291− return unity_settings_secret_agent_construct (UNITY_SETTINGS_TYPE_SECRET_AGENT);
292−}
293−
294−static void
295−destroy_pending_request (gpointer data)
296−{
297− SecretRequest* req = (SecretRequest*)data;
298− /* Reporting the cancellation of all pending requests */
299− g_signal_emit_by_name (req->agent,
300− UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
301− req->id);
302−
303− free_request (req);
304−}
305−
306−static void
307−unity_settings_secret_agent_finalize (GObject *agent)
308−{
309− UnitySettingsSecretAgentPrivate *priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (agent);
310−
311− g_queue_free_full (priv->requests, destroy_pending_request);
312−}
313−
314−static void
315−unity_settings_secret_agent_class_init (UnitySettingsSecretAgentClass *klass)
316−{
317− unity_settings_secret_agent_parent_class = g_type_class_peek_parent (klass);
318− NMSecretAgentClass *parent_class = NM_SECRET_AGENT_CLASS (klass);
319− parent_class->get_secrets = get_secrets;
320− parent_class->save_secrets = save_secrets;
321− parent_class->delete_secrets = delete_secrets;
322− parent_class->cancel_get_secrets = cancel_get_secrets;
323−
324− g_type_class_add_private (klass, sizeof(UnitySettingsSecretAgentPrivate));
325− G_OBJECT_CLASS (klass)->finalize = unity_settings_secret_agent_finalize;
326−
327−
328− signals[SECRET_REQUESTED] = g_signal_new (UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
329− G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
330− G_SIGNAL_RUN_FIRST,
331− G_STRUCT_OFFSET (UnitySettingsSecretAgentClass, secret_requested),
332− NULL, NULL, NULL,
333− G_TYPE_NONE, 5,
334− G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_UINT);
335−
336− signals[REQUEST_CANCELLED] = g_signal_new (UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
337− G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
338− G_SIGNAL_RUN_FIRST,
339− G_STRUCT_OFFSET (UnitySettingsSecretAgentClass, request_cancelled),
340− NULL, NULL, NULL,
341− G_TYPE_NONE, 1,
342− G_TYPE_UINT);
343−}
344−
345−
346−static void
347−unity_settings_secret_agent_instance_init (UnitySettingsSecretAgent *self)
348−{
349− self->priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (self);
350− self->priv->requests = g_queue_new ();
351−}
352−
353−GType
354−unity_settings_secret_agent_get_type (void)
355−{
356− static volatile gsize unity_settings_secret_agent_type_id__volatile = 0;
357− if (g_once_init_enter (&unity_settings_secret_agent_type_id__volatile))
358− {
359− static const GTypeInfo g_define_type_info =
360− {
361− sizeof (UnitySettingsSecretAgentClass),
362− (GBaseInitFunc) NULL,
363− (GBaseFinalizeFunc) NULL,
364− (GClassInitFunc) unity_settings_secret_agent_class_init,
365− (GClassFinalizeFunc) NULL,
366− NULL,
367− sizeof (UnitySettingsSecretAgent),
368− 0,
369− (GInstanceInitFunc) unity_settings_secret_agent_instance_init,
370− NULL
371− };
372− GType unity_settings_secret_agent_type_id;
373− unity_settings_secret_agent_type_id = g_type_register_static (NM_TYPE_SECRET_AGENT,
374− "UnitySettingsSecretAgent",
375− &g_define_type_info,
376− 0);
377− g_once_init_leave (&unity_settings_secret_agent_type_id__volatile,
378− unity_settings_secret_agent_type_id);
379− }
380−
381− return unity_settings_secret_agent_type_id__volatile;
382−}
plugins/Unity/Indicators/Network/secret-agent.hdeleted−102
@@ -1,102 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#ifndef __SECRET_AGENT_H__
22−#define __SECRET_AGENT_H__
23−
24−#include <glib.h>
25−#include <glib-object.h>
26−#include <nm-secret-agent.h>
27−
28−/*
29− * This class is a basic implementation of the NetworkManager SecretAgent base class.
30− *
31− * The purpose of this class is to handle credential requests from the network,
32− * for example, from a WiFi hotspot or a VPN network.
33− *
34− * It queues requests objects (SecretRequest) on a GQueue in the private struct
35− * of the class. And notifies the consumer of the class through the "secret-request"
36− * and the "request-cancelled" signals with the following callback prototypes:
37− *
38− * void (*secret_requested) (UnitySettingsSecretAgent *self,
39− * guint id,
40− * NMConnection *connection,
41− * const char *setting_name,
42− * const char **hints,
43− * NMSecretAgentGetSecretsFlags flags,
44− * gpointer user_data);
45− *
46− * void (*request_cancelled) (UnitySettingsSecretAgent *self,
47− * guint id,
48− * gpointer user_data);
49− *
50− */
51−
52−
53−G_BEGIN_DECLS
54−
55−
56−#define UNITY_SETTINGS_TYPE_SECRET_AGENT (unity_settings_secret_agent_get_type ())
57−#define UNITY_SETTINGS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgent))
58−#define UNITY_SETTINGS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
59−#define UNITY_SETTINGS_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT))
60−#define UNITY_SETTINGS_IS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT))
61−#define UNITY_SETTINGS_SECRET_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
62−
63−#define UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED "secret-requested"
64−#define UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED "request-cancelled"
65−
66−typedef struct _UnitySettingsSecretAgent UnitySettingsSecretAgent;
67−typedef struct _UnitySettingsSecretAgentClass UnitySettingsSecretAgentClass;
68−typedef struct _UnitySettingsSecretAgentPrivate UnitySettingsSecretAgentPrivate;
69−
70−struct _UnitySettingsSecretAgent {
71− NMSecretAgent parent_instance;
72− UnitySettingsSecretAgentPrivate * priv;
73−};
74−
75−struct _UnitySettingsSecretAgentClass {
76− NMSecretAgentClass parent_class;
77−
78− void (*secret_requested) (UnitySettingsSecretAgent *self,
79− guint id,
80− NMConnection *connection,
81− const char *setting_name,
82− const char **hints,
83− NMSecretAgentGetSecretsFlags flags);
84−
85− void (*request_cancelled) (UnitySettingsSecretAgent *self,
86− guint id);
87−};
88−
89−
90−GType unity_settings_secret_agent_get_type (void) G_GNUC_CONST;
91−UnitySettingsSecretAgent* unity_settings_secret_agent_new (void);
92−UnitySettingsSecretAgent* unity_settings_secret_agent_construct (GType object_type);
93−
94−void unity_settings_secret_agent_provide_secret (UnitySettingsSecretAgent *agent,
95− guint request,
96− GHashTable *secrets);
97−void unity_settings_secret_agent_cancel_request (UnitySettingsSecretAgent *agent,
98− guint request);
99−
100−G_END_DECLS
101−
102−#endif
plugins/Unity/Indicators/indicators.h−2
@@ -74,8 +74,6 @@ public:
74 enum Roles {
74 enum Roles {
75 Identifier = 0,
75 Identifier = 0,
76 Position,
76 Position,
77− Title,
78− Description,
79 WidgetSource,
77 WidgetSource,
80 PageSource,
78 PageSource,
81 IndicatorProperties,
79 IndicatorProperties,
plugins/Unity/Indicators/indicatorsmanager.cpp+20−24
@@ -47,34 +47,13 @@ public:
47IndicatorsManager::IndicatorsManager(QObject* parent)
47IndicatorsManager::IndicatorsManager(QObject* parent)
48 : QObject(parent)
48 : QObject(parent)
49 , m_loaded(false)
49 , m_loaded(false)
50− , m_upstart(NULL)
51{
50{
52− auto upstartsession = qgetenv("UPSTART_SESSION");
53− if (!upstartsession.isNull()) {
54− DBusConnection * conn = NULL;
55− conn = dbus_connection_open(upstartsession.constData(), NULL);
56− if (conn != NULL) {
57− m_upstart = nih_dbus_proxy_new(NULL, conn,
58− NULL,
59− DBUS_PATH_UPSTART,
60− NULL, NULL);
61− dbus_connection_unref(conn);
62− }
63− }
64−
65− if (m_upstart != NULL) {
66− m_upstart->auto_start = FALSE;
67− }
68}
51}
69
52
70IndicatorsManager::~IndicatorsManager()
53IndicatorsManager::~IndicatorsManager()
71{
54{
72 unload();
55 unload();
73
56
74− if (m_upstart != NULL) {
75− nih_unref(m_upstart, NULL);
76− m_upstart = NULL;
77− }
78}
57}
79
58
80void IndicatorsManager::load()
59void IndicatorsManager::load()
@@ -235,17 +214,34 @@ void IndicatorsManager::setLoaded(bool loaded)
235 m_loaded = loaded;
214 m_loaded = loaded;
236 Q_EMIT loadedChanged(m_loaded);
215 Q_EMIT loadedChanged(m_loaded);
237
216
238− if (m_upstart != NULL) {
217+ auto upstartsession = qgetenv("UPSTART_SESSION");
218+ NihDBusProxy * upstart = NULL;
219+
220+ if (!upstartsession.isNull()) {
221+ DBusConnection * conn = NULL;
222+ conn = dbus_connection_open(upstartsession.constData(), NULL);
223+ if (conn != NULL) {
224+ upstart = nih_dbus_proxy_new(NULL, conn,
225+ NULL,
226+ DBUS_PATH_UPSTART,
227+ NULL, NULL);
228+ dbus_connection_unref(conn);
229+ }
230+ }
231+
232+ if (upstart != NULL) {
239 int event_sent = 0;
233 int event_sent = 0;
240 if (m_loaded) {
234 if (m_loaded) {
241− event_sent = upstart_emit_event_sync(NULL, m_upstart, "indicator-services-start", NULL, 0);
235+ event_sent = upstart_emit_event_sync(NULL, upstart, "indicator-services-start", NULL, 0);
242 } else {
236 } else {
243− event_sent = upstart_emit_event_sync(NULL, m_upstart, "indicator-services-end", NULL, 0);
237+ event_sent = upstart_emit_event_sync(NULL, upstart, "indicator-services-end", NULL, 0);
244 }
238 }
245
239
246 if (event_sent != 0) {
240 if (event_sent != 0) {
247 qWarning() << "Unable to send indicator event to Upstart";
241 qWarning() << "Unable to send indicator event to Upstart";
248 }
242 }
243+ nih_unref(upstart, NULL);
244+ upstart = NULL;
249 }
245 }
250 }
246 }
251}
247}
plugins/Unity/Indicators/indicatorsmanager.h−1
@@ -71,7 +71,6 @@ private:
71 QHash<QString, IndicatorData*> m_indicatorsData;
71 QHash<QString, IndicatorData*> m_indicatorsData;
72 QSharedPointer<QFileSystemWatcher> m_fsWatcher;
72 QSharedPointer<QFileSystemWatcher> m_fsWatcher;
73 bool m_loaded;
73 bool m_loaded;
74− NihDBusProxy * m_upstart;
75};
74};
76
75
77#endif // INDICATORS_MANAGER_H
76#endif // INDICATORS_MANAGER_H
plugins/Unity/Indicators/indicatorsmodel.cpp+2−55
@@ -201,8 +201,6 @@ QHash<int, QByteArray> IndicatorsModel::roleNames() const
201 {
201 {
202 roles[IndicatorsModelRole::Identifier] = "identifier";
202 roles[IndicatorsModelRole::Identifier] = "identifier";
203 roles[IndicatorsModelRole::Position] = "position";
203 roles[IndicatorsModelRole::Position] = "position";
204− roles[IndicatorsModelRole::Title] = "title";
205− roles[IndicatorsModelRole::Description] = "description";
206 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
204 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
207 roles[IndicatorsModelRole::PageSource] = "pageSource";
205 roles[IndicatorsModelRole::PageSource] = "pageSource";
208 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
206 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
@@ -216,25 +214,6 @@ int IndicatorsModel::columnCount(const QModelIndex &) const
216 return 1;
214 return 1;
217}
215}
218
216
219−/*! \internal */
220−QVariant IndicatorsModel::defaultData(Indicator::Ptr indicator, int role)
221−{
222− switch (role)
223− {
224− case IndicatorsModelRole::Position:
225− return 0;
226− case IndicatorsModelRole::Title:
227− return indicator ? indicator->identifier() : "Unknown";
228− case IndicatorsModelRole::Description:
229− return "";
230− case IndicatorsModelRole::WidgetSource:
231− return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorWidget2.qml";
232− case IndicatorsModelRole::PageSource:
233− return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorPage2.qml";
234− }
235− return QVariant();
236−}
237−
238Q_INVOKABLE QVariant IndicatorsModel::data(int row, int role) const
217Q_INVOKABLE QVariant IndicatorsModel::data(int row, int role) const
239{
218{
240 return data(index(row, 0), role);
219 return data(index(row, 0), role);
@@ -268,27 +247,16 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
268 return QVariant(indicator->indicatorProperties());
247 return QVariant(indicator->indicatorProperties());
269 }
248 }
270 break;
249 break;
271− case IndicatorsModelRole::Title:
272− case IndicatorsModelRole::Description:
273 case IndicatorsModelRole::WidgetSource:
250 case IndicatorsModelRole::WidgetSource:
251+ return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorWidget.qml";
274 case IndicatorsModelRole::PageSource:
252 case IndicatorsModelRole::PageSource:
275− return indicatorData(indicator, role);
253+ return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorPage.qml";
276 default:
254 default:
277 break;
255 break;
278 }
256 }
279 return QVariant();
257 return QVariant();
280}
258}
281
259
282−QVariant IndicatorsModel::indicatorData(const Indicator::Ptr& indicator, int role) const
283−{
284− if (indicator && m_parsed_indicator_data.contains(indicator->identifier()))
285− {
286− QVariantMap data = m_parsed_indicator_data[indicator->identifier()];
287− return data.value(roleNames()[role], QVariant());
288− }
289− return defaultData(indicator, role);
290−}
291−
292/*! \internal */
260/*! \internal */
293QModelIndex IndicatorsModel::parent(const QModelIndex&) const
261QModelIndex IndicatorsModel::parent(const QModelIndex&) const
294{
262{
@@ -300,24 +268,3 @@ int IndicatorsModel::rowCount(const QModelIndex&) const
300{
268{
301 return m_indicators.count();
269 return m_indicators.count();
302}
270}
303−
304−void IndicatorsModel::setIndicatorData(const QVariant& data)
305−{
306− m_indicator_data = data;
307−
308− m_parsed_indicator_data.clear();
309− QMap<QString, QVariant> map = data.toMap();
310− QMapIterator<QString, QVariant> iter(map);
311− while(iter.hasNext())
312− {
313− iter.next();
314− m_parsed_indicator_data[iter.key()] = iter.value().toMap();
315− }
316−
317− Q_EMIT indicatorDataChanged(m_indicator_data);
318−}
319−
320−QVariant IndicatorsModel::indicatorData() const
321−{
322− return m_indicator_data;
323−}
plugins/Unity/Indicators/indicatorsmodel.h−8
@@ -34,7 +34,6 @@ class UNITYINDICATORS_EXPORT IndicatorsModel : public QAbstractListModel
34 Q_OBJECT
34 Q_OBJECT
35 Q_ENUMS(Roles)
35 Q_ENUMS(Roles)
36 Q_PROPERTY(int count READ count NOTIFY countChanged)
36 Q_PROPERTY(int count READ count NOTIFY countChanged)
37− Q_PROPERTY(QVariant indicatorData READ indicatorData WRITE setIndicatorData NOTIFY indicatorDataChanged)
38
37
39public:
38public:
40
39
@@ -53,9 +52,6 @@ public:
53 QModelIndex parent (const QModelIndex &index) const;
52 QModelIndex parent (const QModelIndex &index) const;
54 int rowCount(const QModelIndex &parent = QModelIndex()) const;
53 int rowCount(const QModelIndex &parent = QModelIndex()) const;
55
54
56− void setIndicatorData(const QVariant& data);
57− QVariant indicatorData() const;
58−
59
55
60Q_SIGNALS:
56Q_SIGNALS:
61 void countChanged();
57 void countChanged();
@@ -71,13 +67,9 @@ private:
71 IndicatorsManager *m_manager;
67 IndicatorsManager *m_manager;
72
68
73 QList<Indicator::Ptr> m_indicators;
69 QList<Indicator::Ptr> m_indicators;
74− QVariant m_indicator_data;
75− QMap<QString, QVariantMap> m_parsed_indicator_data;
76
70
77 void notifyDataChanged(QObject *sender, int role);
71 void notifyDataChanged(QObject *sender, int role);
78 int count() const;
72 int count() const;
79− QVariant indicatorData(const Indicator::Ptr& indicator, int role) const;
80− static QVariant defaultData(Indicator::Ptr indicator, int role);
81};
73};
82
74
83#endif // INDICATORSMODEL_H
75#endif // INDICATORSMODEL_H
plugins/Unity/Indicators/qml/IndicatorBase.qml+8−5
@@ -27,13 +27,11 @@ Item {
27 enabled: menuObjectPaths.hasOwnProperty(device)
27 enabled: menuObjectPaths.hasOwnProperty(device)
28
28
29 //const
29 //const
30− property string title
31 property string busName
30 property string busName
32 property string actionsObjectPath
31 property string actionsObjectPath
33 property var menuObjectPaths: undefined
32 property var menuObjectPaths: undefined
34 readonly property string device: "phone"
33 readonly property string device: "phone"
35 property string rootMenuType: "com.canonical.indicator.root"
34 property string rootMenuType: "com.canonical.indicator.root"
36− property bool active: false
37
35
38 property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
36 property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
39
37
@@ -41,8 +39,13 @@ Item {
41
39
42 CachedUnityMenuModel {
40 CachedUnityMenuModel {
43 id: cachedModel
41 id: cachedModel
44− busName: active ? indicatorItem.busName : ""
42+ busName: indicatorItem.busName
45− actionsObjectPath: active ? indicatorItem.actionsObjectPath : ""
43+ actionsObjectPath: indicatorItem.actionsObjectPath
46− menuObjectPath: active ? indicatorItem.deviceMenuObjectPath : ""
44+ menuObjectPath: indicatorItem.deviceMenuObjectPath
45+ }
46+
47+ property var rootActionState: Indicators.RootActionState {
48+ menu: menuModel
49+ onUpdated: indicatorItem.rootActionStateChanged()
47 }
50 }
48}
51}
plugins/Unity/Indicators/qml/IndicatorPage.qml+7−5
@@ -26,12 +26,14 @@ IndicatorBase {
26 id: main
26 id: main
27
27
28 //const
28 //const
29+ property bool contentActive: false
30+ property string title: rootActionState.title
29 property alias emptyText: emptyLabel.text
31 property alias emptyText: emptyLabel.text
30 property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
32 property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
31
33
32 Indicators.UnityMenuModelStack {
34 Indicators.UnityMenuModelStack {
33 id: menuStack
35 id: menuStack
34− head: main.menuModel
36+ head: contentActive ? main.menuModel : null
35 }
37 }
36
38
37 ListView {
39 ListView {
@@ -162,15 +164,15 @@ IndicatorBase {
162 function start()
164 function start()
163 {
165 {
164 reset()
166 reset()
165− if (!active) {
167+ if (!contentActive) {
166− active = true;
168+ contentActive = true;
167 }
169 }
168 }
170 }
169
171
170 function stop()
172 function stop()
171 {
173 {
172− if (active) {
174+ if (contentActive) {
173− active = false;
175+ contentActive = false;
174 }
176 }
175 }
177 }
176
178
plugins/Unity/Indicators/qml/IndicatorWidget.qml−6
@@ -23,12 +23,6 @@ import Unity.Indicators 0.1 as Indicators
23IndicatorBase {
23IndicatorBase {
24 id: indicatorWidget
24 id: indicatorWidget
25
25
26− active: true
27 enabled: false
26 enabled: false
28 property int iconSize: height - units.gu(0.5)
27 property int iconSize: height - units.gu(0.5)
29−
30− property var actionState: Indicators.RootActionState {
31− menu: menuModel
32− onUpdated: indicatorWidget.actionStateChanged()
33− }
34}
28}
plugins/Unity/Indicators/qml/MenuItemFactory.qml+1
@@ -115,6 +115,7 @@ Item {
115 text: menu && menu.label ? menu.label : ""
115 text: menu && menu.label ? menu.label : ""
116 icon: menu ? menu.icon : ""
116 icon: menu ? menu.icon : ""
117 value : menu ? menu.actionState : 0.0
117 value : menu ? menu.actionState : 0.0
118+ enabled: menu ? menu.sensitive : false
118 }
119 }
119 }
120 }
120
121
plugins/Unity/Indicators/qml/SliderMenuItem.qml+1−1
@@ -71,7 +71,7 @@ FramedMenuItem {
71 leftMargin: leftImage.visible ? units.gu(0.5) : 0
71 leftMargin: leftImage.visible ? units.gu(0.5) : 0
72 rightMargin: rightImage.visible ? units.gu(0.5) : 0
72 rightMargin: rightImage.visible ? units.gu(0.5) : 0
73 }
73 }
74− live: false
74+ live: true
75
75
76 Component.onCompleted: {
76 Component.onCompleted: {
77 value = menuItem.value
77 value = menuItem.value
plugins/Unity/Indicators/rootactionstate.cpp+7−1
@@ -102,12 +102,18 @@ void RootActionState::updateActionState()
102 Q_EMIT updated();
102 Q_EMIT updated();
103}
103}
104
104
105−
106bool RootActionState::isValid() const
105bool RootActionState::isValid() const
107{
106{
108 return m_menu && m_menu->rowCount() > 0;
107 return m_menu && m_menu->rowCount() > 0;
109}
108}
110
109
110+QString RootActionState::title() const
111+{
112+ if (!isValid()) return QString();
113+
114+ return m_cachedState.value("title", QVariant::fromValue(QString())).toString();
115+}
116+
111QString RootActionState::leftLabel() const
117QString RootActionState::leftLabel() const
112{
118{
113 if (!isValid()) return QString();
119 if (!isValid()) return QString();
plugins/Unity/Indicators/rootactionstate.h+3
@@ -32,6 +32,7 @@ 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 title READ title NOTIFY titleChanged)
35 Q_PROPERTY(QString leftLabel READ leftLabel NOTIFY leftLabelChanged)
36 Q_PROPERTY(QString leftLabel READ leftLabel NOTIFY leftLabelChanged)
36 Q_PROPERTY(QString rightLabel READ rightLabel NOTIFY rightLabelChanged)
37 Q_PROPERTY(QString rightLabel READ rightLabel NOTIFY rightLabelChanged)
37 Q_PROPERTY(QStringList icons READ icons NOTIFY iconsChanged)
38 Q_PROPERTY(QStringList icons READ icons NOTIFY iconsChanged)
@@ -48,6 +49,7 @@ public:
48 void setIndex(int index);
49 void setIndex(int index);
49
50
50 bool isValid() const;
51 bool isValid() const;
52+ QString title() const;
51 QString leftLabel() const;
53 QString leftLabel() const;
52 QString rightLabel() const;
54 QString rightLabel() const;
53 QStringList icons() const;
55 QStringList icons() const;
@@ -64,6 +66,7 @@ Q_SIGNALS:
64 void indexChanged();
66 void indexChanged();
65
67
66 void validChanged();
68 void validChanged();
69+ void titleChanged();
67 void leftLabelChanged();
70 void leftLabelChanged();
68 void rightLabelChanged();
71 void rightLabelChanged();
69 void iconsChanged();
72 void iconsChanged();
plugins/Unity/Indicators/visibleindicatorsmodel.cpp−2
@@ -33,8 +33,6 @@ QHash<int, QByteArray> VisibleIndicatorsModel::roleNames() const
33 {
33 {
34 roles[IndicatorsModelRole::Identifier] = "identifier";
34 roles[IndicatorsModelRole::Identifier] = "identifier";
35 roles[IndicatorsModelRole::Position] = "position";
35 roles[IndicatorsModelRole::Position] = "position";
36− roles[IndicatorsModelRole::Title] = "title";
37− roles[IndicatorsModelRole::Description] = "description";
38 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
36 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
39 roles[IndicatorsModelRole::PageSource] = "pageSource";
37 roles[IndicatorsModelRole::PageSource] = "pageSource";
40 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
38 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
plugins/Unity/IndicatorsLegacy/CMakeLists.txtdeleted−48
@@ -1,48 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−project(IndicatorsLegacyQml)
5−
6−pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
7−find_package(Qt5Core REQUIRED)
8−find_package(Qt5Quick REQUIRED)
9−
10−add_subdirectory(qml)
11−add_subdirectory(Network)
12−
13−include_directories(
14− ${CMAKE_CURRENT_SOURCE_DIR}
15− ${CMAKE_CURRENT_BINARY_DIR}
16− ${QMENUMODEL_INCLUDE_DIRS}
17− ${CMAKE_SOURCE_DIR}/plugins/Unity/Indicators
18−)
19−
20−set(IndicatorsLegacyQML_SOURCES
21− ${CMAKE_SOURCE_DIR}/plugins/Unity/Indicators/indicators.h
22− flatmenuproxymodel.cpp
23− modelprinter.cpp
24− plugin.cpp
25−)
26−add_definitions(-DUNITYINDICATORS_LIBRARY)
27−
28−set(IndicatorsLegacyQML_RESOURCES
29− resources/indicators.qrc
30−)
31−
32−qt5_add_resources(IndicatorsLegacyQML_RESOURCES_RCC
33− ${IndicatorsLegacyQML_RESOURCES}
34−)
35−
36−add_library(IndicatorsLegacyQml SHARED
37− ${IndicatorsLegacyQML_RESOURCES_RCC}
38− ${IndicatorsLegacyQML_SOURCES}
39−)
40−
41−target_link_libraries(IndicatorsLegacyQml
42− ${QMENUMODEL_LDFLAGS}
43−)
44−
45−qt5_use_modules(IndicatorsLegacyQml Core Qml Quick)
46−
47−# export the qmltypes and plugin files
48−export_qmlplugin(Unity.IndicatorsLegacy 0.1 Unity/IndicatorsLegacy TARGETS IndicatorsLegacyQml)
plugins/Unity/IndicatorsLegacy/Network/CMakeLists.txtdeleted−45
@@ -1,45 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−project(IndicatorsLegacyNetworkQml)
5−
6−pkg_check_modules(GLIB glib-2.0>=2.32)
7−pkg_check_modules(LIBNM_GLIB libnm-glib>=0.9.6)
8−pkg_check_modules(LIBNM_UTIL libnm-util>=0.9.6)
9−
10−if(LIBNM_GLIB_FOUND AND LIBNM_UTIL_FOUND AND GLIB_FOUND)
11− set(INDICATORS_LEGACY_NETWORK_SRC
12− networkagent.cpp
13− plugin.cpp
14− secret-agent.c
15− )
16−
17− add_library(IndicatorsLegacyNetworkQml MODULE
18− ${INDICATORS_LEGACY_NETWORK_SRC}
19− )
20−
21− qt5_use_modules(IndicatorsLegacyNetworkQml Core Qml Widgets)
22−
23− set_target_properties(IndicatorsLegacyNetworkQml PROPERTIES COMPILE_FLAGS -fPIC)
24−
25− include_directories(
26− ${CMAKE_CURRENT_SOURCE_DIR}
27− ${GLIB_INCLUDE_DIRS}
28− ${LIBNM_GLIB_INCLUDE_DIRS}
29− ${LIBNM_UTIL_INCLUDE_DIRS}
30− )
31−
32− target_link_libraries(IndicatorsLegacyNetworkQml
33− ${GLIB_LIBRARIES}
34− ${LIBNM_GLIB_LIBRARIES}
35− ${LIBNM_UTIL_LIBRARIES}
36− )
37−
38− # export the qmltypes and plugin files
39− export_qmlplugin(Unity.IndicatorsLegacy.Network 0.1 Unity/IndicatorsLegacy/Network TARGETS IndicatorsLegacyNetworkQml)
40−
41−else()
42− message(WARNING "Missing glib or libnm dependency for the network plugin, not building")
43−endif()
44−
45−add_subdirectory(qml)
plugins/Unity/IndicatorsLegacy/Network/networkagent.cppdeleted−146
@@ -1,146 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#include "networkagent.h"
22−
23−#include <QVariant>
24−#include <QApplication>
25−#include <QDebug>
26−
27−class NetworkAgentToken
28−{
29−public:
30− NMConnection *connection;
31− NMSettingWirelessSecurity *wisec;
32− guint id;
33− QByteArray keyMgmt;
34−
35− NetworkAgentToken(NMConnection *connection,
36− NMSettingWirelessSecurity *wisec,
37− guint id,
38− QByteArray keyMgmt)
39− : connection(connection),
40− wisec(wisec),
41− id(id),
42− keyMgmt(keyMgmt)
43− {
44− if (connection) {
45− g_object_ref(connection);
46− } else {
47− qWarning() << "invalid connection object";
48− }
49− }
50−
51− ~NetworkAgentToken()
52− {
53− if (connection) {
54− g_object_unref(connection);
55− }
56− }
57−};
58−
59−NetworkAgent::NetworkAgent(QObject *parent)
60− : QObject(parent)
61−{
62− m_agent = unity_settings_secret_agent_new();
63− g_signal_connect(G_OBJECT(m_agent),
64− UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
65− G_CALLBACK(onSecretRequested),
66− this);
67−
68− g_signal_connect(G_OBJECT(m_agent),
69− UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
70− G_CALLBACK(onSecretRequestCancelled),
71− this);
72−}
73−
74−NetworkAgent::~NetworkAgent()
75−{
76− nm_secret_agent_unregister(NM_SECRET_AGENT(m_agent));
77− g_object_unref(m_agent);
78−}
79−
80−void NetworkAgent::authenticate(const QVariant &token, const QString &key)
81−{
82− NetworkAgentToken *pToken = (NetworkAgentToken *) token.value<void *>();
83− if (pToken == NULL) {
84− return;
85− }
86−
87− if ((pToken->keyMgmt == "wpa-none") || (pToken->keyMgmt == "wpa-psk")) {
88− g_object_set(G_OBJECT(pToken->wisec),
89− NM_SETTING_WIRELESS_SECURITY_PSK, qPrintable(key),
90− NULL);
91− } else if (pToken->keyMgmt == "none") {
92− g_object_set(G_OBJECT(pToken->wisec),
93− NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, qPrintable(key),
94− NULL);
95− }
96−
97− GHashTable *settings = nm_connection_to_hash(pToken->connection,
98− NM_SETTING_HASH_FLAG_ALL);
99−
100− unity_settings_secret_agent_provide_secret(m_agent,
101− pToken->id, settings);
102− g_hash_table_unref(settings);
103− delete pToken;
104−}
105−
106−void NetworkAgent::cancel(const QVariant &token)
107−{
108− NetworkAgentToken *pToken = (NetworkAgentToken *) token.value<void *>();
109− if (pToken != NULL) {
110− unity_settings_secret_agent_cancel_request(m_agent, pToken->id);
111− delete pToken;
112− }
113−}
114−
115−void NetworkAgent::onSecretRequested(UnitySettingsSecretAgent* /*agent*/,
116− guint id,
117− NMConnection* connection,
118− const char* /*setting_name*/,
119− const char** /*hints*/,
120− NMSecretAgentGetSecretsFlags /*flags*/,
121− NetworkAgent* self)
122−{
123− NetworkAgentToken *token = new NetworkAgentToken(connection,
124− NULL,
125− id,
126− NULL);
127−
128− token->wisec = nm_connection_get_setting_wireless_security(connection);
129− if (token->wisec) {
130− token->keyMgmt = nm_setting_wireless_security_get_key_mgmt(token->wisec);
131− }
132−
133− QVariant varToken = qVariantFromValue((void *) token);
134− Q_EMIT self->secretRequested(varToken);
135−}
136−
137−void NetworkAgent::onSecretRequestCancelled(UnitySettingsSecretAgent* /*agent*/,
138− guint /*id*/,
139− NMConnection* /*connection*/,
140− const char* /*setting_name*/,
141− const char** /*hints*/,
142− NMSecretAgentGetSecretsFlags /*flags*/,
143− NetworkAgent* /*self*/)
144−{
145− //Do nothing for now
146−}
plugins/Unity/IndicatorsLegacy/Network/networkagent.hdeleted−65
@@ -1,65 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#ifndef NETWORKAGENT_H
22−#define NETWORKAGENT_H
23−
24−#include "secret-agent.h"
25−
26−#include <QObject>
27−
28−class NetworkAgentToken;
29−
30−class NetworkAgent : public QObject
31−{
32− Q_OBJECT
33−public:
34− NetworkAgent(QObject *parent=0);
35− ~NetworkAgent();
36−
37− Q_INVOKABLE void authenticate(const QVariant &token, const QString &key);
38− Q_INVOKABLE void cancel(const QVariant &token);
39−
40−Q_SIGNALS:
41− void secretRequested(const QVariant &token);
42− void secretRequestCancelled();
43−
44−private:
45− UnitySettingsSecretAgent *m_agent;
46−
47− static void onSecretRequested(UnitySettingsSecretAgent *agent,
48− guint id,
49− NMConnection *connection,
50− const char *setting_name,
51− const char **hints,
52− NMSecretAgentGetSecretsFlags flags,
53− NetworkAgent *self);
54−
55− static void onSecretRequestCancelled(UnitySettingsSecretAgent *agent,
56− guint id,
57− NMConnection *connection,
58− const char *setting_name,
59− const char **hints,
60− NMSecretAgentGetSecretsFlags flags,
61− NetworkAgent *self);
62−
63−};
64−
65−#endif
plugins/Unity/IndicatorsLegacy/Network/plugin.cppdeleted−31
@@ -1,31 +0,0 @@
1−/*
2− * Copyright (C) 2012 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: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−// Qt
20−#include <QtQml/qqml.h>
21−
22−// self
23−#include "plugin.h"
24−
25−// local
26−#include "networkagent.h"
27−
28−void IndicatorsNetworkPlugin::registerTypes(const char *uri)
29−{
30− qmlRegisterType<NetworkAgent>(uri, 0, 1, "NetworkAgent");
31−}
plugins/Unity/IndicatorsLegacy/Network/plugin.hdeleted−32
@@ -1,32 +0,0 @@
1−/*
2− * Copyright (C) 2012 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: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−#ifndef INDICATORS_NETWORK_PLUGIN_H
20−#define INDICATORS_NETWORK_PLUGIN_H
21−
22−#include <QtQml/QQmlExtensionPlugin>
23−
24−class IndicatorsNetworkPlugin : public QQmlExtensionPlugin
25−{
26− Q_OBJECT
27− Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
28−public:
29− void registerTypes(const char *uri);
30−};
31−
32−#endif // INDICATORS_NETWORK_PLUGIN_H
plugins/Unity/IndicatorsLegacy/Network/qml/AccessPoint.qmldeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−import Unity.IndicatorsLegacy 0.1 as Indicators
24−
25−Indicators.MenuItem {
26− id: accessPoint
27− property variant actionWifiApStrength : menu && actionGroup ? actionGroup.action(menu.extra.canonical_wifi_ap_strength_action) : null
28− property variant wifiApStrength : actionWifiApStrength && actionWifiApStrength.valid ? actionWifiApStrength.state : "0"
29−
30− function getNetworkIcon(data) {
31− var imageName = "nm-signal-100"
32− var signalStrength = parseInt(wifiApStrength)
33−
34− if (data.extra.canonical_wifi_ap_is_adhoc) {
35− imageName = "nm-adhoc";
36− } else if (signalStrength == 0) {
37− imageName = "nm-signal-00";
38− } else if (signalStrength <= 25) {
39− imageName = "nm-signal-25";
40− } else if (signalStrength <= 50) {
41− imageName = "nm-signal-50";
42− } else if (signalStrength <= 75) {
43− imageName = "nm-signal-75";
44− }
45−
46− if (data.extra.canonical_wifi_ap_is_secure) {
47− imageName += "-secure";
48− }
49−
50− return "image://theme/" + imageName;
51− }
52−
53− icon: menu && wifiApStrength ? getNetworkIcon(menu) : "image://theme/wifi-none"
54− iconFrame: false
55− control: CheckBox {
56− id: checkBoxActive
57− height: units.gu(4)
58− width: units.gu(4)
59− anchors.centerIn: parent
60− }
61−
62− Indicators.MenuActionBinding {
63− actionGroup: accessPoint.actionGroup
64− action: menu ? menu.action : ""
65− target: checkBoxActive
66− property: "checked"
67− }
68−}
plugins/Unity/IndicatorsLegacy/Network/qml/CMakeLists.txtdeleted−5
@@ -1,5 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−# export the qmldir, *.qml files.
5−export_qmlfiles(Unity.IndicatorsLegacy.Network Unity/IndicatorsLegacy/Network)
plugins/Unity/IndicatorsLegacy/Network/qml/PasswordPage.qmldeleted−88
@@ -1,88 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−import Unity.IndicatorsLegacy 0.1 as Indicators
24−
25−Page {
26− id: pagePassword
27−
28− property variant agent
29− property variant token
30−
31− anchors.fill: parent
32− title: "Network Authentication"
33−
34− Column {
35− anchors {
36− left: parent.left
37− right: parent.right
38− }
39−
40− Indicators.SectionMenuItem {
41− label: "Authentication"
42− }
43−
44− Indicators.MenuItem {
45− implicitHeight: password.height + units.gu(1)
46−
47− PasswordTextField {
48− id: password
49− anchors {
50− left: parent.left
51− right: parent.right
52− margins: units.gu(3)
53− verticalCenter: parent.verticalCenter
54− }
55− }
56− }
57−
58− Indicators.MenuItem {
59− Row {
60− anchors {
61− right: parent.right
62− verticalCenter: parent.verticalCenter
63− margins: units.gu(3)
64− }
65−
66− spacing: units.gu(1)
67−
68− Button {
69− text: "Cancel"
70− width: units.gu(10)
71− onClicked: {
72− agent.cancel(token);
73− pageStack.pop();
74− }
75− }
76−
77− Button {
78− text: "OK"
79− width: units.gu(10)
80− onClicked: {
81− agent.authenticate(token, password.text);
82− pageStack.pop();
83− }
84− }
85− }
86− }
87− }
88−}
plugins/Unity/IndicatorsLegacy/Network/qml/PasswordTextField.qmldeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−Item {
24− id: textMenu
25−
26− property alias text: textField.text
27−
28− height: contentColumn.height
29−
30− Column {
31− id: contentColumn
32− spacing: units.gu(0.5)
33− anchors {
34− left: parent.left
35− right: parent.right
36− }
37−
38− TextField {
39− id: textField
40−
41− anchors {
42− left: parent.left
43− right: parent.right
44− }
45−
46− placeholderText: "Password"
47− echoMode: showPassword.checked ? TextInput.Normal : TextInput.Password
48− }
49−
50− Row {
51− anchors {
52− left: parent.left
53− right: parent.right
54− }
55−
56− spacing: units.gu(1)
57−
58− CheckBox {
59− id: showPassword
60− }
61−
62− Label {
63− text: "Show password"
64− anchors.verticalCenter: showPassword.verticalCenter
65− }
66− }
67− }
68−}
plugins/Unity/IndicatorsLegacy/Network/qml/WifiSection.qmldeleted−34
@@ -1,34 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
23−
24−Indicators.SectionMenuItem {
25− id: wifiSectionMenu
26−
27− Indicators.MenuAction {
28− id: busyAction
29− actionGroup: wifiSectionMenu.actionGroup
30− action: menu ? menu.extra.canonical_busy_action : ""
31− }
32−
33− busy: busyAction.valid ? busyAction.state : false
34−}
plugins/Unity/IndicatorsLegacy/Network/qml/qmldirdeleted−9
@@ -1,9 +0,0 @@
1−module Unity.IndicatorsLegacy.Network
2−plugin IndicatorsLegacyNetworkQml
3−typeinfo plugin.qmltypes
4−
5−NetworkPage 0.1 NetworkPage.qml
6−AccessPoint 0.1 AccessPoint.qml
7−PasswordPage 0.1 PasswordPage.qml
8−PasswordTextField 0.1 PasswordTextField.qml
9−WifiSection 0.1 WifiSection.qml
plugins/Unity/IndicatorsLegacy/Network/secret-agent.cdeleted−382
@@ -1,382 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−
22−#include <glib.h>
23−#include <glib-object.h>
24−#include <nm-secret-agent.h>
25−#include "secret-agent.h"
26−
27−#define UNITY_SETTINGS_TYPE_SECRET_AGENT (unity_settings_secret_agent_get_type ())
28−#define UNITY_SETTINGS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgent))
29−#define UNITY_SETTINGS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
30−#define UNITY_SETTINGS_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT))
31−#define UNITY_SETTINGS_IS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT))
32−#define UNITY_SETTINGS_SECRET_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
33−#define UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentPrivate))
34−
35−#define AGENT_ID "com.canonical.settings.network.nm-agent"
36−
37−static gpointer unity_settings_secret_agent_parent_class = NULL;
38−
39−typedef struct _UnitySettingsSecretAgentPrivate UnitySettingsSecretAgentPrivate;
40−
41−struct _UnitySettingsSecretAgentPrivate {
42− GQueue *requests;
43−};
44−
45−typedef struct _SecretRequest {
46− gint id;
47− NMSecretAgent *agent;
48− NMConnection *connection;
49− const char *connection_path;
50− const char *setting_name;
51− const char **hints;
52− NMSecretAgentGetSecretsFlags flags;
53− NMSecretAgentGetSecretsFunc callback;
54− gpointer callback_data;
55−} SecretRequest;
56−
57−GType unity_settings_secret_agent_get_type (void) G_GNUC_CONST;
58−enum {
59− UNITY_SETTINGS_SECRET_AGENT_DUMMY_PROPERTY
60−};
61−
62−enum {
63− SECRET_REQUESTED,
64− REQUEST_CANCELLED,
65− LAST_SIGNAL
66−};
67−
68−static guint signals[LAST_SIGNAL] = { 0 };
69−
70−UnitySettingsSecretAgent* unity_settings_secret_agent_new (void);
71−UnitySettingsSecretAgent* unity_settings_secret_agent_construct (GType object_type);
72−
73−int
74−secret_request_find (SecretRequest *req,
75− guint *id)
76−{
77− if (req->id > *id)
78− return -1;
79−
80− if (req->id < *id)
81− return 1;
82−
83− return 0;
84−}
85−
86−void
87−unity_settings_secret_agent_provide_secret (UnitySettingsSecretAgent *agent,
88− guint request,
89− GHashTable *secrets)
90−{
91− GList *iter;
92− SecretRequest *req;
93− UnitySettingsSecretAgentPrivate *priv = agent->priv;
94−
95− iter = g_queue_find_custom (priv->requests,
96− &request,
97− (GCompareFunc)secret_request_find);
98−
99− if (iter == NULL || iter->data == NULL)
100− {
101− g_warning ("Secret request with id <%d> was not found", (int)request);
102− return;
103− }
104−
105− req = iter->data;
106−
107− req->callback (NM_SECRET_AGENT (agent),
108− req->connection,
109− secrets,
110− NULL,
111− req->callback_data);
112−
113− g_queue_remove_all (priv->requests, req);
114− g_free (req);
115− return;
116−}
117−
118−void
119−free_request (SecretRequest *req)
120−{
121− g_object_unref (req->connection);
122− g_free (req);
123−}
124−
125−void
126−unity_settings_secret_agent_cancel_request (UnitySettingsSecretAgent *agent,
127− guint request)
128−{
129− GList *iter;
130− SecretRequest *req;
131− UnitySettingsSecretAgentPrivate *priv = agent->priv;
132− GError *error;
133−
134− iter = g_queue_find_custom (priv->requests,
135− &request,
136− (GCompareFunc)secret_request_find);
137−
138− if (iter == NULL || iter->data == NULL)
139− {
140− g_warning ("Secret request with id <%d> was not found", (int)request);
141− return;
142− }
143−
144− req = iter->data;
145− error = g_error_new (NM_SECRET_AGENT_ERROR,
146− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
147− "This secret request was canceled by the user.");
148−
149− req->callback (NM_SECRET_AGENT (agent),
150− req->connection,
151− NULL,
152− error,
153− req->callback_data);
154−
155− g_queue_remove_all (priv->requests, req);
156− free_request (req);
157− return;
158−}
159−
160−static void
161−delete_secrets (NMSecretAgent *agent,
162− NMConnection *connection,
163− const char *connection_path,
164− NMSecretAgentDeleteSecretsFunc callback,
165− gpointer callback_data)
166−{
167− g_debug ("delete secrets");
168−}
169−
170−/* If it returns G_MAXUINT it's considered an error */
171−static guint
172−find_available_id (UnitySettingsSecretAgentPrivate *priv)
173−{
174− guint i = 0;
175− guint candidate = 0;
176−
177− if (g_queue_get_length (priv->requests) == G_MAXUINT)
178− return G_MAXUINT;
179−
180− while (i < g_queue_get_length (priv->requests))
181− {
182− SecretRequest *req = (SecretRequest*)g_queue_peek_nth (priv->requests, i);
183−
184− if (req->id == candidate)
185− {
186− candidate++;
187− i = 0;
188− }
189− else
190− {
191− i++;
192− }
193− }
194−
195− return i;
196−}
197−
198−static void
199−get_secrets (NMSecretAgent *agent,
200− NMConnection *connection,
201− const char *connection_path,
202− const char *setting_name,
203− const char **hints,
204− NMSecretAgentGetSecretsFlags flags,
205− NMSecretAgentGetSecretsFunc callback,
206− gpointer callback_data)
207−{
208− guint id;
209− UnitySettingsSecretAgentPrivate *priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (agent);
210− SecretRequest *req = NULL;
211−
212− if (flags == NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE)
213− {
214− GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
215− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
216− "No password found for this connection.");
217− callback (agent, connection, NULL, error, callback_data);
218− g_error_free (error);
219− return;
220− }
221−
222− id = find_available_id (priv);
223− if (id == G_MAXUINT)
224− {
225− GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
226− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
227− "Reached maximum number of requests.");
228− callback (agent, connection, NULL, error, callback_data);
229− g_error_free (error);
230− return;
231− }
232−
233− /* Adding a request */
234− req = (SecretRequest*) g_malloc0 (sizeof (SecretRequest));
235− *req = ((SecretRequest)
236− { id,
237− agent,
238− connection,
239− connection_path,
240− setting_name,
241− hints,
242− flags,
243− callback,
244− callback_data });
245−
246− g_object_ref (connection);
247−
248− g_queue_push_tail (priv->requests, req);
249−
250− g_signal_emit_by_name (agent,
251− UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
252− id,
253− connection,
254− setting_name,
255− hints,
256− flags);
257−}
258−
259−static void
260−save_secrets (NMSecretAgent *agent,
261− NMConnection *connection,
262− const char *connection_path,
263− NMSecretAgentSaveSecretsFunc callback,
264− gpointer callback_data)
265−{
266− g_debug ("save secrets");
267−}
268−
269−static void
270−cancel_get_secrets (NMSecretAgent *agent,
271− const char *connection_path,
272− const char *setting_name)
273−{
274− g_debug ("cancel get secrets");
275−}
276−
277−UnitySettingsSecretAgent*
278−unity_settings_secret_agent_construct (GType object_type)
279−{
280− UnitySettingsSecretAgent * self = NULL;
281− self = (UnitySettingsSecretAgent*) g_object_new (object_type,
282− NM_SECRET_AGENT_IDENTIFIER, AGENT_ID,
283− NULL);
284− return self;
285−}
286−
287−
288−UnitySettingsSecretAgent*
289−unity_settings_secret_agent_new (void)
290−{
291− return unity_settings_secret_agent_construct (UNITY_SETTINGS_TYPE_SECRET_AGENT);
292−}
293−
294−static void
295−destroy_pending_request (gpointer data)
296−{
297− SecretRequest* req = (SecretRequest*)data;
298− /* Reporting the cancellation of all pending requests */
299− g_signal_emit_by_name (req->agent,
300− UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
301− req->id);
302−
303− free_request (req);
304−}
305−
306−static void
307−unity_settings_secret_agent_finalize (GObject *agent)
308−{
309− UnitySettingsSecretAgentPrivate *priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (agent);
310−
311− g_queue_free_full (priv->requests, destroy_pending_request);
312−}
313−
314−static void
315−unity_settings_secret_agent_class_init (UnitySettingsSecretAgentClass *klass)
316−{
317− unity_settings_secret_agent_parent_class = g_type_class_peek_parent (klass);
318− NMSecretAgentClass *parent_class = NM_SECRET_AGENT_CLASS (klass);
319− parent_class->get_secrets = get_secrets;
320− parent_class->save_secrets = save_secrets;
321− parent_class->delete_secrets = delete_secrets;
322− parent_class->cancel_get_secrets = cancel_get_secrets;
323−
324− g_type_class_add_private (klass, sizeof(UnitySettingsSecretAgentPrivate));
325− G_OBJECT_CLASS (klass)->finalize = unity_settings_secret_agent_finalize;
326−
327−
328− signals[SECRET_REQUESTED] = g_signal_new (UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
329− G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
330− G_SIGNAL_RUN_FIRST,
331− G_STRUCT_OFFSET (UnitySettingsSecretAgentClass, secret_requested),
332− NULL, NULL, NULL,
333− G_TYPE_NONE, 5,
334− G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_UINT);
335−
336− signals[REQUEST_CANCELLED] = g_signal_new (UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
337− G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
338− G_SIGNAL_RUN_FIRST,
339− G_STRUCT_OFFSET (UnitySettingsSecretAgentClass, request_cancelled),
340− NULL, NULL, NULL,
341− G_TYPE_NONE, 1,
342− G_TYPE_UINT);
343−}
344−
345−
346−static void
347−unity_settings_secret_agent_instance_init (UnitySettingsSecretAgent *self)
348−{
349− self->priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (self);
350− self->priv->requests = g_queue_new ();
351−}
352−
353−GType
354−unity_settings_secret_agent_get_type (void)
355−{
356− static volatile gsize unity_settings_secret_agent_type_id__volatile = 0;
357− if (g_once_init_enter (&unity_settings_secret_agent_type_id__volatile))
358− {
359− static const GTypeInfo g_define_type_info =
360− {
361− sizeof (UnitySettingsSecretAgentClass),
362− (GBaseInitFunc) NULL,
363− (GBaseFinalizeFunc) NULL,
364− (GClassInitFunc) unity_settings_secret_agent_class_init,
365− (GClassFinalizeFunc) NULL,
366− NULL,
367− sizeof (UnitySettingsSecretAgent),
368− 0,
369− (GInstanceInitFunc) unity_settings_secret_agent_instance_init,
370− NULL
371− };
372− GType unity_settings_secret_agent_type_id;
373− unity_settings_secret_agent_type_id = g_type_register_static (NM_TYPE_SECRET_AGENT,
374− "UnitySettingsSecretAgent",
375− &g_define_type_info,
376− 0);
377− g_once_init_leave (&unity_settings_secret_agent_type_id__volatile,
378− unity_settings_secret_agent_type_id);
379− }
380−
381− return unity_settings_secret_agent_type_id__volatile;
382−}
plugins/Unity/IndicatorsLegacy/Network/secret-agent.hdeleted−102
@@ -1,102 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#ifndef __SECRET_AGENT_H__
22−#define __SECRET_AGENT_H__
23−
24−#include <glib.h>
25−#include <glib-object.h>
26−#include <nm-secret-agent.h>
27−
28−/*
29− * This class is a basic implementation of the NetworkManager SecretAgent base class.
30− *
31− * The purpose of this class is to handle credential requests from the network,
32− * for example, from a WiFi hotspot or a VPN network.
33− *
34− * It queues requests objects (SecretRequest) on a GQueue in the private struct
35− * of the class. And notifies the consumer of the class through the "secret-request"
36− * and the "request-cancelled" signals with the following callback prototypes:
37− *
38− * void (*secret_requested) (UnitySettingsSecretAgent *self,
39− * guint id,
40− * NMConnection *connection,
41− * const char *setting_name,
42− * const char **hints,
43− * NMSecretAgentGetSecretsFlags flags,
44− * gpointer user_data);
45− *
46− * void (*request_cancelled) (UnitySettingsSecretAgent *self,
47− * guint id,
48− * gpointer user_data);
49− *
50− */
51−
52−
53−G_BEGIN_DECLS
54−
55−
56−#define UNITY_SETTINGS_TYPE_SECRET_AGENT (unity_settings_secret_agent_get_type ())
57−#define UNITY_SETTINGS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgent))
58−#define UNITY_SETTINGS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
59−#define UNITY_SETTINGS_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT))
60−#define UNITY_SETTINGS_IS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT))
61−#define UNITY_SETTINGS_SECRET_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
62−
63−#define UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED "secret-requested"
64−#define UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED "request-cancelled"
65−
66−typedef struct _UnitySettingsSecretAgent UnitySettingsSecretAgent;
67−typedef struct _UnitySettingsSecretAgentClass UnitySettingsSecretAgentClass;
68−typedef struct _UnitySettingsSecretAgentPrivate UnitySettingsSecretAgentPrivate;
69−
70−struct _UnitySettingsSecretAgent {
71− NMSecretAgent parent_instance;
72− UnitySettingsSecretAgentPrivate * priv;
73−};
74−
75−struct _UnitySettingsSecretAgentClass {
76− NMSecretAgentClass parent_class;
77−
78− void (*secret_requested) (UnitySettingsSecretAgent *self,
79− guint id,
80− NMConnection *connection,
81− const char *setting_name,
82− const char **hints,
83− NMSecretAgentGetSecretsFlags flags);
84−
85− void (*request_cancelled) (UnitySettingsSecretAgent *self,
86− guint id);
87−};
88−
89−
90−GType unity_settings_secret_agent_get_type (void) G_GNUC_CONST;
91−UnitySettingsSecretAgent* unity_settings_secret_agent_new (void);
92−UnitySettingsSecretAgent* unity_settings_secret_agent_construct (GType object_type);
93−
94−void unity_settings_secret_agent_provide_secret (UnitySettingsSecretAgent *agent,
95− guint request,
96− GHashTable *secrets);
97−void unity_settings_secret_agent_cancel_request (UnitySettingsSecretAgent *agent,
98− guint request);
99−
100−G_END_DECLS
101−
102−#endif
plugins/Unity/IndicatorsLegacy/flatmenuproxymodel.cppdeleted−288
@@ -1,288 +0,0 @@
1−/*
2− * Copyright 2012 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−extern "C" {
21−#include <gio/gio.h>
22−}
23−
24−#include "flatmenuproxymodel.h"
25−#include <QString>
26−#include <QStringList>
27−
28−FlatMenuProxyModel::FlatMenuProxyModel(QAbstractItemModel *source)
29− : QAbstractProxyModel(source),
30− m_rowCount(0)
31−{
32− m_model = new QDBusMenuModel;
33− setSourceModel(m_model);
34−}
35−
36−/*! \internal */
37−FlatMenuProxyModel::~FlatMenuProxyModel()
38−{
39− delete m_model;
40−}
41−
42−void FlatMenuProxyModel::setSourceModel(QAbstractItemModel *source)
43−{
44− if (sourceModel()) {
45− QAbstractItemModel *oldSource = sourceModel();
46− if (oldSource == source) {
47− return;
48− }
49−
50− oldSource->disconnect(this);
51− }
52−
53− QAbstractProxyModel::setSourceModel(source);
54−
55− if (source) {
56−
57− // FIXME - not working correctly with dynamic inserts/removes
58− // FIXME 2 - We're using Queud connections as a workaround to QTBUG-32859
59− // The signals from qmenumodel are coming straight off the glib event loop,
60− // which is not supported and has the effect of listview delegates not to be deleted.
61−
62− connect(source,
63− SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
64− SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
65− connect(source,
66− SIGNAL(rowsInserted(QModelIndex,int,int)),
67− SLOT(onModelReset()), Qt::QueuedConnection);
68−
69− connect(source,
70− SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
71− SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
72− connect(source,
73− SIGNAL(rowsRemoved(QModelIndex,int,int)),
74− SLOT(onModelReset()), Qt::QueuedConnection);
75−
76− connect(source,
77− SIGNAL(modelAboutToBeReset()),
78− SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
79− connect(source,
80− SIGNAL(modelReset()),
81− SLOT(onModelReset()), Qt::QueuedConnection);
82−
83− //Connection args
84− connect(source,
85− SIGNAL(busTypeChanged(DBusEnums::BusType)),
86− SIGNAL(busTypeChanged()));
87−
88− connect(source,
89− SIGNAL(busNameChanged(const QString&)),
90− SIGNAL(busNameChanged()));
91−
92− connect(source,
93− SIGNAL(objectPathChanged(const QString&)),
94− SIGNAL(objectPathChanged()));
95−
96− connect(source,
97− SIGNAL(statusChanged(DBusEnums::ConnectionStatus)),
98− SIGNAL(statusChanged()), Qt::QueuedConnection);
99−
100− // initiliaze rowCount
101− QModelIndex lastItem = source->index(source->rowCount() - 1, 0);
102− m_rowCount = recursiveRowCount(lastItem);
103− } else {
104− m_rowCount = 0;
105− }
106−
107− Q_EMIT countChanged();
108−}
109−
110−void FlatMenuProxyModel::setBusName(const QString &busName)
111−{
112− m_model->setBusName(busName);
113−}
114−
115−QString FlatMenuProxyModel::busName() const
116−{
117− return m_model->busName();
118−}
119−
120−void FlatMenuProxyModel::setObjectPath(const QString &busPath)
121−{
122− m_model->setObjectPath(busPath);
123−}
124−
125−QString FlatMenuProxyModel::objectPath() const
126−{
127− return m_model->objectPath();
128−}
129−
130−int FlatMenuProxyModel::status() const
131−{
132− return m_model->status();
133−}
134−
135−DBusEnums::BusType FlatMenuProxyModel::busType() const
136−{
137− return m_model->busType();
138−}
139−
140−void FlatMenuProxyModel::setIntBusType(int type)
141−{
142− m_model->setBusType((DBusEnums::BusType) type);
143−}
144−
145−void FlatMenuProxyModel::start()
146−{
147− m_model->start();
148−}
149−
150−void FlatMenuProxyModel::stop()
151−{
152− m_model->stop();
153−}
154−
155−QModelIndex FlatMenuProxyModel::mapFromSource(const QModelIndex &index) const
156−{
157− if (!index.isValid()) {
158− return QModelIndex();
159− }
160−
161− QModelIndex result = createIndex(rowOffsetOf(index, index.row()), 0);
162− return result;
163−}
164−
165−QModelIndex FlatMenuProxyModel::mapToSource(const QModelIndex &index) const
166−{
167− if (sourceModel() && m_indexCache.contains(index.row())) {
168− QString key = m_indexCache.value(index.row());
169− QStringList sections = key.split('.', QString::SkipEmptyParts);
170− QModelIndex sourceIndex = QModelIndex();
171− for(int i=0; i < sections.size(); i++) {
172− sourceIndex = sourceModel()->index(sections.at(i).toInt(), 9, sourceIndex);
173− }
174− return sourceIndex;
175− } else {
176− return QModelIndex();
177− }
178−}
179−
180−QModelIndex FlatMenuProxyModel::index(int row, int sectionRow, const QModelIndex &parent, const QString &key) const
181−{
182− for (int i = 0, count = 0; i < sourceModel()->rowCount(parent); i++) {
183− QModelIndex sourceIndex = sourceModel()->index(i, 0, parent);
184− int indexCount = recursiveRowCount(sourceIndex);
185−
186− if (count == sectionRow) {
187− QString sectionKey = key + "." + QString::number(i);
188− m_indexCache.insert(row, sectionKey);
189− return createIndex(row, 0);
190− } else if ((count + indexCount) >= sectionRow) {
191− count++;
192− return index(row, sectionRow - count, sourceIndex, key + "." + QString::number(i));
193− }
194−
195− count += indexCount + 1;
196− }
197− return QModelIndex();
198−}
199−
200−QModelIndex FlatMenuProxyModel::index(int row, int, const QModelIndex &) const
201−{
202− return index(row, row, QModelIndex(), "");
203−}
204−
205−QModelIndex FlatMenuProxyModel::parent(const QModelIndex &) const
206−{
207− return QModelIndex();
208−}
209−
210−int FlatMenuProxyModel::columnCount(const QModelIndex &) const
211−{
212− return 1;
213−}
214−
215−int FlatMenuProxyModel::rowCount(const QModelIndex &) const
216−{
217− return m_rowCount;
218−}
219−
220−int FlatMenuProxyModel::count() const
221−{
222− return rowCount(QModelIndex());
223−}
224−
225−void FlatMenuProxyModel::onModelAboutToBeReset()
226−{
227− beginResetModel();
228−}
229−
230−void FlatMenuProxyModel::onModelReset()
231−{
232− // initiliaze rowCount
233− m_rowCount = 0;
234− for (int i = 0, iMax = sourceModel()->rowCount(); i < iMax; i++) {
235− QModelIndex index = sourceModel()->index(i, 0);
236− m_rowCount += recursiveRowCount(index) + 1;
237− }
238− m_indexCache.clear();
239− endResetModel();
240− Q_EMIT countChanged();
241−}
242−
243−int FlatMenuProxyModel::recursiveRowCount(const QModelIndex &index) const
244−{
245− int size = sourceModel()->rowCount(index);
246− for (int i=0, iMax=size; i < iMax; i++) {
247− QModelIndex currentIndex = sourceModel()->index(i, 0, index);
248− size += recursiveRowCount(currentIndex);
249− }
250−
251− return size;
252−}
253−
254−int FlatMenuProxyModel::rowOffsetOf(const QModelIndex &index, int row, bool inclusive) const
255−{
256− int offset = 0;
257−
258− QModelIndex parent = index.parent();
259−
260− // Check row 0 offset
261− while(parent.isValid()) {
262− offset += 1;
263− for (int i = 0; i < parent.row(); i++) {
264− QModelIndex currentIndex = sourceModel()->index(i, 0, parent);
265− offset += recursiveRowCount(currentIndex) + 1;
266− }
267− parent = parent.parent();
268− }
269−
270− // Check index.row() offset
271− for(int i = 0; i < row; i++) {
272− QModelIndex currentIndex = sourceModel()->index(i, 0, index.parent());
273− offset += recursiveRowCount(currentIndex) + 1;
274− }
275−
276− if (inclusive) {
277− // itself
278− QModelIndex currentIndex = sourceModel()->index(row, 0, index.parent());
279− offset += recursiveRowCount(currentIndex);
280− }
281−
282− return offset;
283−}
284−
285−QVariant FlatMenuProxyModel::data(int row, int role) const
286−{
287− return QAbstractProxyModel::data(index(row, 0), role);
288−}
plugins/Unity/IndicatorsLegacy/flatmenuproxymodel.hdeleted−93
@@ -1,93 +0,0 @@
1−/*
2− * Copyright 2012 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−#ifndef FLATMENUPROXYMODEL_H
21−#define FLATMENUPROXYMODEL_H
22−
23−#include "unityindicatorsglobal.h"
24−
25−#include <QAbstractProxyModel>
26−#include <qdbusmenumodel.h>
27−
28−class SectionInfo;
29−
30−class UNITYINDICATORS_EXPORT FlatMenuProxyModel : public QAbstractProxyModel
31−{
32− Q_OBJECT
33− Q_PROPERTY(int count READ count NOTIFY countChanged)
34− Q_PROPERTY(int busType READ busType WRITE setIntBusType NOTIFY busTypeChanged)
35− Q_PROPERTY(QString busName READ busName WRITE setBusName NOTIFY busNameChanged)
36− Q_PROPERTY(QString objectPath READ objectPath WRITE setObjectPath NOTIFY objectPathChanged)
37− Q_PROPERTY(int status READ status NOTIFY statusChanged)
38−
39− Q_ENUMS(Roles)
40−public:
41− FlatMenuProxyModel(QAbstractItemModel *source=0);
42− ~FlatMenuProxyModel();
43−
44− void setSourceModel(QAbstractItemModel * sourceModel);
45−
46− Q_INVOKABLE QVariant data(int row, int role = Qt::DisplayRole) const;
47−
48− QModelIndex mapFromSource(const QModelIndex &index) const;
49− QModelIndex mapToSource(const QModelIndex &index) const;
50−
51− QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
52− QModelIndex parent(const QModelIndex &index) const;
53− int rowCount(const QModelIndex &parent = QModelIndex()) const;
54− int count() const;
55− int columnCount(const QModelIndex &parent) const;
56−
57− void setBusName(const QString &busName);
58− QString busName() const;
59−
60− void setObjectPath(const QString &busName);
61− QString objectPath() const;
62−
63− DBusEnums::BusType busType() const;
64− void setIntBusType(int type);
65−
66− int status() const;
67−
68−public Q_SLOTS:
69− void onModelAboutToBeReset();
70− void onModelReset();
71−
72− void start();
73− void stop();
74−
75−Q_SIGNALS:
76− void countChanged();
77−
78− void busTypeChanged();
79− void busNameChanged();
80− void objectPathChanged();
81− void statusChanged();
82−
83−private:
84− QDBusMenuModel *m_model;
85− mutable QMap<int, QString> m_indexCache;
86− int m_rowCount;
87−
88− int rowOffsetOf(const QModelIndex &index, int row, bool inclusive = false) const;
89− int recursiveRowCount(const QModelIndex &index) const;
90− QModelIndex index(int row, int rowCount, const QModelIndex &parent, const QString &key) const;
91−};
92−
93−#endif
plugins/Unity/IndicatorsLegacy/modelprinter.cppdeleted−114
@@ -1,114 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−// self
21−#include "modelprinter.h"
22−
23−// Qt
24−#include <QTextStream>
25−
26−ModelPrinter::ModelPrinter(QObject *parent)
27− : QObject(parent)
28− , m_model(NULL)
29−{
30−}
31−
32−void ModelPrinter::setSourceModel(QAbstractItemModel * sourceModel)
33−{
34− if (m_model != NULL) {
35− disconnect(m_model);
36− }
37− if (m_model != sourceModel) {
38− m_model = sourceModel;
39− Q_EMIT modelChanged();
40− Q_EMIT textChanged();
41− }
42− if (m_model != NULL) {
43− connect(m_model, SIGNAL(modelReset()), this, SIGNAL(textChanged()));
44− connect(m_model, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SIGNAL(textChanged()));
45− connect(m_model, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SIGNAL(textChanged()));
46− }
47−}
48−
49−QAbstractItemModel* ModelPrinter::sourceModel() const
50−{
51− return m_model;
52−}
53−
54−QString ModelPrinter::text(const QModelIndex& index) const
55−{
56− return recurseString(index, 0);
57−}
58−
59−QString tabify(int level) { QString str;
60− for (int i = 0; i < level; i++) {
61− str += " ";
62− }
63− return str;
64−}
65−
66−QString ModelPrinter::recurseString(const QModelIndex& index, int level) const
67−{
68− if (!m_model)
69− return "";
70−
71− QString str;
72− QTextStream stream(&str);
73−
74− QHash<int, QByteArray> roleNames = m_model->roleNames();
75− QList<int> roles = roleNames.keys();
76− qSort(roles);
77− Q_FOREACH(int role, roles) {
78− QVariant vData = m_model->data(index, role);
79− if (vData.canConvert(QMetaType::QVariantMap)) {
80− QMapIterator<QString, QVariant> iter(vData.toMap());
81− while (iter.hasNext()) {
82− iter.next();
83− stream << tabify(level)
84− << roleNames[role]
85− << "."
86− << iter.key()
87− << ": "
88− << iter.value().toString()
89− << endl;
90− }
91− }
92− else {
93− stream << tabify(level)
94− << roleNames[role]
95− << ": "
96− << vData.toString()
97− << endl;
98− }
99− }
100−
101− int rowCount = m_model->rowCount(index);
102− stream << tabify(level)
103− << "child count"
104− << ": "
105− << rowCount
106− << endl
107− << endl;
108−
109− for (int i = 0; i < rowCount; i++) {
110− QModelIndex child = m_model->index(i, 0, index);
111− str += recurseString(child, level+1);
112− }
113− return str;
114−}
plugins/Unity/IndicatorsLegacy/modelprinter.hdeleted−50
@@ -1,50 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−#ifndef MODELPRINTER_H
21−#define MODELPRINTER_H
22−
23−#include <QSortFilterProxyModel>
24−
25−// This class acts as a namespace only, with the addition that its enums
26−// are registered to be exposed on the QML side.
27−class ModelPrinter : public QObject
28−{
29− Q_OBJECT
30−
31− Q_PROPERTY(QAbstractItemModel* model READ sourceModel WRITE setSourceModel NOTIFY modelChanged)
32− Q_PROPERTY(QString text READ text NOTIFY textChanged)
33−public:
34− ModelPrinter(QObject* parent=0);
35−
36− void setSourceModel(QAbstractItemModel* sourceModel);
37− QAbstractItemModel* sourceModel() const;
38−
39− Q_INVOKABLE QString text(const QModelIndex& index = QModelIndex()) const;
40−
41−Q_SIGNALS:
42− void modelChanged();
43− void textChanged();
44−
45−private:
46− QString recurseString(const QModelIndex& index, int level) const;
47− QAbstractItemModel* m_model;
48−};
49−
50−#endif // MODELPRINTER_H
plugins/Unity/IndicatorsLegacy/plugin.cppdeleted−42
@@ -1,42 +0,0 @@
1−/*
2− * Copyright (C) 2012 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: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−// Qt
20−#include <QtQml/qqml.h>
21−
22−// self
23−#include "plugin.h"
24−
25−// local
26−#include "flatmenuproxymodel.h"
27−#include "indicators.h"
28−#include "modelprinter.h"
29−
30−void IndicatorsPlugin::registerTypes(const char *uri)
31−{
32− Q_INIT_RESOURCE(indicators);
33−
34− qmlRegisterType<FlatMenuProxyModel>(uri, 0, 1, "FlatMenuProxyModel");
35− qmlRegisterType<ModelPrinter>(uri, 0, 1, "ModelPrinter");
36−
37− qmlRegisterUncreatableType<ActionState>(uri, 0, 1, "ActionState", "Can't create ActionState class");
38− qmlRegisterUncreatableType<NetworkActionState>(uri, 0, 1, "NetworkActionState", "Can't create NetworkActionState class");
39− qmlRegisterUncreatableType<NetworkConnection>(uri, 0, 1, "NetworkConnection", "Can't create NetworkConnection class");
40− qmlRegisterUncreatableType<IndicatorsModelRole>(uri, 0, 1, "IndicatorsModelRole", "Can't create IndicatorsModelRole class");
41− qmlRegisterUncreatableType<FlatMenuProxyModelRole>(uri, 0, 1, "FlatMenuProxyModelRole", "Can't create FlatMenuProxyModelRole class");
42−}
plugins/Unity/IndicatorsLegacy/plugin.hdeleted−32
@@ -1,32 +0,0 @@
1−/*
2− * Copyright (C) 2012 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: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−#ifndef INDICATORS_PLUGIN_H
20−#define INDICATORS_PLUGIN_H
21−
22−#include <QtQml/QQmlExtensionPlugin>
23−
24−class IndicatorsPlugin : public QQmlExtensionPlugin
25−{
26− Q_OBJECT
27− Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
28−public:
29− void registerTypes(const char *uri);
30−};
31−
32−#endif // INDICATORS_PLUGIN_H
plugins/Unity/IndicatorsLegacy/qml/BasicMenuItem.qmldeleted−48
@@ -1,48 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components.ListItems 0.1 as ListItem
22−
23−ListItem.Standard {
24− id: stdListItem
25−
26− property bool menuActivated: false
27− property QtObject menu
28− property QtObject actionGroup
29− property alias color: background.color
30−
31− signal activateMenu()
32− signal deactivateMenu()
33−
34− showDivider: false
35− __foregroundColor: "#e8e1d0"
36−
37− backgroundIndicator: RemoveBackground {
38− state: stdListItem.swipingState
39− }
40−
41− Rectangle {
42− id: background
43−
44− anchors.fill: parent
45− color: "#221e1c"
46− z: -1
47− }
48−}
plugins/Unity/IndicatorsLegacy/qml/ButtonMenuItem.qmldeleted−47
@@ -1,47 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−BasicMenuItem {
24− id: buttonMenu
25− color: "#221e1b"
26− implicitHeight: units.gu(7)
27−
28− Button {
29− id: button
30− enabled: menuAction.valid
31− text: menu ? menu.label : ""
32− anchors.centerIn: parent
33− height: units.gu(4)
34− width: units.gu(16)
35− color: "#1b1817"
36−
37− onClicked: {
38− menuAction.activate()
39− }
40− }
41−
42− MenuAction {
43− id: menuAction
44− actionGroup: buttonMenu.actionGroup
45− action: menu ? menu.action : ""
46− }
47−}
plugins/Unity/IndicatorsLegacy/qml/CMakeLists.txtdeleted−5
@@ -1,5 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−# export the qmldir, *.qml files.
5−export_qmlfiles(Unity.IndicatorsLegacy Unity/IndicatorsLegacy)
plugins/Unity/IndicatorsLegacy/qml/DivMenuItem.qmldeleted−26
@@ -1,26 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Olivier Tilloy <olivier.tilloy@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−Rectangle {
24− color: "#181514"
25− implicitHeight: units.gu(1)
26−}
plugins/Unity/IndicatorsLegacy/qml/HLine.qmldeleted−29
@@ -1,29 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−Rectangle {
24− height: units.dp(1)
25− anchors {
26− left: parent.left
27− right: parent.right
28− }
29−}
plugins/Unity/IndicatorsLegacy/qml/IndicatorBase.qmldeleted−59
@@ -1,59 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− * Nick Dedekind <nick.dedekind@canonical.com>
19− */
20−
21−import QtQuick 2.0
22−import QMenuModel 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
24−
25−Item {
26− id: indicatorItem
27−
28− //const
29− property string title
30− property int busType
31− property string busName
32− property string actionsObjectPath
33− property var menuObjectPaths: undefined
34− readonly property string device: "phone"
35−
36− property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
37−
38− signal actionGroupUpdated()
39− signal modelUpdated()
40−
41− property var actionGroup: QDBusActionGroup {
42− busType: indicatorItem.busType
43− busName: indicatorItem.busName
44− objectPath: indicatorItem.actionsObjectPath
45−
46− onActionAppear: indicatorItem.actionGroupUpdated();
47− }
48−
49− property var proxyModel: Indicators.FlatMenuProxyModel {
50− busType: indicatorItem.busType
51− busName: indicatorItem.busName
52− objectPath: indicatorItem.deviceMenuObjectPath
53−
54− onStatusChanged: indicatorItem.modelUpdated();
55− onRowsInserted: indicatorItem.modelUpdated();
56− onRowsRemoved: indicatorItem.modelUpdated();
57− onDataChanged: indicatorItem.modelUpdated();
58− }
59−}
plugins/Unity/IndicatorsLegacy/qml/IndicatorPage.qmldeleted−191
@@ -1,191 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− * Nick Dedekind <nick.dedekind@canonical.com>
19− */
20−
21−import QtQuick 2.0
22−import Ubuntu.Components 0.1 as Components
23−
24−IndicatorBase {
25− id: main
26−
27− //const
28− property alias emptyText: emptyLabel.text
29− property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
30− property bool __active: false
31−
32− ListView {
33− id: mainMenu
34−
35− property int visibleItems: 0
36−
37− model: proxyModel
38− anchors {
39− fill: parent
40− bottomMargin: Qt.inputMethod.visible ? (Qt.inputMethod.keyboardRectangle.height - main.anchors.bottomMargin) : 0
41−
42− Behavior on bottomMargin {
43− NumberAnimation {
44− duration: 175
45− easing.type: Easing.OutQuad
46− }
47− }
48− // TODO - does ever frame.
49− onBottomMarginChanged: {
50− mainMenu.positionViewAtIndex(mainMenu.currentIndex, ListView.End)
51− }
52− }
53−
54− // Ensure all delegates are cached in order to improve smoothness of scrolling
55− cacheBuffer: 10000
56−
57− // Only allow flicking if the content doesn't fit on the page
58− interactive: contentHeight > height
59−
60− currentIndex: -1
61− delegate: Item {
62− id: item
63− property bool ready: false
64− property alias empty: factory.empty
65−
66− anchors {
67− left: parent.left
68− right: parent.right
69− }
70− height: div.height + factory.implicitHeight
71− visible: height > 0
72−
73− Component.onCompleted: {
74− if (!item.empty) {
75− mainMenu.visibleItems += 1;
76− }
77− ready = true;
78− }
79− Component.onDestruction: {
80− if (!item.empty) {
81− mainMenu.visibleItems -= 1;
82− }
83− ready = false;
84− }
85−
86− onEmptyChanged: {
87− if (!ready) {
88− return;
89− }
90− if (empty) {
91− mainMenu.visibleItems -= 1;
92− } else {
93− mainMenu.visibleItems += 1;
94− }
95− }
96−
97− ListView.onRemove: {
98− if (!highlightFollowsCurrentItem) {
99− mainMenu.currentIndex = -1;
100− }
101− }
102−
103− Column {
104− id: contents
105−
106− anchors.fill: parent
107−
108− DivMenuItem {
109− id: div
110−
111− anchors.left: parent.left
112− anchors.right: parent.right
113− // only visible if is a root or a section header element and the factory is visible
114− height: {
115− // skipe first item
116− if (item.y == 0) {
117− return 0;
118− }
119− if (hasSection || ((depth == 0) && (!factory.empty))) {
120− return implicitHeight;
121− } else {
122− return 0;
123− }
124− }
125− }
126−
127− MenuItemFactory {
128− id: factory
129−
130− actionGroup: main.actionGroup
131− isCurrentItem: item.ListView.isCurrentItem
132− anchors {
133− left: parent.left
134− right: parent.right
135− }
136− menu: model
137−
138− Connections {
139− target : factory
140− onActivated: item.ListView.view.currentIndex = index
141− onDeactivated: item.ListView.view.currentIndex = -1
142− }
143− }
144− }
145− }
146− }
147−
148− Components.Label {
149− id: emptyLabel
150− visible: (mainMenu.visibleItems === 0)
151− anchors {
152− top: parent.top
153− left: parent.left
154− right: parent.right
155− topMargin: units.gu(2)
156− }
157− wrapMode: Text.WordWrap
158− horizontalAlignment: Text.AlignHCenter
159−
160− //style
161− color: "#e8e1d0"
162− fontSize: "medium"
163−
164− text: "Empty!"
165− }
166−
167− function start()
168− {
169− reset()
170− if (!__active) {
171− proxyModel.start();
172− actionGroup.start();
173− __active = true;
174− }
175− }
176−
177− function stop()
178− {
179− if (__active) {
180− __active = false;
181− proxyModel.stop();
182− actionGroup.stop();
183− }
184− }
185−
186− function reset()
187− {
188− mainMenu.currentIndex = -1;
189− mainMenu.positionViewAtBeginning();
190− }
191−}
plugins/Unity/IndicatorsLegacy/qml/IndicatorWidget.qmldeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.IndicatorsLegacy 0.1 as Indicators
22−
23−IndicatorBase {
24− id: indicatorWidget
25−
26− enabled: false
27− property var action: undefined
28− property bool started: (busType != 0) && (busName != "") && (deviceMenuObjectPath != "")
29− property int iconSize: height - units.gu(0.5)
30− property string rootMenuType: "com.canonical.indicator.root"
31−
32− signal actionStateChanged()
33−
34− onStartedChanged: {
35− if (started) {
36− proxyModel.start();
37− actionGroup.start();
38− } else {
39− proxyModel.stop();
40− actionGroup.stop();
41− }
42− }
43− onActionGroupUpdated: update_state()
44− onModelUpdated: update_state()
45−
46−
47− function update_state() {
48− var extra = proxyModel.data(0, Indicators.FlatMenuProxyModelRole.Extra);
49− if (extra == undefined) {
50− return;
51− }
52−
53− if (!extra.hasOwnProperty("canonical_type")) {
54− return;
55− }
56−
57− if (extra.canonical_type === rootMenuType) {
58− action = actionGroup.action(proxyModel.data(0, Indicators.FlatMenuProxyModelRole.Action));
59− actionStateChanged();
60− }
61− }
62−
63− Connections {
64− target: action == undefined ? null : action
65− onStateChanged: actionStateChanged()
66− onValidChanged: actionStateChanged()
67− }
68−}
plugins/Unity/IndicatorsLegacy/qml/MenuAction.qmldeleted−86
@@ -1,86 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−
22−/*!
23− \qmltype MenuAction
24− \inqmlmodule Indicators 0.1
25− \brief Helper class to connect to a qmenumodel action
26−
27− Example:
28− \qml
29− Button {
30− id: slide
31− onClick: { action.activate() }
32− }
33− MenuAction {
34− id: action
35− actionGroup: menuItem.actionGroup
36− action: "/ubuntu/sound/enabled"
37− }
38− \endqml
39−*/
40−
41−Item {
42− id: menuAction
43−
44− /*!
45− \preliminary
46− The dbus action name
47− */
48− property string action: ""
49−
50− /*!
51− \preliminary
52− The dbus action group object
53− */
54− property QtObject actionGroup: null
55−
56− /*!
57− \preliminary
58− This is a read-only property with the current validity of the action
59− */
60− readonly property bool valid: actionObject ? actionObject.valid : false
61−
62− readonly property var state: actionObject ? actionObject.state : undefined
63−
64− // internal
65− property QtObject actionObject: null
66−
67− function activate(param) {
68− if (valid) {
69− actionObject.activate(param);
70− }
71− }
72−
73− onActionGroupChanged: updateAction()
74− onActionChanged: updateAction()
75−
76− Connections {
77− target: menuAction.actionGroup != undefined ? menuAction.actionGroup : null
78− onActionAppear: menuAction.updateAction();
79− onActionVanish: menuAction.updateAction();
80− onStatusChanged: menuAction.updateAction();
81− }
82−
83− function updateAction() {
84− actionObject = action !== "" && actionGroup ? actionGroup.action(action) : null
85− }
86−}
plugins/Unity/IndicatorsLegacy/qml/MenuActionBinding.qmldeleted−106
@@ -1,106 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−
22−/*!
23− \qmltype MenuActionBinding
24− \inqmlmodule Indicators 0.1
25− \brief Helper class to connect a qmenumodel action state with a qml components property
26−
27− Example:
28− \qml
29− Slider {
30− id: slide
31− }
32− MenuActionBinding {
33− actionGroup: menuItem.actionGroup
34− action: "/ubuntu/sound/volume"
35− target: slider
36− property: "value"
37− }
38− \endqml
39−*/
40−
41−MenuAction {
42− id: menuAction
43−
44− /*!
45− \preliminary
46− The component which will have the property changed by action
47− */
48− property QtObject target: null
49−
50− /*!
51− \preliminary
52− The property name of \l target component which will be linked with action state
53− */
54− property string property
55−
56− /*!
57− \preliminary
58− Use this to enable or disable the action state propagation to component property.
59− */
60− property bool active: true
61−
62− Component.onCompleted: connectViewChanges()
63− onTargetChanged: connectViewChanges()
64− onPropertyChanged: connectViewChanges()
65−
66− Item {
67− id: d
68− property var currentTarget: undefined
69− property string currentSignal
70− }
71−
72− Binding {
73− id: propertyBinding
74− target: menuAction.target
75− property: menuAction.property
76− value: menuAction.state
77− when: menuAction.actionObject && menuAction.active
78− }
79−
80− // TODO - re-evaluate in c++
81− function connectViewChanges() {
82− if (d.currentTarget != undefined && d.currentSignal !== "") {
83− if (d.currentTarget[d.currentSignal] !== undefined) {
84− d.currentTarget[d.currentSignal].disconnect(onViewValueChanged);
85− }
86− }
87−
88− d.currentTarget = null;
89− d.currentSignal = "";
90− if (target) {
91− var signal = "on%1Changed".arg(property.charAt(0).toUpperCase() + property.slice(1));
92− if (target[signal] !== undefined) {
93− target[signal].connect(onViewValueChanged);
94− d.currentTarget = target;
95− d.currentSignal = signal;
96− }
97− }
98− }
99−
100− function onViewValueChanged() {
101− if (valid) {
102− var propertyValue = target[property];
103− actionObject.updateState(propertyValue);
104− }
105− }
106−}
plugins/Unity/IndicatorsLegacy/qml/MenuItem.qmldeleted−40
@@ -1,40 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−
24−BasicMenuItem {
25− objectName: menu ? menu.action : ""
26− progression: menu && (menu.linkSubMenu !== undefined)
27− text: menu && menu.label ? menu.label : ""
28− color: "#221e1c"
29− implicitHeight: units.gu(7)
30−
31− HLine {
32− anchors.top: parent.top
33− color: "#403b37"
34− }
35−
36− HLine {
37− anchors.bottom: parent.bottom
38− color: "#060606"
39− }
40−}
plugins/Unity/IndicatorsLegacy/qml/MenuItemFactory.qmldeleted−102
@@ -1,102 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.IndicatorsLegacy 0.1 as Indicators
22−import Unity.IndicatorsLegacy.Network 0.1 as ICNetwork
23−
24−Item {
25− id: menuFactory
26−
27− property QtObject menu
28− property QtObject listView
29− property QtObject actionGroup
30− property bool isCurrentItem
31− readonly property bool empty: (loader.item !== undefined && loader.status == Loader.Ready) ? loader.item.state === "EMPTY" : true
32−
33− implicitHeight: loader.height
34−
35− signal activated()
36− signal deactivated()
37−
38− property var _map: {
39− "unity.widgets.systemsettings.tablet.volumecontrol" : sliderMenu,
40− "unity.widgets.systemsettings.tablet.switch" : switchMenu,
41−
42− "com.canonical.indicator.button" : buttonMenu,
43− "com.canonical.indicator.div" : divMenu,
44− "com.canonical.indicator.section" : sectionMenu,
45− "com.canonical.indicator.progress" : progressMenu,
46− "com.canonical.indicator.slider" : sliderMenu,
47− "com.canonical.indicator.switch" : switchMenu,
48−
49− "unity.widget.systemsettings.tablet.sectiontitle" : wifiSection,
50− "unity.widgets.systemsettings.tablet.wifisection" : wifiSection,
51− "unity.widgets.systemsettings.tablet.accesspoint" : accessPoint,
52− }
53−
54− Component { id: sliderMenu; Indicators.SliderMenuItem {} }
55− Component { id: switchMenu; Indicators.SwitchMenuItem {} }
56− Component { id: buttonMenu; Indicators.ButtonMenuItem {} }
57− Component { id: divMenu; Indicators.DivMenuItem {} }
58− Component { id: sectionMenu; Indicators.SectionMenuItem {} }
59− Component { id: progressMenu; Indicators.ProgressMenuItem {} }
60− Component { id: wifiSection; ICNetwork.WifiSection {} }
61− Component { id: accessPoint; ICNetwork.AccessPoint {} }
62− Component { id: indicatorMenu; Indicators.MenuItem {} }
63−
64− Loader {
65− id: loader
66− asynchronous: true
67−
68− anchors {
69− left: parent.left
70− right: parent.right
71− }
72−
73− sourceComponent: {
74− if (!menuFactory.menu || !menuFactory.menu.extra) {
75− return undefined;
76− }
77−
78− var widgetType = menuFactory.menu.extra.canonical_type;
79− if (widgetType) {
80− return _map[widgetType];
81− } else {
82− if (widgetType === "com.canonical.indicator.root") {
83− return undefined;
84− // Try discovery the item based on the basic properties
85− } else if (menu.hasSection) {
86− return sectionMenu;
87− } else {
88− return indicatorMenu;
89− }
90− }
91− }
92−
93− onLoaded: {
94− item.menuActivated = Qt.binding(function() { return isCurrentItem; });
95− item.actionGroup = Qt.binding(function() { return menuFactory.actionGroup; });
96− item.menu = Qt.binding(function() { return menuFactory.menu; });
97−
98− item.activateMenu.connect(function() { menuFactory.activated(); });
99− item.deactivateMenu.connect(function() { menuFactory.deactivated(); });
100− }
101− }
102−}
plugins/Unity/IndicatorsLegacy/qml/ProgressMenuItem.qmldeleted−65
@@ -1,65 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−MenuItem {
24− id: progressMenu
25− property alias value : progressBar.value
26−
27− // TODO: Replace this with the official ProgressBar component as soon as
28− // it is available. For now, this rebuilds the Mockup as close as possible.
29− UbuntuShape {
30− id: progressBar
31− anchors {
32− right: parent.right
33− rightMargin: units.gu(2)
34− left: parent.left
35− leftMargin: units.gu(2)
36− }
37− height: units.gu(4)
38− anchors.verticalCenter: parent.verticalCenter
39− color: "transparent"
40−
41− property int minimumValue: 0
42− property int maximumValue: 100
43− property int value: 50
44−
45− UbuntuShape {
46− anchors.fill: parent
47− anchors.rightMargin: parent.width - (parent.width * parent.value / parent.maximumValue)
48− color: "#c94212"
49− }
50−
51− Label {
52− anchors.centerIn: parent
53− text: parent.value + " %"
54− fontSize: "medium"
55− color: "#e8e1d0"
56− }
57− }
58−
59− MenuActionBinding {
60− actionGroup: progressMenu.actionGroup
61− action: menu ? menu.action : ""
62− target: progressBar
63− property: "value"
64− }
65−}
plugins/Unity/IndicatorsLegacy/qml/RemoveBackground.qmldeleted−55
@@ -1,55 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Ubuntu.Components 0.1
19−
20−Rectangle {
21− anchors.fill: parent
22− color: "#333130"
23− Label {
24− id: backgroundText
25−
26− anchors.fill: parent
27− verticalAlignment: Text.AlignVCenter
28− text: "Clear"
29− fontSize: "medium"
30− color: "#e8e1d0"
31− font.bold: true
32− }
33−
34− states: [
35− State {
36− name: "SwipingRight"
37− PropertyChanges {
38− target: backgroundText
39− anchors.rightMargin: units.gu(3)
40− anchors.leftMargin: 0
41− horizontalAlignment: Text.AlignRight
42−
43− }
44− },
45− State {
46− name: "SwipingLeft"
47− PropertyChanges {
48− target: backgroundText
49− anchors.rightMargin: 0
50− anchors.leftMargin: units.gu(3)
51− horizontalAlignment: Text.AlignLeft
52− }
53− }
54− ]
55−}
plugins/Unity/IndicatorsLegacy/qml/SectionMenuItem.qmldeleted−57
@@ -1,57 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−
24−BasicMenuItem {
25− property string label: menu && menu.label ? menu.label : ""
26− property bool busy: false
27− property int count: menu && menu.linkSection ? menu.linkSection.count : 0
28−
29− color: "#221e1b"
30− implicitHeight: label !== "" ? __header.height : 0
31− state: count === 0 ? "EMPTY" : ""
32−
33− ListItem.Header {
34− id: __header
35−
36− text: label
37− height: units.gu(4)
38− anchors {
39− left: parent.left
40− right: parent.right
41− top: parent.top
42− }
43− visible: text != ""
44−
45− ActivityIndicator {
46− id: indicator
47− running: busy
48− anchors {
49− margins: units.gu(0.5)
50− right: parent.right
51− }
52− height: parent.height - (anchors.margins * 2)
53− width: height
54− anchors.verticalCenter: parent.verticalCenter
55− }
56− }
57−}
plugins/Unity/IndicatorsLegacy/qml/SliderMenuItem.qmldeleted−64
@@ -1,64 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−MenuItem {
24− id: _sliderMenu
25−
26− property alias minimumValue: slider.minimumValue
27− property alias maximumValue: slider.maximumValue
28− property alias value: slider.value
29−
30− control: Slider {
31− id: slider
32− enabled: menuAction.valid
33− width: _sliderMenu.text ? units.gu(20) : _sliderMenu.width - units.gu(4)
34− anchors.verticalCenter: parent.verticalCenter
35− live: false
36− // FIXME: The interval should be [0.0 - 1.0]. Unfortunately, when
37− // reaching the boundaries (0.0 or 1.0), the value is converted
38− // to an integer when automatically wrapped in a variant when
39− // passed to QStateAction::updateState(…). The server chokes on
40− // those values, complaining that they’re not of the right type…
41− minimumValue: menu.extra.canonical_min ? menu.extra.canonical_min * 1.000001 : 0.0000001
42− maximumValue: {
43− var maximum = menu.extra.canonical_max ? menu.extra.canonical_max * 1.000001 : 0.9999999
44− if (maximum <= minimumValue) {
45− return minimumValue + 1;
46− }
47− return maximum;
48− }
49−
50− // FIXME - to be deprecated in Ubuntu.Components.
51− // Use this to disable the label, since there is not way to do it on the component.
52− function formatValue(v) {
53− return "";
54− }
55− }
56−
57− MenuActionBinding {
58− id: menuAction
59− actionGroup: _sliderMenu.actionGroup
60− action: menu ? menu.action : ""
61− target: slider
62− property: "value"
63− }
64−}
plugins/Unity/IndicatorsLegacy/qml/SwitchMenuItem.qmldeleted−43
@@ -1,43 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU 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− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−MenuItem {
24− id: switchMenu
25−
26− property alias checked: switcher.checked
27−
28− control: Switch {
29− id: switcher
30− enabled: menuAction.valid
31−
32− anchors.verticalCenter: parent.verticalCenter
33− anchors.right: parent.right
34− }
35−
36− MenuActionBinding {
37− id: menuAction
38− actionGroup: switchMenu.actionGroup
39− action: menu ? menu.action : ""
40− target: switcher
41− property: "checked"
42− }
43−}
plugins/Unity/IndicatorsLegacy/qml/qmldirdeleted−21
@@ -1,21 +0,0 @@
1−module Unity.IndicatorsLegacy
2−plugin IndicatorsLegacyQml
3−typeinfo plugin.qmltypes
4−
5−BasicMenuItem 0.1 BasicMenuItem.qml
6−ButtonMenuItem 0.1 ButtonMenuItem.qml
7−DivMenuItem 0.1 DivMenuItem.qml
8−HLine 0.1 HLine.qml
9−IndicatorBase 0.1 IndicatorBase.qml
10−IndicatorPage 0.1 IndicatorPage.qml
11−IndicatorWidget 0.1 IndicatorWidget.qml
12−MenuItem 0.1 MenuItem.qml
13−MenuAction 0.1 MenuAction.qml
14−MenuActionBinding 0.1 MenuActionBinding.qml
15−MenuItemFactory 0.1 MenuItemFactory.qml
16−ProgressMenuItem 0.1 ProgressMenuItem.qml
17−SectionMenuItem 0.1 SectionMenuItem.qml
18−SliderMenuItem 0.1 SliderMenuItem.qml
19−SwitchMenuItem 0.1 SwitchMenuItem.qml
20−
21−internal RemoveBackground RemoveBackground.qml
plugins/Unity/IndicatorsLegacy/resources/indicators.qrcdeleted−4
@@ -1,4 +0,0 @@
1−<RCC>
2− <qresource prefix="/indicators">
3− </qresource>
4−</RCC>
plugins/Unity/Launcher/backend/launcherbackend.cpp+4−37
@@ -30,21 +30,18 @@
30class LauncherBackendItem
30class LauncherBackendItem
31{
31{
32public:
32public:
33− LauncherBackendItem(): pinned(false) {}
34−
35 QString desktopFile;
33 QString desktopFile;
36 QString displayName;
34 QString displayName;
37 QString icon;
35 QString icon;
38− bool pinned;
39};
36};
40
37
41−LauncherBackend::LauncherBackend(bool useStorage, QObject *parent):
38+LauncherBackend::LauncherBackend(QObject *parent):
42 QObject(parent),
39 QObject(parent),
43 m_accounts(nullptr)
40 m_accounts(nullptr)
44{
41{
45− if (useStorage) {
42+#ifndef LAUNCHER_TESTING
46− m_accounts = new AccountsServiceDBusAdaptor(this);
43+ m_accounts = new AccountsServiceDBusAdaptor(this);
47− }
44+#endif
48 m_user = qgetenv("USER");
45 m_user = qgetenv("USER");
49 syncFromAccounts();
46 syncFromAccounts();
50}
47}
@@ -135,32 +132,6 @@ QString LauncherBackend::icon(const QString &appId) const
135 return iconName;
132 return iconName;
136}
133}
137
134
138−bool LauncherBackend::isPinned(const QString &appId) const
139−{
140− LauncherBackendItem *item = m_itemCache.value(appId);
141− if (item) {
142− return item->pinned;
143− }
144− return false;
145−}
146−
147−void LauncherBackend::setPinned(const QString &appId, bool pinned)
148−{
149− if (!m_storedApps.contains(appId)) {
150− return;
151− }
152−
153− LauncherBackendItem *item = m_itemCache.value(appId);
154− if (!item) {
155− item = new LauncherBackendItem();
156− m_itemCache.insert(appId, item);
157− }
158− if (item->pinned != pinned) {
159− item->pinned = pinned;
160− syncToAccounts();
161− }
162−}
163−
164QList<QuickListEntry> LauncherBackend::quickList(const QString &appId) const
135QList<QuickListEntry> LauncherBackend::quickList(const QString &appId) const
165{
136{
166 // TODO: Get static (from .desktop file) and dynamic (from the app itself)
137 // TODO: Get static (from .desktop file) and dynamic (from the app itself)
@@ -233,7 +204,6 @@ void LauncherBackend::syncFromAccounts()
233 if (!m_itemCache.contains(appId)) {
204 if (!m_itemCache.contains(appId)) {
234 m_itemCache.insert(appId, parseDesktopFile(df));
205 m_itemCache.insert(appId, parseDesktopFile(df));
235 }
206 }
236− m_itemCache.value(appId)->pinned = true;
237 }
207 }
238 }
208 }
239 }
209 }
@@ -305,7 +275,6 @@ LauncherBackendItem* LauncherBackend::parseDesktopFile(const QString &desktopFil
305 } else {
275 } else {
306 item->icon = "image://theme/" + iconString;
276 item->icon = "image://theme/" + iconString;
307 }
277 }
308− item->pinned = false;
309 return item;
278 return item;
310}
279}
311
280
@@ -326,7 +295,6 @@ void LauncherBackend::loadFromVariant(const QVariantMap &details)
326 item->desktopFile = details.value("desktopFile").toString();
295 item->desktopFile = details.value("desktopFile").toString();
327 item->displayName = details.value("name").toString();
296 item->displayName = details.value("name").toString();
328 item->icon = details.value("icon").toString();
297 item->icon = details.value("icon").toString();
329− item->pinned = details.value("is-pinned").toBool();
330
298
331 m_itemCache.insert(appId, item);
299 m_itemCache.insert(appId, item);
332 m_storedApps.append(appId);
300 m_storedApps.append(appId);
@@ -340,7 +308,6 @@ QVariantMap LauncherBackend::itemToVariant(const QString &appId) const
340 details.insert("name", item->displayName);
308 details.insert("name", item->displayName);
341 details.insert("icon", item->icon);
309 details.insert("icon", item->icon);
342 details.insert("desktopFile", item->desktopFile);
310 details.insert("desktopFile", item->desktopFile);
343− details.insert("is-pinned", item->pinned);
344 return details;
311 return details;
345}
312}
346
313
plugins/Unity/Launcher/backend/launcherbackend.h+1−16
@@ -39,7 +39,7 @@ class LauncherBackend : public QObject
39
39
40
40
41public:
41public:
42− LauncherBackend(bool useStorage = true, QObject *parent = 0);
42+ LauncherBackend(QObject *parent = 0);
43 virtual ~LauncherBackend();
43 virtual ~LauncherBackend();
44
44
45 /**
45 /**
@@ -88,21 +88,6 @@ public:
88 */
88 */
89 QString icon(const QString &appId) const;
89 QString icon(const QString &appId) const;
90
90
91− /**
92− * @brief Is the app manually pinned?
93− * @returns true if pinned, otherwise false.
94− */
95− bool isPinned(const QString &appId) const;
96−
97− /**
98− * @brief Change the pinned state of an application.
99− * @param appId The application where the pinned flag should be set.
100− * @param pinned true if pinned, otherwise false.
101− */
102− void setPinned(const QString &appId, bool pinned);
103−
104− //TODO: Fill in getters for all the other things needed from the .desktop file.
105−
106 /**
91 /**
107 * @brief Get the QuickList for an application.
92 * @brief Get the QuickList for an application.
108 * @param appId The ID of the application.
93 * @param appId The ID of the application.
plugins/Unity/Launcher/launchermodel.cpp+4−8
@@ -27,7 +27,7 @@ using namespace unity::shell::application;
27
27
28LauncherModel::LauncherModel(QObject *parent):
28LauncherModel::LauncherModel(QObject *parent):
29 LauncherModelInterface(parent),
29 LauncherModelInterface(parent),
30− m_backend(new LauncherBackend(true, this)),
30+ m_backend(new LauncherBackend(this)),
31 m_appManager(0)
31 m_appManager(0)
32{
32{
33 connect(m_backend, SIGNAL(countChanged(QString,int)), SLOT(countChanged(QString,int)));
33 connect(m_backend, SIGNAL(countChanged(QString,int)), SLOT(countChanged(QString,int)));
@@ -38,11 +38,7 @@ LauncherModel::LauncherModel(QObject *parent):
38 m_backend->displayName(entry),
38 m_backend->displayName(entry),
39 m_backend->icon(entry),
39 m_backend->icon(entry),
40 this);
40 this);
41− if (m_backend->isPinned(entry)) {
42− item->setPinned(true);
41+ item->setPinned(true);
43− } else {
44− item->setRecent(true);
45− }
46 m_list.append(item);
42 m_list.append(item);
47 }
43 }
48}
44}
@@ -129,11 +125,12 @@ void LauncherModel::pin(const QString &appId, int index)
129 if (currentIndex >= 0) {
125 if (currentIndex >= 0) {
130 if (index == -1 || index == currentIndex) {
126 if (index == -1 || index == currentIndex) {
131 m_list.at(currentIndex)->setPinned(true);
127 m_list.at(currentIndex)->setPinned(true);
132− m_backend->setPinned(appId, true);
133 QModelIndex modelIndex = this->index(currentIndex);
128 QModelIndex modelIndex = this->index(currentIndex);
134 Q_EMIT dataChanged(modelIndex, modelIndex);
129 Q_EMIT dataChanged(modelIndex, modelIndex);
135 } else {
130 } else {
136 move(currentIndex, index);
131 move(currentIndex, index);
132+ // move() will store the list to the backend itself, so just exit at this point.
133+ return;
137 }
134 }
138 } else {
135 } else {
139 if (index == -1) {
136 if (index == -1) {
@@ -144,7 +141,6 @@ void LauncherModel::pin(const QString &appId, int index)
144 m_backend->displayName(appId),
141 m_backend->displayName(appId),
145 m_backend->icon(appId));
142 m_backend->icon(appId));
146 item->setPinned(true);
143 item->setPinned(true);
147− m_backend->setPinned(appId, true);
148 m_list.insert(index, item);
144 m_list.insert(index, item);
149 endInsertRows();
145 endInsertRows();
150 }
146 }
plugins/Unity/Launcher/quicklistmodel.cpp+1−1
@@ -32,7 +32,7 @@ QuickListModel::~QuickListModel()
32
32
33void QuickListModel::appendAction(const QuickListEntry &entry)
33void QuickListModel::appendAction(const QuickListEntry &entry)
34{
34{
35− beginInsertRows(QModelIndex(), m_list.count() - 1, m_list.count() -1);
35+ beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
36 m_list.append(entry);
36 m_list.append(entry);
37 endInsertRows();
37 endInsertRows();
38}
38}
plugins/Unity/bottombarvisibilitycommunicatorshell.cpp+15−1
@@ -17,7 +17,8 @@
17#include "bottombarvisibilitycommunicatorshell.h"
17#include "bottombarvisibilitycommunicatorshell.h"
18
18
19BottomBarVisibilityCommunicatorShell::BottomBarVisibilityCommunicatorShell()
19BottomBarVisibilityCommunicatorShell::BottomBarVisibilityCommunicatorShell()
20− : m_forceHidden(false)
20+ : m_forceHidden(false),
21+ m_position(0)
21{
22{
22}
23}
23
24
@@ -26,6 +27,11 @@ bool BottomBarVisibilityCommunicatorShell::forceHidden() const
26 return m_forceHidden;
27 return m_forceHidden;
27}
28}
28
29
30+double BottomBarVisibilityCommunicatorShell::position() const
31+{
32+ return m_position;
33+}
34+
29void BottomBarVisibilityCommunicatorShell::setForceHidden(bool forceHidden)
35void BottomBarVisibilityCommunicatorShell::setForceHidden(bool forceHidden)
30{
36{
31 if (forceHidden != m_forceHidden) {
37 if (forceHidden != m_forceHidden) {
@@ -33,3 +39,11 @@ void BottomBarVisibilityCommunicatorShell::setForceHidden(bool forceHidden)
33 Q_EMIT forceHiddenChanged(forceHidden);
39 Q_EMIT forceHiddenChanged(forceHidden);
34 }
40 }
35}
41}
42+
43+void BottomBarVisibilityCommunicatorShell::setPosition(double position)
44+{
45+ if (position != m_position) {
46+ m_position = position;
47+ Q_EMIT positionChanged(position);
48+ }
49+}
plugins/Unity/bottombarvisibilitycommunicatorshell.h+6
@@ -30,6 +30,7 @@ class BottomBarVisibilityCommunicatorShell : public QObject
30{
30{
31 Q_OBJECT
31 Q_OBJECT
32 Q_PROPERTY(bool forceHidden READ forceHidden WRITE setForceHidden NOTIFY forceHiddenChanged)
32 Q_PROPERTY(bool forceHidden READ forceHidden WRITE setForceHidden NOTIFY forceHiddenChanged)
33+ Q_PROPERTY(double position READ position WRITE setPosition NOTIFY positionChanged)
33
34
34 Q_CLASSINFO("D-Bus Interface", "com.canonical.Shell.BottomBarVisibilityCommunicator")
35 Q_CLASSINFO("D-Bus Interface", "com.canonical.Shell.BottomBarVisibilityCommunicator")
35public:
36public:
@@ -41,13 +42,18 @@ public:
41 bool forceHidden() const;
42 bool forceHidden() const;
42 void setForceHidden(bool forceHidden);
43 void setForceHidden(bool forceHidden);
43
44
45+ double position() const;
46+ void setPosition(double position);
47+
44Q_SIGNALS:
48Q_SIGNALS:
45 void forceHiddenChanged(bool forceHidden);
49 void forceHiddenChanged(bool forceHidden);
50+ void positionChanged(double position);
46
51
47private:
52private:
48 BottomBarVisibilityCommunicatorShell();
53 BottomBarVisibilityCommunicatorShell();
49
54
50 bool m_forceHidden;
55 bool m_forceHidden;
56+ double m_position;
51};
57};
52
58
53#endif
59#endif
plugins/Unity/categories.cpp+75−16
@@ -40,6 +40,7 @@ Categories::Categories(QObject* parent)
40 m_roles[Categories::RoleIcon] = "icon";
40 m_roles[Categories::RoleIcon] = "icon";
41 m_roles[Categories::RoleRenderer] = "renderer";
41 m_roles[Categories::RoleRenderer] = "renderer";
42 m_roles[Categories::RoleContentType] = "contentType";
42 m_roles[Categories::RoleContentType] = "contentType";
43+ m_roles[Categories::RoleRendererHint] = "rendererHint";
43 m_roles[Categories::RoleProgressSource] = "progressSource";
44 m_roles[Categories::RoleProgressSource] = "progressSource";
44 m_roles[Categories::RoleHints] = "hints";
45 m_roles[Categories::RoleHints] = "hints";
45 m_roles[Categories::RoleResults] = "results";
46 m_roles[Categories::RoleResults] = "results";
@@ -89,9 +90,37 @@ void Categories::onCategoriesModelChanged(unity::glib::Object<DeeModel> model)
89 delete model;
90 delete model;
90 }
91 }
91 m_results.clear();
92 m_results.clear();
93+ m_categoryOrder.clear();
94+
92 setModel(model);
95 setModel(model);
93}
96}
94
97
98+void Categories::onCategoryOrderChanged(const std::vector<unsigned int>& cat_order)
99+{
100+ for (unsigned int pos = 0; pos<cat_order.size(); pos++)
101+ {
102+ unsigned int cat = cat_order[pos];
103+ const int old_pos = m_categoryOrder.indexOf(cat);
104+
105+ if (old_pos < 0) {
106+ qWarning() << "No such category index:" << cat;
107+ continue;
108+ }
109+
110+ if (static_cast<int>(pos) != old_pos) {
111+ int target_pos = pos;
112+ if (target_pos > old_pos)
113+ target_pos++;
114+ const bool status = beginMoveRows(QModelIndex(), old_pos, old_pos, QModelIndex(), target_pos);
115+ if (status)
116+ m_categoryOrder.move(old_pos, pos);
117+ else
118+ qWarning() << "beginMoveRows failed:" << old_pos << target_pos;
119+ endMoveRows();
120+ }
121+ }
122+}
123+
95void
124void
96Categories::setUnityScope(const unity::dash::Scope::Ptr& scope)
125Categories::setUnityScope(const unity::dash::Scope::Ptr& scope)
97{
126{
@@ -100,9 +129,9 @@ Categories::setUnityScope(const unity::dash::Scope::Ptr& scope)
100 // no need to call this, we'll get notified
129 // no need to call this, we'll get notified
101 //setModel(m_unityScope->categories()->model());
130 //setModel(m_unityScope->categories()->model());
102
131
103− m_categoriesChangedConnection.disconnect();
132+ m_signals.disconnectAll();
104− m_categoriesChangedConnection =
105− m_unityScope->categories()->model.changed.connect(sigc::mem_fun(this, &Categories::onCategoriesModelChanged));
133+ m_signals << m_unityScope->categories()->model.changed.connect(sigc::mem_fun(this, &Categories::onCategoriesModelChanged));
134+ m_signals << m_unityScope->category_order.changed.connect(sigc::mem_fun(this, &Categories::onCategoryOrderChanged));
106}
135}
107
136
108void
137void
@@ -110,7 +139,9 @@ Categories::onCountChanged()
110{
139{
111 CategoryResults* results = qobject_cast<CategoryResults*>(sender());
140 CategoryResults* results = qobject_cast<CategoryResults*>(sender());
112 if (results) {
141 if (results) {
142+ if (!m_updatedCategories.contains(results->categoryIndex())) {
113− m_updatedCategories << results->categoryIndex();
143+ m_updatedCategories << results->categoryIndex();
144+ }
114 m_timer.start();
145 m_timer.start();
115 }
146 }
116}
147}
@@ -141,7 +172,8 @@ Categories::onEmitCountChanged()
141 roles.append(Categories::RoleCount);
172 roles.append(Categories::RoleCount);
142 Q_FOREACH(int categoryIndex, m_updatedCategories) {
173 Q_FOREACH(int categoryIndex, m_updatedCategories) {
143 if (!m_results.contains(categoryIndex)) continue;
174 if (!m_results.contains(categoryIndex)) continue;
175+ const int realIndex = m_categoryOrder.indexOf(categoryIndex);
144− QModelIndex changedIndex = index(categoryIndex);
176+ const QModelIndex changedIndex = index(realIndex);
145 Q_EMIT dataChanged(changedIndex, changedIndex, roles);
177 Q_EMIT dataChanged(changedIndex, changedIndex, roles);
146 }
178 }
147 m_updatedCategories.clear();
179 m_updatedCategories.clear();
@@ -195,43 +227,70 @@ Categories::data(const QModelIndex& index, int role) const
195 return QVariant();
227 return QVariant();
196 }
228 }
197
229
230+ if (m_categoryOrder.size() != rowCount())
231+ {
232+ // populate category order vector with 0..n
233+ m_categoryOrder.clear();
234+ const unsigned int lim = rowCount();
235+ for (unsigned int i = 0; i<lim; i++) {
236+ m_categoryOrder.append(i);
237+ }
238+ }
239+
240+ int realRow = index.row();
241+ if (index.row() < m_categoryOrder.size()) {
242+ realRow = m_categoryOrder[index.row()];
243+ } else {
244+ qWarning() << "Invalid index" << index.row();
245+ return QVariant();
246+ }
247+
248+ const QModelIndex realIndex = createIndex(realRow, index.column());
249+
198 switch (role) {
250 switch (role) {
199 case RoleCategoryId:
251 case RoleCategoryId:
200− return DeeListModel::data(index, CategoryColumn::ID);
252+ return DeeListModel::data(realIndex, CategoryColumn::ID);
201 case RoleName:
253 case RoleName:
202− return DeeListModel::data(index, CategoryColumn::DISPLAY_NAME);
254+ return DeeListModel::data(realIndex, CategoryColumn::DISPLAY_NAME);
203 case RoleIcon:
255 case RoleIcon:
204− return DeeListModel::data(index, CategoryColumn::ICON_HINT);
256+ return DeeListModel::data(realIndex, CategoryColumn::ICON_HINT);
205 case RoleRenderer:
257 case RoleRenderer:
206− return DeeListModel::data(index, CategoryColumn::RENDERER_NAME);
258+ return DeeListModel::data(realIndex, CategoryColumn::RENDERER_NAME);
207 case RoleContentType:
259 case RoleContentType:
208 {
260 {
209− auto hints = DeeListModel::data(index, CategoryColumn::HINTS).toHash();
261+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
210 return hints.contains("content-type") ? hints["content-type"] : QVariant(QString("default"));
262 return hints.contains("content-type") ? hints["content-type"] : QVariant(QString("default"));
211 }
263 }
264+ case RoleRendererHint:
265+ {
266+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
267+ return hints.contains("renderer-hint") ? hints["renderer-hint"] : QVariant(QString());
268+ }
212 case RoleProgressSource:
269 case RoleProgressSource:
213 {
270 {
214− auto hints = DeeListModel::data(index, CategoryColumn::HINTS).toHash();
271+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
215 return hints.contains("progress-source") ? hints["progress-source"] : QVariant();
272 return hints.contains("progress-source") ? hints["progress-source"] : QVariant();
216 }
273 }
217 case RoleHints:
274 case RoleHints:
218− return DeeListModel::data(index, CategoryColumn::HINTS);
275+ return DeeListModel::data(realIndex, CategoryColumn::HINTS);
219 case RoleResults:
276 case RoleResults:
220 if (m_overriddenCategories.size() > 0)
277 if (m_overriddenCategories.size() > 0)
221 {
278 {
222− auto id = DeeListModel::data(index, CategoryColumn::ID).toString();
279+ auto id = DeeListModel::data(realIndex, CategoryColumn::ID).toString();
223 if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
280 if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
224 return QVariant::fromValue(m_overriddenCategories[id]);
281 return QVariant::fromValue(m_overriddenCategories[id]);
225 }
282 }
226− return QVariant::fromValue(getResults(index.row()));
283+ return QVariant::fromValue(getResults(realRow));
227 case RoleCount:
284 case RoleCount:
228 if (m_overriddenCategories.size() > 0)
285 if (m_overriddenCategories.size() > 0)
229 {
286 {
230− auto id = DeeListModel::data(index, CategoryColumn::ID).toString();
287+ auto id = DeeListModel::data(realIndex, CategoryColumn::ID).toString();
231 if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
288 if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
289+ {
232 return QVariant::fromValue(m_overriddenCategories[id]->rowCount());
290 return QVariant::fromValue(m_overriddenCategories[id]->rowCount());
291+ }
233 }
292 }
234− return QVariant::fromValue(getResults(index.row())->rowCount());
293+ return QVariant::fromValue(getResults(realRow)->rowCount());
235 default:
294 default:
236 return QVariant();
295 return QVariant();
237 }
296 }
plugins/Unity/categories.h+11−1
@@ -32,6 +32,9 @@
32#include <QSet>
32#include <QSet>
33#include <QTimer>
33#include <QTimer>
34
34
35+// local
36+#include "signalslist.h"
37+
35class Categories : public DeeListModel
38class Categories : public DeeListModel
36{
39{
37 Q_OBJECT
40 Q_OBJECT
@@ -47,6 +50,7 @@ public:
47 RoleIcon,
50 RoleIcon,
48 RoleRenderer,
51 RoleRenderer,
49 RoleContentType,
52 RoleContentType,
53+ RoleRendererHint,
50 RoleProgressSource,
54 RoleProgressSource,
51 RoleHints,
55 RoleHints,
52 RoleResults,
56 RoleResults,
@@ -70,6 +74,7 @@ private Q_SLOTS:
70
74
71private:
75private:
72 void onCategoriesModelChanged(unity::glib::Object<DeeModel> model);
76 void onCategoriesModelChanged(unity::glib::Object<DeeModel> model);
77+ void onCategoryOrderChanged(const std::vector<unsigned int>& cat_order);
73
78
74 DeeListModel* getResults(int index) const;
79 DeeListModel* getResults(int index) const;
75
80
@@ -79,7 +84,12 @@ private:
79 QHash<int, QByteArray> m_roles;
84 QHash<int, QByteArray> m_roles;
80 QMap<QString, QAbstractItemModel*> m_overriddenCategories;
85 QMap<QString, QAbstractItemModel*> m_overriddenCategories;
81 mutable QMap<int, DeeListModel*> m_results;
86 mutable QMap<int, DeeListModel*> m_results;
82− sigc::connection m_categoriesChangedConnection;
87+ SignalsList m_signals;
88+
89+ /* Category order array contains indices of actual categories in the underlying DeeListModel.
90+ It's used internally to reflect category order reported by scope.
91+ */
92+ mutable QList<unsigned int> m_categoryOrder;
83};
93};
84
94
85#endif // CATEGORIES_H
95#endif // CATEGORIES_H
plugins/Unity/categoryresults.cpp+22
@@ -46,6 +46,7 @@ CategoryResults::CategoryResults(QObject* parent)
46 m_roles[CategoryResults::RoleComment] = "comment";
46 m_roles[CategoryResults::RoleComment] = "comment";
47 m_roles[CategoryResults::RoleDndUri] = "dndUri";
47 m_roles[CategoryResults::RoleDndUri] = "dndUri";
48 m_roles[CategoryResults::RoleMetadata] = "metadata";
48 m_roles[CategoryResults::RoleMetadata] = "metadata";
49+ m_roles[CategoryResults::RoleRendererHints] = "rendererHints";
49}
50}
50
51
51int CategoryResults::categoryIndex() const
52int CategoryResults::categoryIndex() const
@@ -79,6 +80,14 @@ CategoryResults::data(const QModelIndex& index, int role) const
79 return DeeListModel::data(index, ResultsColumn::URI);
80 return DeeListModel::data(index, ResultsColumn::URI);
80 case RoleIconHint: {
81 case RoleIconHint: {
81 QString giconString(DeeListModel::data(index, ResultsColumn::ICON_HINT).toString());
82 QString giconString(DeeListModel::data(index, ResultsColumn::ICON_HINT).toString());
83+ if (giconString.isEmpty()) {
84+ QString mimetype(DeeListModel::data(index, ResultsColumn::MIMETYPE).toString());
85+ QString uri(DeeListModel::data(index, ResultsColumn::URI).toString());
86+ QString thumbnailerUri(uriToThumbnailerProviderString(uri, mimetype, DeeListModel::data(index, ResultsColumn::METADATA).toHash()));
87+ if (!thumbnailerUri.isNull()) {
88+ return QVariant::fromValue(thumbnailerUri);
89+ }
90+ }
82 return QVariant::fromValue(gIconToDeclarativeImageProviderString(giconString));
91 return QVariant::fromValue(gIconToDeclarativeImageProviderString(giconString));
83 }
92 }
84 case RoleCategory:
93 case RoleCategory:
@@ -93,6 +102,19 @@ CategoryResults::data(const QModelIndex& index, int role) const
93 return DeeListModel::data(index, ResultsColumn::DND_URI);
102 return DeeListModel::data(index, ResultsColumn::DND_URI);
94 case RoleMetadata:
103 case RoleMetadata:
95 return DeeListModel::data(index, ResultsColumn::METADATA);
104 return DeeListModel::data(index, ResultsColumn::METADATA);
105+ case RoleRendererHints:
106+ {
107+ QVariantHash hash(DeeListModel::data(index, ResultsColumn::METADATA).toHash());
108+ if (hash.contains("content")) {
109+ QVariantMap hints;
110+ QVariantHash innerHash(hash["content"].toHash());
111+ if (innerHash.contains("scope_disabled")) {
112+ hints["scope_disabled"] = innerHash["scope_disabled"];
113+ }
114+ return hints.empty() ? QVariant() : QVariant::fromValue(hints);
115+ }
116+ return QVariant();
117+ }
96 default:
118 default:
97 return QVariant();
119 return QVariant();
98 }
120 }
plugins/Unity/categoryresults.h+2−1
@@ -43,7 +43,8 @@ public:
43 RoleTitle,
43 RoleTitle,
44 RoleComment,
44 RoleComment,
45 RoleDndUri,
45 RoleDndUri,
46− RoleMetadata
46+ RoleMetadata,
47+ RoleRendererHints
47 };
48 };
48
49
49 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
50 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
plugins/Unity/iconutils.cpp+33
@@ -24,6 +24,8 @@
24#include "iconutils.h"
24#include "iconutils.h"
25
25
26#define BASE_THEME_ICON_URI "image://theme/"
26#define BASE_THEME_ICON_URI "image://theme/"
27+#define BASE_THUMBNAILER_URI "image://thumbnailer/"
28+#define BASE_ALBUMART_URI "image://albumart/"
27
29
28QString gIconToDeclarativeImageProviderString(QString const &giconString)
30QString gIconToDeclarativeImageProviderString(QString const &giconString)
29{
31{
@@ -89,3 +91,34 @@ QString gIconToDeclarativeImageProviderString(QString const &giconString)
89
91
90 return result;
92 return result;
91}
93}
94+
95+QString uriToThumbnailerProviderString(QString const &uri, QString const &mimetype, QVariantHash const &metadata)
96+{
97+ if (uri.startsWith(QLatin1String("file:///"))) {
98+ bool isAudio = mimetype.startsWith(QLatin1String("audio/"));
99+ QString thumbnailerUri;
100+ if (isAudio) {
101+ thumbnailerUri = BASE_ALBUMART_URI;
102+ if (metadata.contains("content")) {
103+ QVariantHash contentHash = metadata["content"].toHash();
104+ if (contentHash.contains("content")) { // nested content in Home?
105+ contentHash = contentHash["content"].toHash();
106+ }
107+ if (contentHash.contains("album") &&
108+ contentHash.contains("artist")) {
109+ const QString album = contentHash["album"].toString();
110+ const QString artist = contentHash["artist"].toString();
111+ thumbnailerUri.append(QUrl::toPercentEncoding(artist));
112+ thumbnailerUri.append("/");
113+ thumbnailerUri.append(QUrl::toPercentEncoding(album));
114+ }
115+ }
116+ } else {
117+ thumbnailerUri = BASE_THUMBNAILER_URI;
118+ thumbnailerUri.append(uri.midRef(7));
119+ }
120+ return thumbnailerUri;
121+ }
122+
123+ return QString::null;
124+}
plugins/Unity/iconutils.h+2
@@ -21,7 +21,9 @@
21#define ICONUTILS_H
21#define ICONUTILS_H
22
22
23#include <QString>
23#include <QString>
24+#include <QVariant>
24
25
25QString gIconToDeclarativeImageProviderString(QString const &giconString);
26QString gIconToDeclarativeImageProviderString(QString const &giconString);
27+QString uriToThumbnailerProviderString(QString const &uri, QString const &mimetype, QVariantHash const &metadata);
26
28
27#endif
29#endif
plugins/Unity/preview.cpp+10−14
@@ -106,20 +106,16 @@ QVariantMap Preview::infoHintsHash() const
106QString Preview::image() const
106QString Preview::image() const
107{
107{
108 if (m_unityPreview) {
108 if (m_unityPreview) {
109+ if (m_unityPreview->image() != nullptr) {
109− auto giconString = g_icon_to_string(m_unityPreview->image());
110+ auto giconString = g_icon_to_string(m_unityPreview->image());
110− QString result(gIconToDeclarativeImageProviderString(QString::fromUtf8(giconString)));
111+ QString result(gIconToDeclarativeImageProviderString(QString::fromUtf8(giconString)));
111− g_free(giconString);
112+ g_free(giconString);
112− return result;
113+ return result;
113− } else {
114+ } else {
114− qWarning() << "Preview not set";
115− }
116− return QString::null;
117−}
118−
119−QString Preview::imageSourceUri() const
120−{
121− if (m_unityPreview) {
122− return QString::fromStdString(m_unityPreview->image_source_uri());
115+ QString sourceMedia(QString::fromStdString(m_unityPreview->image_source_uri()));
116+ QString thumbnailUri(uriToThumbnailerProviderString(sourceMedia, m_result->mimeType(), m_result->metadata().toHash()));
117+ if (!thumbnailUri.isNull()) return thumbnailUri;
118+ }
123 } else {
119 } else {
124 qWarning() << "Preview not set";
120 qWarning() << "Preview not set";
125 }
121 }
plugins/Unity/preview.h−2
@@ -47,7 +47,6 @@ class Q_DECL_EXPORT Preview : public QObject
47 Q_PROPERTY(QVariant infoHints READ infoHints NOTIFY previewChanged)
47 Q_PROPERTY(QVariant infoHints READ infoHints NOTIFY previewChanged)
48 Q_PROPERTY(QVariantMap infoMap READ infoHintsHash NOTIFY previewChanged)
48 Q_PROPERTY(QVariantMap infoMap READ infoHintsHash NOTIFY previewChanged)
49 Q_PROPERTY(QString image READ image NOTIFY previewChanged)
49 Q_PROPERTY(QString image READ image NOTIFY previewChanged)
50− Q_PROPERTY(QString imageSourceUri READ imageSourceUri NOTIFY previewChanged)
51 Q_PROPERTY(QVariant result READ result NOTIFY previewChanged)
50 Q_PROPERTY(QVariant result READ result NOTIFY previewChanged)
52
51
53public:
52public:
@@ -62,7 +61,6 @@ public:
62 QVariant infoHints();
61 QVariant infoHints();
63 QVariantMap infoHintsHash() const;
62 QVariantMap infoHintsHash() const;
64 QString image() const;
63 QString image() const;
65− QString imageSourceUri() const;
66 QVariant result() const;
64 QVariant result() const;
67
65
68 Q_INVOKABLE void execute(const QString& actionId, const QHash<QString, QVariant>& hints);
66 Q_INVOKABLE void execute(const QString& actionId, const QHash<QString, QVariant>& hints);
plugins/Unity/scope.cpp+67−5
@@ -33,14 +33,18 @@
33#include <QQmlEngine>
33#include <QQmlEngine>
34
34
35#include <UnityCore/Variant.h>
35#include <UnityCore/Variant.h>
36+#include <UnityCore/GLibWrapper.h>
36
37
37#include <libintl.h>
38#include <libintl.h>
38#include <glib.h>
39#include <glib.h>
39
40
40Scope::Scope(QObject *parent) : QObject(parent)
41Scope::Scope(QObject *parent) : QObject(parent)
41 , m_formFactor("phone")
42 , m_formFactor("phone")
43+ , m_searchInProgress(false)
42{
44{
43 m_categories.reset(new Categories(this));
45 m_categories.reset(new Categories(this));
46+
47+ connect(this, &Scope::isActiveChanged, this, &Scope::scopeIsActiveChanged);
44}
48}
45
49
46QString Scope::id() const
50QString Scope::id() const
@@ -68,6 +72,11 @@ QString Scope::searchHint() const
68 return QString::fromStdString(m_unityScope->search_hint());
72 return QString::fromStdString(m_unityScope->search_hint());
69}
73}
70
74
75+bool Scope::searchInProgress() const
76+{
77+ return m_searchInProgress;
78+}
79+
71bool Scope::visible() const
80bool Scope::visible() const
72{
81{
73 return m_unityScope->visible();
82 return m_unityScope->visible();
@@ -103,6 +112,11 @@ QString Scope::formFactor() const
103 return m_formFactor;
112 return m_formFactor;
104}
113}
105
114
115+bool Scope::isActive() const
116+{
117+ return m_isActive;
118+}
119+
106Filters* Scope::filters() const
120Filters* Scope::filters() const
107{
121{
108 return m_filters.get();
122 return m_filters.get();
@@ -115,10 +129,17 @@ void Scope::setSearchQuery(const QString& search_query)
115 string ("") and m_searchQuery is the null string,
129 string ("") and m_searchQuery is the null string,
116 search_query != m_searchQuery is still true.
130 search_query != m_searchQuery is still true.
117 */
131 */
132+ using namespace std::placeholders;
133+
118 if (m_searchQuery.isNull() || search_query != m_searchQuery) {
134 if (m_searchQuery.isNull() || search_query != m_searchQuery) {
119 m_searchQuery = search_query;
135 m_searchQuery = search_query;
136+ m_cancellable.Renew();
120− m_unityScope->Search(search_query.toStdString(), sigc::mem_fun(this, &Scope::searchFinished));
137+ m_unityScope->Search(search_query.toStdString(), std::bind(&Scope::onSearchFinished, this, _1, _2, _3), m_cancellable);
121 Q_EMIT searchQueryChanged();
138 Q_EMIT searchQueryChanged();
139+ if (!m_searchInProgress) {
140+ m_searchInProgress = true;
141+ Q_EMIT searchInProgressChanged();
142+ }
122 }
143 }
123}
144}
124
145
@@ -140,6 +161,13 @@ void Scope::setFormFactor(const QString& form_factor) {
140 }
161 }
141}
162}
142
163
164+void Scope::setActive(const bool active) {
165+ if (active != m_isActive) {
166+ m_isActive = active;
167+ Q_EMIT isActiveChanged(m_isActive);
168+ }
169+}
170+
143unity::dash::LocalResult Scope::createLocalResult(const QVariant &uri, const QVariant &icon_hint,
171unity::dash::LocalResult Scope::createLocalResult(const QVariant &uri, const QVariant &icon_hint,
144 const QVariant &category, const QVariant &result_type,
172 const QVariant &category, const QVariant &result_type,
145 const QVariant &mimetype, const QVariant &title,
173 const QVariant &mimetype, const QVariant &title,
@@ -294,8 +322,7 @@ void Scope::setUnityScope(const unity::dash::Scope::Ptr& scope)
294 m_unityScope->visible.changed.connect(sigc::mem_fun(this, &Scope::visibleChanged));
322 m_unityScope->visible.changed.connect(sigc::mem_fun(this, &Scope::visibleChanged));
295 m_unityScope->shortcut.changed.connect(sigc::mem_fun(this, &Scope::shortcutChanged));
323 m_unityScope->shortcut.changed.connect(sigc::mem_fun(this, &Scope::shortcutChanged));
296 m_unityScope->connected.changed.connect(sigc::mem_fun(this, &Scope::connectedChanged));
324 m_unityScope->connected.changed.connect(sigc::mem_fun(this, &Scope::connectedChanged));
297− /* Signals forwarding */
325+ m_unityScope->results_dirty.changed.connect(sigc::mem_fun(this, &Scope::resultsDirtyToggled));
298− connect(this, SIGNAL(searchFinished(const std::string &, unity::glib::HintsMap const &, unity::glib::Error const &)), SLOT(onSearchFinished(const std::string &, unity::glib::HintsMap const &)));
299
326
300 /* FIXME: signal should be forwarded instead of calling the handler directly */
327 /* FIXME: signal should be forwarded instead of calling the handler directly */
301 m_unityScope->activated.connect(sigc::mem_fun(this, &Scope::onActivated));
328 m_unityScope->activated.connect(sigc::mem_fun(this, &Scope::onActivated));
@@ -316,18 +343,53 @@ unity::dash::Scope::Ptr Scope::unityScope() const
316
343
317void Scope::synchronizeStates()
344void Scope::synchronizeStates()
318{
345{
346+ using namespace std::placeholders;
347+
319 if (connected()) {
348 if (connected()) {
320 /* Forward local states to m_unityScope */
349 /* Forward local states to m_unityScope */
321 if (!m_searchQuery.isNull()) {
350 if (!m_searchQuery.isNull()) {
351+ m_cancellable.Renew();
322− m_unityScope->Search(m_searchQuery.toStdString());
352+ m_unityScope->Search(m_searchQuery.toStdString(), std::bind(&Scope::onSearchFinished, this, _1, _2, _3), m_cancellable);
353+ if (!m_searchInProgress) {
354+ m_searchInProgress = true;
355+ Q_EMIT searchInProgressChanged();
356+ }
323 }
357 }
324 }
358 }
325}
359}
326
360
361+void Scope::scopeIsActiveChanged()
362+{
363+ if (!isActive() || !m_unityScope || !m_unityScope->results_dirty()) return;
364+
365+ // force new search
366+ synchronizeStates();
367+}
368+
369+void Scope::resultsDirtyToggled(bool results_dirty)
370+{
371+ if (!results_dirty || !isActive()) return;
372+
373+ // force new search
374+ synchronizeStates();
375+}
376+
327−void Scope::onSearchFinished(const std::string& /* query */, unity::glib::HintsMap const &hints)
377+void Scope::onSearchFinished(std::string const& /* query */, unity::glib::HintsMap const& hints, unity::glib::Error const& err)
328{
378{
329 QString hint;
379 QString hint;
330
380
381+ GError* error = const_cast<unity::glib::Error&>(err);
382+
383+ if (!err || !g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
384+ if (m_searchInProgress) {
385+ m_searchInProgress = false;
386+ Q_EMIT searchInProgressChanged();
387+ }
388+ } else {
389+ // no need to check the results hint, we're still searching
390+ return;
391+ }
392+
331 if (!m_unityScope->results()->count()) {
393 if (!m_unityScope->results()->count()) {
332 unity::glib::HintsMap::const_iterator it = hints.find("no-results-hint");
394 unity::glib::HintsMap::const_iterator it = hints.find("no-results-hint");
333 if (it != hints.end()) {
395 if (it != hints.end()) {
plugins/Unity/scope.h+14−2
@@ -28,6 +28,7 @@
28// libunity-core
28// libunity-core
29#include <UnityCore/Scope.h>
29#include <UnityCore/Scope.h>
30#include <UnityCore/Results.h>
30#include <UnityCore/Results.h>
31+#include <UnityCore/GLibWrapper.h>
31
32
32#include "categories.h"
33#include "categories.h"
33#include "filters.h"
34#include "filters.h"
@@ -43,6 +44,7 @@ class Scope : public QObject
43 Q_PROPERTY(QString iconHint READ iconHint NOTIFY iconHintChanged)
44 Q_PROPERTY(QString iconHint READ iconHint NOTIFY iconHintChanged)
44 Q_PROPERTY(QString description READ description NOTIFY descriptionChanged)
45 Q_PROPERTY(QString description READ description NOTIFY descriptionChanged)
45 Q_PROPERTY(QString searchHint READ searchHint NOTIFY searchHintChanged)
46 Q_PROPERTY(QString searchHint READ searchHint NOTIFY searchHintChanged)
47+ Q_PROPERTY(bool searchInProgress READ searchInProgress NOTIFY searchInProgressChanged)
46 Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
48 Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
47 Q_PROPERTY(QString shortcut READ shortcut NOTIFY shortcutChanged)
49 Q_PROPERTY(QString shortcut READ shortcut NOTIFY shortcutChanged)
48 Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
50 Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
@@ -52,6 +54,7 @@ class Scope : public QObject
52 Q_PROPERTY(QString searchQuery READ searchQuery WRITE setSearchQuery NOTIFY searchQueryChanged)
54 Q_PROPERTY(QString searchQuery READ searchQuery WRITE setSearchQuery NOTIFY searchQueryChanged)
53 Q_PROPERTY(QString noResultsHint READ noResultsHint WRITE setNoResultsHint NOTIFY noResultsHintChanged)
55 Q_PROPERTY(QString noResultsHint READ noResultsHint WRITE setNoResultsHint NOTIFY noResultsHintChanged)
54 Q_PROPERTY(QString formFactor READ formFactor WRITE setFormFactor NOTIFY formFactorChanged)
56 Q_PROPERTY(QString formFactor READ formFactor WRITE setFormFactor NOTIFY formFactorChanged)
57+ Q_PROPERTY(bool isActive READ isActive WRITE setActive NOTIFY isActiveChanged)
55
58
56public:
59public:
57 explicit Scope(QObject *parent = 0);
60 explicit Scope(QObject *parent = 0);
@@ -65,16 +68,19 @@ public:
65 bool visible() const;
68 bool visible() const;
66 QString shortcut() const;
69 QString shortcut() const;
67 bool connected() const;
70 bool connected() const;
71+ bool searchInProgress() const;
68 Categories* categories() const;
72 Categories* categories() const;
69 Filters* filters() const;
73 Filters* filters() const;
70 QString searchQuery() const;
74 QString searchQuery() const;
71 QString noResultsHint() const;
75 QString noResultsHint() const;
72 QString formFactor() const;
76 QString formFactor() const;
77+ bool isActive() const;
73
78
74 /* setters */
79 /* setters */
75 void setSearchQuery(const QString& search_query);
80 void setSearchQuery(const QString& search_query);
76 void setNoResultsHint(const QString& hint);
81 void setNoResultsHint(const QString& hint);
77 void setFormFactor(const QString& form_factor);
82 void setFormFactor(const QString& form_factor);
83+ void setActive(const bool);
78
84
79 Q_INVOKABLE void activate(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
85 Q_INVOKABLE void activate(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
80 const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
86 const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
@@ -95,14 +101,15 @@ Q_SIGNALS:
95 void iconHintChanged(const std::string&);
101 void iconHintChanged(const std::string&);
96 void descriptionChanged(const std::string&);
102 void descriptionChanged(const std::string&);
97 void searchHintChanged(const std::string&);
103 void searchHintChanged(const std::string&);
104+ void searchInProgressChanged();
98 void visibleChanged(bool);
105 void visibleChanged(bool);
99 void shortcutChanged(const std::string&);
106 void shortcutChanged(const std::string&);
100 void connectedChanged(bool);
107 void connectedChanged(bool);
101 void categoriesChanged();
108 void categoriesChanged();
102− void searchFinished(const std::string&, unity::glib::HintsMap const&, unity::glib::Error const&);
103 void searchQueryChanged();
109 void searchQueryChanged();
104 void noResultsHintChanged();
110 void noResultsHintChanged();
105 void formFactorChanged();
111 void formFactorChanged();
112+ void isActiveChanged(bool);
106 void filtersChanged();
113 void filtersChanged();
107
114
108 // signals triggered by activate(..) or preview(..) requests.
115 // signals triggered by activate(..) or preview(..) requests.
@@ -115,7 +122,8 @@ Q_SIGNALS:
115
122
116private Q_SLOTS:
123private Q_SLOTS:
117 void synchronizeStates();
124 void synchronizeStates();
125+ void scopeIsActiveChanged();
118− void onSearchFinished(const std::string &, unity::glib::HintsMap const &);
126+ void onSearchFinished(std::string const &, unity::glib::HintsMap const &, unity::glib::Error const&);
119
127
120private:
128private:
121 unity::dash::LocalResult createLocalResult(const QVariant &uri, const QVariant &icon_hint,
129 unity::dash::LocalResult createLocalResult(const QVariant &uri, const QVariant &icon_hint,
@@ -126,6 +134,7 @@ private:
126 void onActivated(unity::dash::LocalResult const& result, unity::dash::ScopeHandledType type, unity::glib::HintsMap const& hints);
134 void onActivated(unity::dash::LocalResult const& result, unity::dash::ScopeHandledType type, unity::glib::HintsMap const& hints);
127 void onPreviewReady(unity::dash::LocalResult const& result, unity::dash::Preview::Ptr const& preview);
135 void onPreviewReady(unity::dash::LocalResult const& result, unity::dash::Preview::Ptr const& preview);
128 void fallbackActivate(const QString& uri);
136 void fallbackActivate(const QString& uri);
137+ void resultsDirtyToggled(bool);
129
138
130 unity::dash::Scope::Ptr m_unityScope;
139 unity::dash::Scope::Ptr m_unityScope;
131 std::unique_ptr<Categories> m_categories;
140 std::unique_ptr<Categories> m_categories;
@@ -133,6 +142,9 @@ private:
133 QString m_searchQuery;
142 QString m_searchQuery;
134 QString m_noResultsHint;
143 QString m_noResultsHint;
135 QString m_formFactor;
144 QString m_formFactor;
145+ bool m_isActive;
146+ bool m_searchInProgress;
147+ unity::glib::Cancellable m_cancellable;
136 unity::glib::Cancellable m_previewCancellable;
148 unity::glib::Cancellable m_previewCancellable;
137};
149};
138
150
plugins/Utils/CMakeLists.txt+13−1
@@ -1,27 +1,39 @@
1+# Dependencies
2+include(FindPkgConfig)
3+
4+pkg_search_module(GIO REQUIRED gio-2.0)
5+
1include_directories(
6include_directories(
2 ${CMAKE_CURRENT_SOURCE_DIR}
7 ${CMAKE_CURRENT_SOURCE_DIR}
3 ${CMAKE_CURRENT_BINARY_DIR}
8 ${CMAKE_CURRENT_BINARY_DIR}
4 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
9 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
10+ ${GIO_INCLUDE_DIRS}
5)
11)
6
12
7set(QMLPLUGIN_SRC
13set(QMLPLUGIN_SRC
14+ albumartprovider.cpp
8 applicationpaths.h
15 applicationpaths.h
16+ mediaartcache.cpp
9 qlimitproxymodelqml.cpp
17 qlimitproxymodelqml.cpp
10 qsortfilterproxymodelqml.cpp
18 qsortfilterproxymodelqml.cpp
11 ubuntuwindow.cpp
19 ubuntuwindow.cpp
20+ unitymenumodelpaths.cpp
12 plugin.cpp
21 plugin.cpp
13 )
22 )
14
23
15add_library(Utils-qml SHARED
24add_library(Utils-qml SHARED
16 ${QMLPLUGIN_SRC}
25 ${QMLPLUGIN_SRC}
17 )
26 )
27+
28+target_link_libraries(Utils-qml ${GIO_LDFLAGS})
29+
18# Because this is an internal support library, we want
30# Because this is an internal support library, we want
19# to expose all symbols in it. Consider changing this
31# to expose all symbols in it. Consider changing this
20# either to a static library or just using the
32# either to a static library or just using the
21# files directly in targets.
33# files directly in targets.
22set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
34set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
23
35
24−qt5_use_modules(Utils-qml Qml Quick)
36+qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns)
25
37
26# export the qmldir qmltypes and plugin files
38# export the qmldir qmltypes and plugin files
27export_qmlfiles(Utils Utils)
39export_qmlfiles(Utils Utils)
plugins/Utils/albumartprovider.cppnew file+231
@@ -0,0 +1,231 @@
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: Jussi Pakkanen <jussi.pakkanen@canonical.com>
17+ * Pawel Stolowski <pawel.stolowski@canonical.com>
18+*/
19+
20+#include "albumartprovider.h"
21+#include <QString>
22+#include <QNetworkAccessManager>
23+#include <QEventLoop>
24+#include <QNetworkRequest>
25+#include <QNetworkReply>
26+#include <QXmlQuery>
27+#include <QTemporaryFile>
28+#include <QBuffer>
29+#include <QDebug>
30+#include <QFile>
31+#include <QStringList>
32+#include <QByteArray>
33+#include <QImage>
34+#include <QUrl>
35+
36+using namespace std;
37+
38+const std::string AlbumArtProvider::DEFAULT_ALBUM_ART = "/usr/share/unity/icons/album_missing.png";
39+const std::string AlbumArtProvider::UNITY_LENS_SCHEMA = "com.canonical.Unity.Lenses";
40+
41+AlbumArtProvider::AlbumArtProvider()
42+ : QQuickImageProvider(QQmlImageProviderBase::Image, QQmlImageProviderBase::ForceAsynchronousImageLoading),
43+ m_settings(nullptr)
44+{
45+ auto schemas = g_settings_list_schemas();
46+ if (schemas) {
47+ for (int i = 0; schemas[i]; i++) {
48+ if (g_strcmp0(schemas[i], UNITY_LENS_SCHEMA.c_str()) == 0) {
49+ m_settings = g_settings_new(UNITY_LENS_SCHEMA.c_str());
50+ break;
51+ }
52+ }
53+ }
54+ if (m_settings == nullptr) {
55+ qWarning() << "Missing" << QString::fromStdString(UNITY_LENS_SCHEMA) << "schema";
56+ }
57+}
58+
59+AlbumArtProvider::~AlbumArtProvider()
60+{
61+ if (m_settings)
62+ g_object_unref(m_settings);
63+}
64+
65+std::string AlbumArtProvider::get_lastfm_url(const albuminfo &ai) {
66+ QString artist = QString::fromStdString(ai.artist);
67+ QString album = QString::fromStdString(ai.album);
68+
69+ /// @todo: this is the old API which will probably get axed at some point in the future
70+ /// The new 2.0 API requires an API key, but supports JSON output, etc, so switching
71+ /// to it should be done ASAP.
72+ QString request = QString("http://ws.audioscrobbler.com/1.0/album/%1/%2/info.xml").arg(artist)
73+ .arg(album)
74+ .toHtmlEscaped();
75+ QScopedPointer<QNetworkAccessManager> am(new QNetworkAccessManager);
76+ QNetworkReply *reply = am->get(QNetworkRequest(QUrl(request)));
77+ QEventLoop loop;
78+ QObject::connect(am.data(), &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
79+ loop.exec();
80+
81+ if (reply->error() != QNetworkReply::NoError) {
82+ qWarning() << "Error getting the XML:" << reply->errorString();
83+ return "";
84+ }
85+
86+ QXmlQuery query;
87+ QBuffer tmp;
88+ tmp.setData(reply->readAll());
89+ tmp.open(QIODevice::ReadOnly);
90+ query.bindVariable("reply", &tmp);
91+ query.setQuery("doc($reply)/album/coverart/large[1]/text()");
92+ QString image;
93+ query.evaluateTo(&image);
94+ image = image.trimmed();
95+
96+ // return empty if last.fm tries to offer their default
97+ // fallback artwork
98+ if (image.contains("catalogue/noimage")) {
99+ return "";
100+ }
101+
102+ return image.toStdString();
103+}
104+
105+bool AlbumArtProvider::download_and_store(const std::string &image_url, const std::string &output_file) {
106+ QString url = QString::fromStdString(image_url);
107+ QString fileName = QString::fromStdString(output_file);
108+
109+ QScopedPointer<QNetworkAccessManager> am(new QNetworkAccessManager);
110+ QNetworkReply *reply = am->get(QNetworkRequest(QUrl(url)));
111+ QEventLoop loop;
112+ QObject::connect(am.data(), &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
113+ loop.exec();
114+
115+ if (reply->error() != QNetworkReply::NoError) {
116+ qWarning() << "Error getting the image:" << reply->errorString();
117+ return false;
118+ }
119+
120+ QFile file(fileName);
121+ if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
122+ qWarning() << "Could not open file for writing:" << file.errorString();
123+ return false;
124+ }
125+ if (file.write(reply->readAll()) == -1){
126+ qWarning() << "Could not write the image:" << file.error();
127+ return false;
128+ }
129+
130+ return true;
131+}
132+
133+void AlbumArtProvider::fix_format(const std::string &fname) {
134+ // MediaArtSpec requires jpg. Convert to it if necessary.
135+ FILE *f = fopen(fname.c_str(), "r");
136+ if(!f)
137+ return;
138+ unsigned char buf[2];
139+ fread(buf, 1, 2, f);
140+ fclose(f);
141+ if(buf[0] == 0xff && buf[1] == 0xd8) {
142+ return;
143+ }
144+ QImage im(fname.c_str());
145+ im.save(fname.c_str(), "JPEG");
146+}
147+
148+std::string AlbumArtProvider::get_image(const std::string &artist, const std::string &album) {
149+ albuminfo info;
150+
151+ info.artist = artist;
152+ info.album = album;
153+
154+ if(info.album.empty() || info.artist.empty()) {
155+ return DEFAULT_ALBUM_ART;
156+ }
157+ if(cache.has_art(info.artist, info.album)) {
158+ // Image may have expired from cache between these two lines.
159+ // It might expire before we return. C'est la vie.
160+ return cache.get_art_file(info.artist, info.album);
161+ }
162+
163+ if (m_settings != nullptr && g_strcmp0(g_settings_get_string(m_settings, "remote-content-search"), "all") !=0) {
164+ qDebug() << "Remote content disabled";
165+ return DEFAULT_ALBUM_ART;
166+ }
167+
168+ std::string image_url = get_lastfm_url(info);
169+ if(image_url.empty()) {
170+ return DEFAULT_ALBUM_ART;
171+ }
172+ QTemporaryFile tempFile;
173+ tempFile.open();
174+ tempFile.setAutoRemove(true);
175+ QString fname = tempFile.fileName();
176+ std::string tmpname = fname.toUtf8().data();
177+
178+ if(!download_and_store(image_url, tmpname)) {
179+ return DEFAULT_ALBUM_ART;
180+ }
181+ fix_format(tmpname.c_str());
182+ QFile f(fname);
183+ if(!f.open(QIODevice::ReadWrite)) {
184+ return DEFAULT_ALBUM_ART;
185+ }
186+ QByteArray arr = f.readAll();
187+ f.close();
188+
189+ cache.add_art(info.artist, info.album, arr.data(), arr.size());
190+ try {
191+ std::string res = cache.get_art_file(info.artist, info.album);
192+ if(res.empty())
193+ return DEFAULT_ALBUM_ART;
194+ return res;
195+ } catch(...) {
196+ }
197+ return DEFAULT_ALBUM_ART;
198+}
199+
200+QImage AlbumArtProvider::requestImage(const QString &id, QSize *realSize, const QSize &requestedSize) {
201+ Q_UNUSED(requestedSize)
202+
203+ const QStringList parts = id.split("/");
204+ if (parts.size() != 2) {
205+ qWarning() << "Invalid albumart uri:" << id;
206+ return QImage(QString::fromStdString(DEFAULT_ALBUM_ART));
207+ }
208+ const std::string artist = QUrl::fromPercentEncoding(parts[0].toUtf8()).toStdString();
209+ const std::string album = QUrl::fromPercentEncoding(parts[1].toUtf8()).toStdString();
210+
211+ std::string tgt_path;
212+ try {
213+ tgt_path = get_image(artist, album);
214+ if(!tgt_path.empty()) {
215+ QString tgt(tgt_path.c_str());
216+ QImage image;
217+ image.load(tgt);
218+ // FIXME: Rescale to requested size preserving aspect.
219+ *realSize = image.size();
220+ return image;
221+ }
222+ } catch(std::exception &e) {
223+ qDebug() << "Album art loader failed: " << e.what();
224+ } catch(...) {
225+ qDebug() << "Unknown error when generating image.";
226+ }
227+
228+ QImage fallback(QString::fromStdString(DEFAULT_ALBUM_ART));
229+ *realSize = fallback.size();
230+ return fallback;
231+}
plugins/Utils/albumartprovider.hnew file+56
@@ -0,0 +1,56 @@
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: Jussi Pakkanen <jussi.pakkanen@canonical.com>
17+*/
18+
19+#ifndef ALBUMART_PROVIDER_H_
20+#define ALBUMART_PROVIDER_H_
21+
22+#include <string>
23+#include <stdexcept>
24+#include <QQuickImageProvider>
25+#include <gio/gio.h>
26+
27+#include "mediaartcache.h"
28+
29+struct albuminfo {
30+ std::string artist;
31+ std::string album;
32+};
33+
34+class AlbumArtProvider : public QQuickImageProvider
35+{
36+public:
37+ AlbumArtProvider();
38+ ~AlbumArtProvider();
39+ QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize);
40+
41+ std::string get_image(const std::string &artist, const std::string &album);
42+
43+ const static std::string DEFAULT_ALBUM_ART;
44+ const static std::string UNITY_LENS_SCHEMA;
45+private:
46+ MediaArtCache cache;
47+ GSettings *m_settings;
48+
49+ void fix_format(const std::string &fname);
50+
51+ std::string get_lastfm_url(const albuminfo &ai);
52+
53+ bool download_and_store(const std::string &image_url, const std::string &output_file);
54+};
55+
56+#endif
plugins/Utils/mediaartcache.cppnew file+178
@@ -0,0 +1,178 @@
1+/*
2+ * This file is part of the Ubuntu TV Media Scanner
3+ * Copyright (C) 2012-2013 Canonical Ltd.
4+ *
5+ * This program is free software: you can redistribute it and/or modify
6+ * it under the terms of the GNU Lesser General Public License version 3 as
7+ * published by the Free Software Foundation.
8+ *
9+ * This program is distributed in the hope that it will be useful,
10+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+ * GNU Lesser General Public License for more details.
13+ *
14+ * You should have received a copy of the GNU Lesser General Public License
15+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
16+ *
17+ * Authored by: Jussi Pakkanen <jussi.pakkanen@canonical.com>
18+ */
19+
20+#include"mediaartcache.h"
21+
22+#include<dirent.h>
23+#include<sys/stat.h>
24+#include<fcntl.h>
25+#include<unistd.h>
26+#include<errno.h>
27+#include<stdio.h>
28+#include<string.h>
29+#include<stdlib.h>
30+#include<assert.h>
31+#include<utime.h>
32+
33+#include<glib.h>
34+
35+#include<vector>
36+#include<algorithm>
37+#include<stdexcept>
38+
39+using namespace std;
40+
41+static string md5(const string &str) {
42+ const unsigned char *buf = (const unsigned char *)str.c_str();
43+ char *normalized = g_utf8_normalize((const gchar*)buf, str.size(), G_NORMALIZE_ALL);
44+ string final;
45+ gchar *result;
46+
47+ if(normalized) {
48+ buf = (const unsigned char*)normalized;
49+ }
50+ gssize bytes = str.length();
51+
52+ result = g_compute_checksum_for_data(G_CHECKSUM_MD5, buf, bytes);
53+ final = result;
54+ g_free((gpointer)normalized);
55+ g_free(result);
56+ return final;
57+}
58+
59+MediaArtCache::MediaArtCache() {
60+ string xdg_base = g_get_user_cache_dir();
61+
62+ if (xdg_base == "") {
63+ string s("Could not determine cache dir.");
64+ throw runtime_error(s);
65+ }
66+ int ec = mkdir(xdg_base.c_str(), S_IRUSR | S_IWUSR | S_IXUSR);
67+ if (ec < 0 && errno != EEXIST) {
68+ string s("Could not create base dir.");
69+ throw runtime_error(s);
70+ }
71+ root_dir = xdg_base + "/media-art";
72+ ec = mkdir(root_dir.c_str(), S_IRUSR | S_IWUSR | S_IXUSR);
73+ if (ec < 0 && errno != EEXIST) {
74+ string s("Could not create cache dir.");
75+ throw runtime_error(s);
76+ }
77+}
78+
79+bool MediaArtCache::has_art(const std::string &artist, const std::string &album) const {
80+ string fname = get_art_file(artist, album);
81+ return access(fname.c_str(), R_OK) == 0;
82+}
83+
84+void MediaArtCache::add_art(const std::string &artist, const std::string &album,
85+ char *data, unsigned int datalen) {
86+ string abs_fname = get_full_filename(artist, album);
87+ GError *err = nullptr;
88+ if(!g_file_set_contents(abs_fname.c_str(), data, datalen, &err)) {
89+ string e("Could not write file ");
90+ e += abs_fname;
91+ e += ": ";
92+ e += err->message;
93+ g_error_free(err);
94+ throw runtime_error(e);
95+ }
96+}
97+
98+string MediaArtCache::get_art_file(const std::string &artist, const std::string &album) const {
99+ string abs_fname = get_full_filename(artist, album);
100+
101+ if (access(abs_fname.c_str(), R_OK) == 0) {
102+ utime(abs_fname.c_str(), nullptr); // update access times to current time
103+ return abs_fname;
104+ }
105+ return "";
106+}
107+
108+std::string MediaArtCache::get_full_filename(const std::string &artist, const std::string & album) const {
109+ return root_dir + "/" + compute_base_name(artist, album);
110+}
111+
112+
113+std::string MediaArtCache::compute_base_name(const std::string &artist, const std::string &album) const {
114+ string type = "album";
115+ string h1 = md5(artist);
116+ string h2 = md5(album);
117+ return type + "-" + h1 + "-" + h2 + ".jpg";
118+}
119+
120+
121+void MediaArtCache::clear() const {
122+ DIR *d = opendir(root_dir.c_str());
123+ if(!d) {
124+ string s = "Something went wrong.";
125+ throw runtime_error(s);
126+ }
127+ struct dirent *entry, *de;
128+ entry = (dirent*)malloc(sizeof(dirent) + NAME_MAX);
129+ while(readdir_r(d, entry, &de) == 0 && de) {
130+ string basename = entry->d_name;
131+ if (basename == "." || basename == "..")
132+ continue;
133+ string fname = root_dir + "/" + basename;
134+ if(remove(fname.c_str()) < 0) {
135+ // This is not really an error worth
136+ // halting everything for.
137+ fprintf(stderr, "Could not delete file %s: %s.\n", fname.c_str(),
138+ strerror(errno));
139+ }
140+ }
141+ free(entry);
142+ closedir(d);
143+}
144+
145+void MediaArtCache::prune() {
146+ vector<pair<double, string>> mtimes;
147+ DIR *d = opendir(root_dir.c_str());
148+ if(!d) {
149+ string s = "Something went wrong.";
150+ throw runtime_error(s);
151+ }
152+ struct dirent *entry, *de;
153+ entry = (dirent*)malloc(sizeof(dirent) + NAME_MAX);
154+ while(readdir_r(d, entry, &de) == 0 && de) {
155+ string basename = entry->d_name;
156+ if (basename == "." || basename == "..")
157+ continue;
158+ string fname = root_dir + "/" + basename;
159+ struct stat sbuf;
160+ if(stat(fname.c_str(), &sbuf) != 0) {
161+ continue;
162+ }
163+ // Use mtime because atime is not guaranteed to work if, for example
164+ // the filesystem is mounted with noatime or relatime.
165+ mtimes.push_back(make_pair(sbuf.st_mtim.tv_sec + sbuf.st_mtim.tv_nsec/1000000000.0, fname));
166+ }
167+ free(entry);
168+ closedir(d);
169+ if (mtimes.size() <= MAX_SIZE)
170+ return;
171+ sort(mtimes.begin(), mtimes.end());
172+ for(size_t i=0; i < mtimes.size()-MAX_SIZE; i++) {
173+ if(remove(mtimes[i].second.c_str()) < 0) {
174+ fprintf(stderr, "Could not remove file %s: %s.\n",
175+ mtimes[i].second.c_str(), strerror(errno));
176+ }
177+ }
178+}
plugins/Utils/mediaartcache.hnew file+54
@@ -0,0 +1,54 @@
1+/*
2+ * This file is part of the Ubuntu TV Media Scanner
3+ * Copyright (C) 2012-2013 Canonical Ltd.
4+ *
5+ * This program is free software: you can redistribute it and/or modify
6+ * it under the terms of the GNU Lesser General Public License version 3 as
7+ * published by the Free Software Foundation.
8+ *
9+ * This program is distributed in the hope that it will be useful,
10+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+ * GNU Lesser General Public License for more details.
13+ *
14+ * You should have received a copy of the GNU Lesser General Public License
15+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
16+ *
17+ * Authored by: Jussi Pakkanen <jussi.pakkanen@canonical.com>
18+ */
19+
20+#ifndef MEDIAARTCACHE_H
21+#define MEDIAARTCACHE_H
22+
23+#include<string>
24+
25+/*
26+ * A class to store thumbnails for files according to
27+ * https://wiki.gnome.org/MediaArtStorageSpec
28+ *
29+ * As this class deals mostly with the filesystem, all
30+ * errors are reported with runtime_error exceptions.
31+ */
32+
33+
34+class MediaArtCache {
35+private:
36+ std::string root_dir;
37+
38+ std::string compute_base_name(const std::string &artist, const std::string &album) const;
39+ std::string get_full_filename(const std::string &artist, const std::string & album) const;
40+
41+public:
42+ static const unsigned int MAX_SIZE = 200;
43+
44+ MediaArtCache();
45+ bool has_art(const std::string &artist, const std::string &album) const;
46+ void add_art(const std::string &artist, const std::string &album,
47+ char *data, unsigned int datalen);
48+ std::string get_art_file(const std::string &artist, const std::string &album) const;
49+ void clear() const;
50+ void prune();
51+ std::string get_cache_dir() const { return root_dir; }
52+};
53+
54+#endif
plugins/Utils/plugin.cpp+22−1
@@ -19,15 +19,17 @@
19// Qt
19// Qt
20#include <QtQml/qqml.h>
20#include <QtQml/qqml.h>
21#include <QtQuick/QQuickWindow>
21#include <QtQuick/QQuickWindow>
22−
22+#include <QDebug>
23// self
23// self
24#include "plugin.h"
24#include "plugin.h"
25
25
26// local
26// local
27+#include "albumartprovider.h"
27#include "applicationpaths.h"
28#include "applicationpaths.h"
28#include "qlimitproxymodelqml.h"
29#include "qlimitproxymodelqml.h"
29#include "qsortfilterproxymodelqml.h"
30#include "qsortfilterproxymodelqml.h"
30#include "ubuntuwindow.h"
31#include "ubuntuwindow.h"
32+#include "unitymenumodelpaths.h"
31
33
32static QObject* applicationsPathsSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
34static QObject* applicationsPathsSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
33 Q_UNUSED(engine);
35 Q_UNUSED(engine);
@@ -41,6 +43,25 @@ void UtilsPlugin::registerTypes(const char *uri)
41 qmlRegisterType<QAbstractItemModel>();
43 qmlRegisterType<QAbstractItemModel>();
42 qmlRegisterType<QLimitProxyModelQML>(uri, 0, 1, "LimitProxyModel");
44 qmlRegisterType<QLimitProxyModelQML>(uri, 0, 1, "LimitProxyModel");
43 qmlRegisterType<QSortFilterProxyModelQML>(uri, 0, 1, "SortFilterProxyModel");
45 qmlRegisterType<QSortFilterProxyModelQML>(uri, 0, 1, "SortFilterProxyModel");
46+ qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
44 qmlRegisterExtendedType<QQuickWindow, UbuntuWindow>(uri, 0, 1, "Window");
47 qmlRegisterExtendedType<QQuickWindow, UbuntuWindow>(uri, 0, 1, "Window");
45 qmlRegisterSingletonType<ApplicationPaths>(uri, 0, 1, "ApplicationPaths", applicationsPathsSingleton);
48 qmlRegisterSingletonType<ApplicationPaths>(uri, 0, 1, "ApplicationPaths", applicationsPathsSingleton);
46}
49}
50+
51+void UtilsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
52+{
53+ QQmlExtensionPlugin::initializeEngine(engine, uri);
54+
55+ try
56+ {
57+ engine->addImageProvider(QLatin1String("albumart"), new AlbumArtProvider);
58+ }
59+ catch (const std::runtime_error &e)
60+ {
61+ qWarning() << "Failed to register image provider for albumart:" << e.what();
62+ }
63+ catch (...)
64+ {
65+ qWarning() << "Failed to register image provider for albumart (unknown error)";
66+ }
67+}
plugins/Utils/plugin.h+1
@@ -29,6 +29,7 @@ class UtilsPlugin : public QQmlExtensionPlugin
29
29
30public:
30public:
31 void registerTypes(const char *uri);
31 void registerTypes(const char *uri);
32+ void initializeEngine(QQmlEngine *engine, const char *uri);
32};
33};
33
34
34#endif
35#endif
plugins/Utils/unitymenumodelpaths.cppnew file+182
@@ -0,0 +1,182 @@
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: Nick Dedekind <nick.dedekind@canonical.com>
17+ */
18+
19+
20+#include "unitymenumodelpaths.h"
21+#include <QDBusArgument>
22+
23+static QVariant parseVariantData(const QVariant& var);
24+
25+const QDBusArgument &operator>>(const QDBusArgument &arg, QVariantMap &map)
26+{
27+ arg.beginMap();
28+ map.clear();
29+ while (!arg.atEnd()) {
30+ QString key;
31+ QVariant value;
32+ arg.beginMapEntry();
33+
34+ arg >> key >> value;
35+ map.insertMulti(key, parseVariantData(value)); // re-parse for qdbusargument
36+
37+ arg.endMapEntry();
38+ }
39+ arg.endMap();
40+ return arg;
41+}
42+
43+static QVariant parseVariantData(const QVariant& var) {
44+ if ((int)var.type() == QMetaType::User && var.userType() == qMetaTypeId<QDBusArgument>()) {
45+ QDBusArgument arg(var.value<QDBusArgument>());
46+ if (arg.currentType() == QDBusArgument::MapType) {
47+ QVariantMap map;
48+ arg >> map;
49+ return map;
50+ }
51+ return arg.asVariant();
52+ }
53+
54+ return var;
55+}
56+
57+UnityMenuModelPaths::UnityMenuModelPaths(QObject *parent)
58+ : QObject(parent)
59+{
60+}
61+
62+QVariant UnityMenuModelPaths::source() const
63+{
64+ return m_sourceData;
65+}
66+
67+void UnityMenuModelPaths::setSource(const QVariant& data)
68+{
69+ if (m_sourceData != data) {
70+ m_sourceData = data;
71+ Q_EMIT sourceChanged();
72+
73+ updateData();
74+ }
75+}
76+
77+void UnityMenuModelPaths::updateData()
78+{
79+ QVariantMap dataMap = parseVariantData(m_sourceData).toMap();
80+
81+ if (!m_busNameHint.isEmpty() && dataMap.contains(m_busNameHint)) {
82+ setBusName(dataMap[m_busNameHint].toByteArray());
83+ } else {
84+ setBusName("");
85+ }
86+
87+ if (!m_menuObjectPathHint.isEmpty() && dataMap.contains(m_menuObjectPathHint)) {
88+ setMenuObjectPath(dataMap[m_menuObjectPathHint].toByteArray());
89+ } else {
90+ setMenuObjectPath("");
91+ }
92+
93+ if (!m_actionsHint.isEmpty() && dataMap.contains(m_actionsHint)) {
94+ setActions(dataMap[m_actionsHint].toMap());
95+ } else {
96+ setActions(QVariantMap());
97+ }
98+}
99+
100+QByteArray UnityMenuModelPaths::busName() const
101+{
102+ return m_busName;
103+}
104+
105+void UnityMenuModelPaths::setBusName(const QByteArray &name)
106+{
107+ if (m_busName != name) {
108+ m_busName = name;
109+ Q_EMIT busNameChanged();
110+ }
111+}
112+
113+QVariantMap UnityMenuModelPaths::actions() const
114+{
115+ return m_actions;
116+}
117+
118+void UnityMenuModelPaths::setActions(const QVariantMap &actions)
119+{
120+ if (m_actions != actions) {
121+ m_actions = actions;
122+ Q_EMIT actionsChanged();
123+ }
124+}
125+
126+QByteArray UnityMenuModelPaths::menuObjectPath() const
127+{
128+ return m_menuObjectPath;
129+}
130+
131+void UnityMenuModelPaths::setMenuObjectPath(const QByteArray &path)
132+{
133+ if (m_menuObjectPath != path) {
134+ m_menuObjectPath = path;
135+ Q_EMIT menuObjectPathChanged();
136+ }
137+}
138+
139+QByteArray UnityMenuModelPaths::busNameHint() const
140+{
141+ return m_busNameHint;
142+}
143+
144+void UnityMenuModelPaths::setBusNameHint(const QByteArray &nameHint)
145+{
146+ if (m_busNameHint != nameHint) {
147+ m_busNameHint = nameHint;
148+ Q_EMIT busNameHintChanged();
149+
150+ updateData();
151+ }
152+}
153+
154+QByteArray UnityMenuModelPaths::actionsHint() const
155+{
156+ return m_actionsHint;
157+}
158+
159+void UnityMenuModelPaths::setActionsHint(const QByteArray &actionsHint)
160+{
161+ if (m_actionsHint != actionsHint) {
162+ m_actionsHint = actionsHint;
163+ Q_EMIT actionsHintChanged();
164+
165+ updateData();
166+ }
167+}
168+
169+QByteArray UnityMenuModelPaths::menuObjectPathHint() const
170+{
171+ return m_menuObjectPathHint;
172+}
173+
174+void UnityMenuModelPaths::setMenuObjectPathHint(const QByteArray &pathHint)
175+{
176+ if (m_menuObjectPathHint != pathHint) {
177+ m_menuObjectPathHint = pathHint;
178+ Q_EMIT menuObjectPathHintChanged();
179+
180+ updateData();
181+ }
182+}
plugins/Utils/unitymenumodelpaths.hnew file+82
@@ -0,0 +1,82 @@
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: Nick Dedekind <nick.dedekind@canonical.com>
17+ */
18+
19+#ifndef UNITY_MENU_MODEL_PATHS_H
20+#define UNITY_MENU_MODEL_PATHS_H
21+
22+#include <QVariant>
23+
24+class UnityMenuModelPaths : public QObject
25+{
26+ Q_OBJECT
27+
28+ Q_PROPERTY(QVariant source READ source WRITE setSource NOTIFY sourceChanged)
29+ Q_PROPERTY(QByteArray busName READ busName NOTIFY busNameChanged)
30+ Q_PROPERTY(QVariantMap actions READ actions NOTIFY actionsChanged)
31+ Q_PROPERTY(QByteArray menuObjectPath READ menuObjectPath NOTIFY menuObjectPathChanged)
32+
33+ Q_PROPERTY(QByteArray busNameHint READ busNameHint WRITE setBusNameHint NOTIFY busNameHintChanged)
34+ Q_PROPERTY(QByteArray actionsHint READ actionsHint WRITE setActionsHint NOTIFY actionsHintChanged)
35+ Q_PROPERTY(QByteArray menuObjectPathHint READ menuObjectPathHint WRITE setMenuObjectPathHint NOTIFY menuObjectPathHintChanged)
36+
37+public:
38+ explicit UnityMenuModelPaths(QObject *parent = 0);
39+
40+ QVariant source() const;
41+ void setSource(const QVariant& data);
42+
43+ QByteArray busName() const;
44+ QVariantMap actions() const;
45+ QByteArray menuObjectPath() const;
46+
47+ QByteArray busNameHint() const;
48+ QByteArray actionsHint() const;
49+ QByteArray menuObjectPathHint() const;
50+
51+Q_SIGNALS:
52+ void sourceChanged();
53+ void busNameChanged();
54+ void actionsChanged();
55+ void menuObjectPathChanged();
56+
57+ void busNameHintChanged();
58+ void actionsHintChanged();
59+ void menuObjectPathHintChanged();
60+
61+private:
62+ void setBusName(const QByteArray &name);
63+ void setActions(const QVariantMap& actions);
64+ void setMenuObjectPath(const QByteArray &path);
65+
66+ void setBusNameHint(const QByteArray& nameHint);
67+ void setActionsHint(const QByteArray &actionsHint);
68+ void setMenuObjectPathHint(const QByteArray &pathHint);
69+
70+ void updateData();
71+
72+ QVariant m_sourceData;
73+ QByteArray m_busName;
74+ QVariantMap m_actions;
75+ QByteArray m_menuObjectPath;
76+
77+ QByteArray m_busNameHint;
78+ QByteArray m_actionsHint;
79+ QByteArray m_menuObjectPathHint;
80+};
81+
82+#endif // UNITY_MENU_MODEL_PATHS_H
po/ar.po+43−47
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16750)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,88 +87,76 @@ msgstr "ويكيبيديا"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "يوتيوب"
88msgstr "يوتيوب"
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92msgstr ""
92msgstr ""
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96msgstr ""
96msgstr ""
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100msgstr ""
100msgstr ""
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104msgstr ""
104msgstr ""
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
108msgstr ""
109
109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111msgid "Close"
111msgid "Close"
112msgstr ""
112msgstr ""
113
113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
116msgstr ""
116msgstr ""
117
117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
119msgid "Left edge"
120msgstr ""
120msgstr ""
121
121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
124msgstr ""
125
125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127msgid "Well done"
127msgid "Well done"
128msgstr ""
128msgstr ""
129
129
130−#: Components/EdgeDemo.qml:218
130+#: Components/EdgeDemo.qml:227
131+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132msgstr ""
134msgstr ""
133
135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135msgid "Recent searches"
137msgid "Recent searches"
136msgstr "عمليات البحث الأخيرة"
138msgstr "عمليات البحث الأخيرة"
137
139
138#. TRANSLATORS: Number of persons who rated this app
140#. TRANSLATORS: Number of persons who rated this app
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
143#, qt-format
141msgid "(%1)"
144msgid "(%1)"
142msgstr ""
145msgstr ""
143
146
144#. TRANSLATORS: Number of persons who wrote reviews for this app
147#. TRANSLATORS: Number of persons who wrote reviews for this app
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
150#, qt-format
147msgid "%1 review"
151msgid "%1 review"
148msgid_plural "%1 reviews"
152msgid_plural "%1 reviews"
149msgstr[0] ""
153msgstr[0] ""
150msgstr[1] ""
154msgstr[1] ""
151
155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
157msgid "Rate this"
154msgstr ""
158msgstr ""
155
159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
161msgid "Featured"
174msgstr "المميز"
162msgstr "المميز"
@@ -197,19 +185,23 @@ msgstr "الشائع على الإنترنت"
197msgid "Videos"
185msgid "Videos"
198msgstr "فيديوهات"
186msgstr "فيديوهات"
199
187
200−#: Dash/Video/VideoPreview.qml:130
188+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
202−msgstr "أخرجه:"
194+msgstr ""
203
195
204−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:121
205−msgid "Starring:"
197+msgid "Send"
206−msgstr "النجوم:"
198+msgstr ""
207
199
208−#: Dash/Video/VideoPreview.qml:176
200+#: Dash/Previews/Reviews.qml:139
209−msgid "Author:"
201+msgid "Comments:"
210−msgstr "المؤلف:"
202+msgstr ""
211
203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
205msgid "Emergency Call"
214msgstr ""
206msgstr ""
215
207
@@ -246,11 +238,15 @@ msgstr "تتكلم الآن..."
246msgid "Search"
238msgid "Search"
247msgstr "ابحث"
239msgstr "ابحث"
248
240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
242msgid "Sorry, there is nothing that matches your search."
251msgstr "عذراً، لا يوجد ما يطابق بحثك."
243msgstr "عذراً، لا يوجد ما يطابق بحثك."
252
244
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
253−#: Shell.qml:429
249+#: Shell.qml:453
254#, qt-format
250#, qt-format
255msgid "Please enter %1"
251msgid "Please enter %1"
256msgstr ""
252msgstr ""
po/ast.ponew file+255
@@ -0,0 +1,255 @@
1+# Asturian translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-03 14:02+0000\n"
12+"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
13+"Language-Team: Asturian <ast@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
20+
21+#: Applications/applications.js:23
22+msgid "Phone"
23+msgstr "Teléfonu"
24+
25+#: Applications/applications.js:29
26+msgid "Camera"
27+msgstr "Cámara"
28+
29+#: Applications/applications.js:35
30+msgid "Gallery"
31+msgstr "Galería"
32+
33+#: Applications/applications.js:40
34+msgid "Facebook"
35+msgstr "Facebook"
36+
37+#: Applications/applications.js:46
38+msgid "Browser"
39+msgstr "Navegador"
40+
41+#: Applications/applications.js:51
42+msgid "Twitter"
43+msgstr "Twitter"
44+
45+#: Applications/applications.js:57
46+msgid "GMail"
47+msgstr "GMail"
48+
49+#: Applications/applications.js:62
50+msgid "Weather"
51+msgstr "Meteoroloxía"
52+
53+#: Applications/applications.js:68
54+msgid "Notepad"
55+msgstr "Bloc de notes"
56+
57+#: Applications/applications.js:74
58+msgid "Calendar"
59+msgstr "Calendariu"
60+
61+#: Applications/applications.js:80
62+msgid "Media Player"
63+msgstr "Reproductor multimedia"
64+
65+#: Applications/applications.js:86
66+msgid "Evernote"
67+msgstr "Evernote"
68+
69+#: Applications/applications.js:91
70+msgid "Map"
71+msgstr "Map"
72+
73+#: Applications/applications.js:96
74+msgid "Pinterest"
75+msgstr "Pinterest"
76+
77+#: Applications/applications.js:101
78+msgid "SoundCloud"
79+msgstr "SoundCloud"
80+
81+#: Applications/applications.js:106
82+msgid "Wikipedia"
83+msgstr "Wikipedia"
84+
85+#: Applications/applications.js:111
86+msgid "YouTube"
87+msgstr "YouTube"
88+
89+#: Components/EdgeDemoOverlay.qml:149
90+msgid "Skip intro"
91+msgstr "Omitir la intro"
92+
93+#: Components/EdgeDemo.qml:112
94+msgid "Right edge"
95+msgstr "Berbesu drechu"
96+
97+#: Components/EdgeDemo.qml:113
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr "Esliza'l deu dende'l berbesu drechu pa desbloquiar el teléfonu"
100+
101+#: Components/EdgeDemo.qml:144
102+msgid "Top edge"
103+msgstr "Berbesu superior"
104+
105+#: Components/EdgeDemo.qml:145
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr "Esliza'l deu dende'l berbesu superior p'acceder a los menús"
108+
109+#: Components/EdgeDemo.qml:170
110+msgid "Close"
111+msgstr "Zarrar"
112+
113+#: Components/EdgeDemo.qml:171
114+msgid "Swipe up again to close the settings screen"
115+msgstr "Esliza hacia arriba pa zarrar la pantalla d'axustes"
116+
117+#: Components/EdgeDemo.qml:198
118+msgid "Left edge"
119+msgstr "Berbesu esquierdu"
120+
121+#: Components/EdgeDemo.qml:199
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+"Esliza'l deu dende la esquierda p'amosar el llanzador y acceder rápidamente "
125+"a les aplicaciones"
126+
127+#: Components/EdgeDemo.qml:226
128+msgid "Well done"
129+msgstr "Bien fecho"
130+
131+#: Components/EdgeDemo.qml:227
132+msgid ""
133+"You have now mastered the edge gestures and can start using the "
134+"phone<br><br>Tap anywhere to start"
135+msgstr ""
136+"Agora domines los xestos de berbesos y pues usar el teléfonu<br><br>Toca la "
137+"pantalla pa entamar"
138+
139+#: Components/PageHeader.qml:341
140+msgid "Recent searches"
141+msgstr "Busques recientes"
142+
143+#. TRANSLATORS: Number of persons who rated this app
144+#. TRANSLATORS: Number of persons who rated this app/video/whatever
145+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
146+#, qt-format
147+msgid "(%1)"
148+msgstr "(%1)"
149+
150+#. TRANSLATORS: Number of persons who wrote reviews for this app
151+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
152+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
153+#, qt-format
154+msgid "%1 review"
155+msgid_plural "%1 reviews"
156+msgstr[0] "%1 reseña"
157+msgstr[1] "%1 reseñes"
158+
159+#: Dash/Apps/AppPreview.qml:126
160+msgid "Rate this"
161+msgstr "Valorar esto"
162+
163+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164+msgid "Featured"
165+msgstr "Destacaos"
166+
167+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
168+msgid "Recent"
169+msgstr "Recientes"
170+
171+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
172+msgid "New Releases"
173+msgstr "Llanzamientos nuevos"
174+
175+#: Dash/DashMusic.qml:30
176+msgid "Top Charting"
177+msgstr "Meyor posicionaes"
178+
179+#: Dash/DashMusic.qml:91
180+msgid "Music"
181+msgstr "Música"
182+
183+#: Dash/DashVideos.qml:31
184+msgid "Popular Online"
185+msgstr "Populares en llinia"
186+
187+#: Dash/DashVideos.qml:146
188+msgid "Videos"
189+msgstr "Vídeos"
190+
191+#: Dash/Previews/Reviews.qml:74
192+msgid "Add a review"
193+msgstr "Amestar una reseña"
194+
195+#: Dash/Previews/Reviews.qml:86
196+msgid "Review"
197+msgstr "Revisar"
198+
199+#: Dash/Previews/Reviews.qml:121
200+msgid "Send"
201+msgstr "Unviar"
202+
203+#: Dash/Previews/Reviews.qml:139
204+msgid "Comments:"
205+msgstr "Comentarios:"
206+
207+#: Greeter/Lockscreen.qml:142
208+msgid "Emergency Call"
209+msgstr "Llamada d'emerxencia"
210+
211+#: Greeter/PassphraseLockscreen.qml:59
212+#, qt-format
213+msgid "Hello %1"
214+msgstr "Hola %1"
215+
216+#: Greeter/PassphraseLockscreen.qml:59
217+msgid "Hello"
218+msgstr "Hola"
219+
220+#: Hud/HudParametrizedActionsPage.qml:132
221+msgid "Confirm"
222+msgstr "Confirmar"
223+
224+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
225+msgid "Type or say a command"
226+msgstr "Escribi o di una orde"
227+
228+#: Hud/Hud.qml:84
229+msgid "Loading. Please Wait..."
230+msgstr "Cargando, espera…"
231+
232+#: Hud/Hud.qml:89
233+msgid "Speak Now..."
234+msgstr "Fala agora…"
235+
236+#: Hud/Hud.qml:94
237+msgid "Speaking..."
238+msgstr "Falando…"
239+
240+#: Panel/SearchIndicator.qml:27
241+msgid "Search"
242+msgstr "Guetar"
243+
244+#: plugins/Unity/scope.cpp:361
245+msgid "Sorry, there is nothing that matches your search."
246+msgstr "Sentímoslo, nun hai res que concase cola gueta"
247+
248+#: plugins/Unity/showallfilteroption.cpp:41
249+msgid "All"
250+msgstr "Too"
251+
252+#: Shell.qml:453
253+#, qt-format
254+msgid "Please enter %1"
255+msgstr "Introduz %1"
po/az.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Son axtarışlar"
137msgstr "Son axtarışlar"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Videolar"
185msgstr "Videolar"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Söylənilir..."
245msgid "Search"
237msgid "Search"
246msgstr "Axtar"
238msgstr "Axtar"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
242msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/bg.po+41−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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16750)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,88 +87,76 @@ msgstr "Уикипедия"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92msgstr ""
92msgstr ""
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96msgstr ""
96msgstr ""
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100msgstr ""
100msgstr ""
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104msgstr ""
104msgstr ""
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
108msgstr ""
109
109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111msgid "Close"
111msgid "Close"
112msgstr ""
112msgstr ""
113
113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
116msgstr ""
116msgstr ""
117
117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
119msgid "Left edge"
120msgstr ""
120msgstr ""
121
121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
124msgstr ""
125
125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127msgid "Well done"
127msgid "Well done"
128msgstr ""
128msgstr ""
129
129
130−#: Components/EdgeDemo.qml:218
130+#: Components/EdgeDemo.qml:227
131+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132msgstr ""
134msgstr ""
133
135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135msgid "Recent searches"
137msgid "Recent searches"
136msgstr "Скорошни търсения"
138msgstr "Скорошни търсения"
137
139
138#. TRANSLATORS: Number of persons who rated this app
140#. TRANSLATORS: Number of persons who rated this app
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
143#, qt-format
141msgid "(%1)"
144msgid "(%1)"
142msgstr ""
145msgstr ""
143
146
144#. TRANSLATORS: Number of persons who wrote reviews for this app
147#. TRANSLATORS: Number of persons who wrote reviews for this app
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
150#, qt-format
147msgid "%1 review"
151msgid "%1 review"
148msgid_plural "%1 reviews"
152msgid_plural "%1 reviews"
149msgstr[0] ""
153msgstr[0] ""
150msgstr[1] ""
154msgstr[1] ""
151
155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
157msgid "Rate this"
154msgstr ""
158msgstr ""
155
159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
161msgid "Featured"
174msgstr "Най-отличени"
162msgstr "Най-отличени"
@@ -197,19 +185,23 @@ msgstr ""
197msgid "Videos"
185msgid "Videos"
198msgstr "Видеоклипове"
186msgstr "Видеоклипове"
199
187
200−#: Dash/Video/VideoPreview.qml:130
188+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
189+msgid "Add a review"
202msgstr ""
190msgstr ""
203
191
204−#: Dash/Video/VideoPreview.qml:153
192+#: Dash/Previews/Reviews.qml:86
205−msgid "Starring:"
193+msgid "Review"
206msgstr ""
194msgstr ""
207
195
208−#: Dash/Video/VideoPreview.qml:176
196+#: Dash/Previews/Reviews.qml:121
209−msgid "Author:"
197+msgid "Send"
210−msgstr "Автор:"
198+msgstr ""
211
199
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr ""
203+
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
205msgid "Emergency Call"
214msgstr ""
206msgstr ""
215
207
@@ -246,11 +238,15 @@ msgstr ""
246msgid "Search"
238msgid "Search"
247msgstr "Търсене"
239msgstr "Търсене"
248
240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
242msgid "Sorry, there is nothing that matches your search."
251msgstr "Съжаляваме, няма нищо, което да отговаря на вашето търсене."
243msgstr "Съжаляваме, няма нищо, което да отговаря на вашето търсене."
252
244
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
253−#: Shell.qml:429
249+#: Shell.qml:453
254#, qt-format
250#, qt-format
255msgid "Please enter %1"
251msgid "Please enter %1"
256msgstr ""
252msgstr ""
po/ca.po+60−58
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-09-11 10:30+0000\n"
11+"PO-Revision-Date: 2013-09-28 07:38+0000\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-09-12 08:06+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16761)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,82 @@ msgstr "Viquipèdia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "Omet la introducció"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr "Vora dreta"
95msgstr "Vora dreta"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100+"Proveu de lliscar el dit des de la vora dreta per desblocar el telèfon"
100
101
101−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
103msgid "Top edge"
103msgstr "Vora superior"
104msgstr "Vora superior"
104
105
105−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
108msgstr ""
109+"Proveu de lliscar el dit des de la vora superior per accedir als indicadors"
108
110
109−#: Components/EdgeDemo.qml:161
111+#: Components/EdgeDemo.qml:170
110msgid "Close"
112msgid "Close"
111−msgstr ""
113+msgstr "Tanca"
112
114
113−#: Components/EdgeDemo.qml:162
115+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
116msgid "Swipe up again to close the settings screen"
115msgstr ""
117msgstr ""
118+"Llisqueu el dit cap amunt una altra vegada per tancar la pantalla de "
119+"configuració"
116
120
117−#: Components/EdgeDemo.qml:189
121+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
122msgid "Left edge"
119msgstr "Vora esquerra"
123msgstr "Vora esquerra"
120
124
121−#: Components/EdgeDemo.qml:190
125+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
126msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
127msgstr ""
128+"Llisqueu el dit des de la vora esquerra per mostrar el llançador i accedir "
129+"ràpidament a les aplicacions"
124
130
125−#: Components/EdgeDemo.qml:217
131+#: Components/EdgeDemo.qml:226
126msgid "Well done"
132msgid "Well done"
127msgstr "Enhorabona!"
133msgstr "Enhorabona!"
128
134
129−#: Components/EdgeDemo.qml:218
135+#: Components/EdgeDemo.qml:227
136+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
137+"You have now mastered the edge gestures and can start using the "
138+"phone<br><br>Tap anywhere to start"
131msgstr ""
139msgstr ""
132
140
133−#: Components/PageHeader.qml:298
141+#: Components/PageHeader.qml:341
134msgid "Recent searches"
142msgid "Recent searches"
135msgstr "Cerques recents"
143msgstr "Cerques recents"
136
144
137#. TRANSLATORS: Number of persons who rated this app
145#. TRANSLATORS: Number of persons who rated this app
146+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
147+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
148#, qt-format
140msgid "(%1)"
149msgid "(%1)"
141msgstr "(%1)"
150msgstr "(%1)"
142
151
143#. TRANSLATORS: Number of persons who wrote reviews for this app
152#. TRANSLATORS: Number of persons who wrote reviews for this app
153+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
154+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
155#, qt-format
146msgid "%1 review"
156msgid "%1 review"
147msgid_plural "%1 reviews"
157msgid_plural "%1 reviews"
148−msgstr[0] ""
158+msgstr[0] "%1 ressenya"
149−msgstr[1] ""
159+msgstr[1] "%1 ressenyes"
150
160
151−#: Dash/Apps/AppPreview.qml:175
161+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
162msgid "Rate this"
153msgstr ""
163msgstr ""
154
164
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr "Ressenya"
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr "Comentaris:"
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
165#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
166msgid "Featured"
173msgstr "Destacats"
167msgstr "Destacats"
@@ -178,11 +172,11 @@ msgstr "Recents"
178
172
179#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
173#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180msgid "New Releases"
174msgid "New Releases"
181−msgstr ""
175+msgstr "Novetats"
182
176
183#: Dash/DashMusic.qml:30
177#: Dash/DashMusic.qml:30
184msgid "Top Charting"
178msgid "Top Charting"
185−msgstr ""
179+msgstr "El millor de les llistes"
186
180
187#: Dash/DashMusic.qml:91
181#: Dash/DashMusic.qml:91
188msgid "Music"
182msgid "Music"
@@ -190,32 +184,36 @@ msgstr "Música"
190
184
191#: Dash/DashVideos.qml:31
185#: Dash/DashVideos.qml:31
192msgid "Popular Online"
186msgid "Popular Online"
193−msgstr ""
187+msgstr "Popular a la xarxa"
194
188
195#: Dash/DashVideos.qml:146
189#: Dash/DashVideos.qml:146
196msgid "Videos"
190msgid "Videos"
197msgstr "Vídeos"
191msgstr "Vídeos"
198
192
199−#: Dash/Video/VideoPreview.qml:130
193+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
194+msgid "Add a review"
201−msgstr ""
195+msgstr "Afegiu una ressenya"
202
196
203−#: Dash/Video/VideoPreview.qml:153
197+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
198+msgid "Review"
199+msgstr "Ressenya"
200+
201+#: Dash/Previews/Reviews.qml:121
202+msgid "Send"
205−msgstr ""
203+msgstr "Envia"
206
204
207−#: Dash/Video/VideoPreview.qml:176
205+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
206+msgid "Comments:"
209−msgstr "Autor:"
207+msgstr "Comentaris:"
210
208
211−#: Greeter/Lockscreen.qml:134
209+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
210msgid "Emergency Call"
213−msgstr ""
211+msgstr "Trucada d'emergència"
214
212
215#: Greeter/PassphraseLockscreen.qml:59
213#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
214#, qt-format
217msgid "Hello %1"
215msgid "Hello %1"
218−msgstr ""
216+msgstr "Hola %1"
219
217
220#: Greeter/PassphraseLockscreen.qml:59
218#: Greeter/PassphraseLockscreen.qml:59
221msgid "Hello"
219msgid "Hello"
@@ -245,11 +243,15 @@ msgstr "S'està parlant..."
245msgid "Search"
243msgid "Search"
246msgstr "Cerca"
244msgstr "Cerca"
247
245
248−#: plugins/Unity/scope.cpp:317
246+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
247msgid "Sorry, there is nothing that matches your search."
250msgstr "No hi ha res que coincideixi amb la cerca"
248msgstr "No hi ha res que coincideixi amb la cerca"
251
249
250+#: plugins/Unity/showallfilteroption.cpp:41
251+msgid "All"
252+msgstr ""
253+
252−#: Shell.qml:429
254+#: Shell.qml:453
253#, qt-format
255#, qt-format
254msgid "Please enter %1"
256msgid "Please enter %1"
255−msgstr ""
257+msgstr "Introduïu %1"
po/cs.ponew file+252
@@ -0,0 +1,252 @@
1+# Czech translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-08 08:09+0000\n"
12+"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
13+"Language-Team: Czech <cs@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18+"X-Launchpad-Export-Date: 2013-10-09 06:24+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
20+
21+#: Applications/applications.js:23
22+msgid "Phone"
23+msgstr "Telefon"
24+
25+#: Applications/applications.js:29
26+msgid "Camera"
27+msgstr "Fotoaparát"
28+
29+#: Applications/applications.js:35
30+msgid "Gallery"
31+msgstr "Galerie"
32+
33+#: Applications/applications.js:40
34+msgid "Facebook"
35+msgstr "Facebook"
36+
37+#: Applications/applications.js:46
38+msgid "Browser"
39+msgstr "Prohlížeč"
40+
41+#: Applications/applications.js:51
42+msgid "Twitter"
43+msgstr "Twitter"
44+
45+#: Applications/applications.js:57
46+msgid "GMail"
47+msgstr "GMail"
48+
49+#: Applications/applications.js:62
50+msgid "Weather"
51+msgstr "Počasí"
52+
53+#: Applications/applications.js:68
54+msgid "Notepad"
55+msgstr "Poznámkový blok"
56+
57+#: Applications/applications.js:74
58+msgid "Calendar"
59+msgstr "Kalendář"
60+
61+#: Applications/applications.js:80
62+msgid "Media Player"
63+msgstr "Přehrávač multimédií"
64+
65+#: Applications/applications.js:86
66+msgid "Evernote"
67+msgstr "Evernote"
68+
69+#: Applications/applications.js:91
70+msgid "Map"
71+msgstr "Mapa"
72+
73+#: Applications/applications.js:96
74+msgid "Pinterest"
75+msgstr "Pinterest"
76+
77+#: Applications/applications.js:101
78+msgid "SoundCloud"
79+msgstr "Hudební Cloud"
80+
81+#: Applications/applications.js:106
82+msgid "Wikipedia"
83+msgstr "Wikipedie"
84+
85+#: Applications/applications.js:111
86+msgid "YouTube"
87+msgstr "YouTube"
88+
89+#: Components/EdgeDemoOverlay.qml:149
90+msgid "Skip intro"
91+msgstr "Přeskočit intro"
92+
93+#: Components/EdgeDemo.qml:112
94+msgid "Right edge"
95+msgstr "Pravý okraj"
96+
97+#: Components/EdgeDemo.qml:113
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr "Pokuste se odemknout telefon potažením prstu z pravého okraje."
100+
101+#: Components/EdgeDemo.qml:144
102+msgid "Top edge"
103+msgstr "Horní okraj"
104+
105+#: Components/EdgeDemo.qml:145
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr "Pokuste se zpřístupnit indikátory potažením prstu z horního okraje"
108+
109+#: Components/EdgeDemo.qml:170
110+msgid "Close"
111+msgstr "Uzavřít"
112+
113+#: Components/EdgeDemo.qml:171
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:198
118+msgid "Left edge"
119+msgstr "Levý okraj"
120+
121+#: Components/EdgeDemo.qml:199
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr "Pro rychlý přístup k aplikacím potáhněte prst z levého okraje."
124+
125+#: Components/EdgeDemo.qml:226
126+msgid "Well done"
127+msgstr "Výborně"
128+
129+#: Components/EdgeDemo.qml:227
130+msgid ""
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
133+msgstr ""
134+
135+#: Components/PageHeader.qml:341
136+msgid "Recent searches"
137+msgstr "Poslední vyhledávání"
138+
139+#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142+#, qt-format
143+msgid "(%1)"
144+msgstr "(%1)"
145+
146+#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149+#, qt-format
150+msgid "%1 review"
151+msgid_plural "%1 reviews"
152+msgstr[0] "%1 recenze"
153+msgstr[1] "%1 recenze"
154+msgstr[2] "%1 recenzí"
155+
156+#: Dash/Apps/AppPreview.qml:126
157+msgid "Rate this"
158+msgstr "Ohodnoťte to"
159+
160+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
161+msgid "Featured"
162+msgstr "Oblíbené"
163+
164+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
165+msgid "Recent"
166+msgstr "Nedávné"
167+
168+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
169+msgid "New Releases"
170+msgstr ""
171+
172+#: Dash/DashMusic.qml:30
173+msgid "Top Charting"
174+msgstr ""
175+
176+#: Dash/DashMusic.qml:91
177+msgid "Music"
178+msgstr "Hudba"
179+
180+#: Dash/DashVideos.qml:31
181+msgid "Popular Online"
182+msgstr "Oblíbené on-line"
183+
184+#: Dash/DashVideos.qml:146
185+msgid "Videos"
186+msgstr "Videa"
187+
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr "Přidat recenzi"
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
194+msgstr "Recenze"
195+
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr "Odeslat"
199+
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr "Komentáře:"
203+
204+#: Greeter/Lockscreen.qml:142
205+msgid "Emergency Call"
206+msgstr "Tísňové volání"
207+
208+#: Greeter/PassphraseLockscreen.qml:59
209+#, qt-format
210+msgid "Hello %1"
211+msgstr "Ahoj %1"
212+
213+#: Greeter/PassphraseLockscreen.qml:59
214+msgid "Hello"
215+msgstr "Ahoj"
216+
217+#: Hud/HudParametrizedActionsPage.qml:132
218+msgid "Confirm"
219+msgstr "Potvrdit"
220+
221+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
222+msgid "Type or say a command"
223+msgstr "Napište nebo řekněte příkaz"
224+
225+#: Hud/Hud.qml:84
226+msgid "Loading. Please Wait..."
227+msgstr "Načítám. Čekejte prosím..."
228+
229+#: Hud/Hud.qml:89
230+msgid "Speak Now..."
231+msgstr "Mluvte..."
232+
233+#: Hud/Hud.qml:94
234+msgid "Speaking..."
235+msgstr "Mluvte..."
236+
237+#: Panel/SearchIndicator.qml:27
238+msgid "Search"
239+msgstr "Hledat"
240+
241+#: plugins/Unity/scope.cpp:361
242+msgid "Sorry, there is nothing that matches your search."
243+msgstr "Je nám líto, ale nic neodpovídá zadání"
244+
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr "Vše"
248+
249+#: Shell.qml:453
250+#, qt-format
251+msgid "Please enter %1"
252+msgstr "Zadejte prosím %1"
po/de.po+57−61
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 00:37+0000\n"
11+"PO-Revision-Date: 2013-10-06 10:57+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: SaGrLand <sg@samuel-greef.de>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,87 +86,75 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "Überspringe Einführung"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "Rechter Rand"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "Oberer Rand"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111−msgstr ""
111+msgstr "Schließen"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119−msgstr ""
119+msgstr "Linker Rand"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127−msgstr ""
127+msgstr "Gut gemacht"
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Letzte Suchbegriffe"
137msgstr "Letzte Suchbegriffe"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148−msgstr[0] ""
152+msgstr[0] "%1 Bewertung"
149−msgstr[1] ""
153+msgstr[1] "%1 Bewertungen"
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153−msgstr ""
157+msgstr "Bewerten"
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170
158
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
@@ -196,21 +184,25 @@ msgstr "Online Beliebt"
196msgid "Videos"
184msgid "Videos"
197msgstr "Videos"
185msgstr "Videos"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr "Bewertung hinzufügen"
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201−msgstr "Regie:"
193+msgstr "Bewertung"
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205−msgstr "Darsteller:"
197+msgstr "Senden"
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209−msgstr "Autor:"
201+msgstr "Kommentare:"
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213−msgstr ""
205+msgstr "Notruf"
214
206
215#: Greeter/PassphraseLockscreen.qml:59
207#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
208#, qt-format
@@ -245,11 +237,15 @@ msgstr "Sie sprechen …"
245msgid "Search"
237msgid "Search"
246msgstr "Suchen"
238msgstr "Suchen"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Entschuldigung, es wurden keine Treffer erzielt."
242msgstr "Entschuldigung, es wurden keine Treffer erzielt."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr "Alle"
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255−msgstr ""
251+msgstr "Bitte geben Sie %1 ein"
po/el.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Πρόσφατες αναζητήσεις"
137msgstr "Πρόσφατες αναζητήσεις"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Βίντεο"
185msgstr "Βίντεο"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Ομιλία..."
245msgid "Search"
237msgid "Search"
246msgstr "Αναζήτηση"
238msgstr "Αναζήτηση"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να ταιριάζει στην αναζήτησή σας."
242msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να ταιριάζει στην αναζήτησή σας."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/en_AU.po+63−67
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 01:13+0000\n"
11+"PO-Revision-Date: 2013-09-28 07:46+0000\n"
12−"Last-Translator: Jackson Doak <Doak.jackson@gmail.com>\n"
12+"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:02+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,87 +86,75 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "Skip intro"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "Right edge"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Try swiping from the right edge to unlock the phone"
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "Top edge"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "Try swiping from the top edge to access the indicators"
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111−msgstr ""
111+msgstr "Close"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "Swipe up again to close the settings screen"
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119−msgstr ""
119+msgstr "Left edge"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123−msgstr ""
123+msgstr "Swipe from the left to reveal the launcher for quick access to apps"
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127−msgstr ""
127+msgstr "Well done"
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Recent searches"
137msgstr "Recent searches"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148−msgstr[0] ""
152+msgstr[0] "%1 review"
149−msgstr[1] ""
153+msgstr[1] "%1 reviews"
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153−msgstr ""
157+msgstr "Rate this"
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170
158
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
@@ -196,30 +184,34 @@ msgstr "Popular Online"
196msgid "Videos"
184msgid "Videos"
197msgstr "Videos"
185msgstr "Videos"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
201−msgstr "Directed by:"
189+msgstr "Add a review"
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr "Review"
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205−msgstr "Starring:"
197+msgstr "Send"
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209−msgstr "Author:"
201+msgstr "Comments:"
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213−msgstr ""
205+msgstr "Emergency Call"
214
206
215#: Greeter/PassphraseLockscreen.qml:59
207#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
208#, qt-format
217msgid "Hello %1"
209msgid "Hello %1"
218−msgstr ""
210+msgstr "Hello %1"
219
211
220#: Greeter/PassphraseLockscreen.qml:59
212#: Greeter/PassphraseLockscreen.qml:59
221msgid "Hello"
213msgid "Hello"
222−msgstr ""
214+msgstr "Hello"
223
215
224#: Hud/HudParametrizedActionsPage.qml:132
216#: Hud/HudParametrizedActionsPage.qml:132
225msgid "Confirm"
217msgid "Confirm"
@@ -245,11 +237,15 @@ msgstr "Speaking..."
245msgid "Search"
237msgid "Search"
246msgstr "Search"
238msgstr "Search"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Sorry, there is nothing that matches your search."
242msgstr "Sorry, there is nothing that matches your search."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255−msgstr ""
251+msgstr "Please enter %1"
po/en_GB.po+43−47
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:02+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Recent searches"
137msgstr "Recent searches"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr "Featured"
161msgstr "Featured"
@@ -196,19 +184,23 @@ msgstr "Popular Online"
196msgid "Videos"
184msgid "Videos"
197msgstr "Videos"
185msgstr "Videos"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
201−msgstr "Directed by:"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205−msgstr "Starring:"
197+msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209−msgstr "Author:"
201+msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Speaking..."
245msgid "Search"
237msgid "Search"
246msgstr "Search"
238msgstr "Search"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Sorry, there is nothing that matches your search."
242msgstr "Sorry, there is nothing that matches your search."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr "Please enter %1"
251msgstr "Please enter %1"
po/eo.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
13"Language-Team: Esperanto <eo@li.org>\n"
@@ -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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr ""
137msgstr ""
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr ""
185msgstr ""
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr ""
245msgid "Search"
237msgid "Search"
246msgstr ""
238msgstr ""
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr ""
242msgstr ""
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/es.po+48−50
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-09-04 22:12+0000\n"
11+"PO-Revision-Date: 2013-10-02 04:59+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-09-05 05:35+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16758)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -48,7 +48,7 @@ msgstr "GMail"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr "Metereología"
51+msgstr "Meteorología"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
@@ -86,90 +86,80 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr "Omitir la introducción"
91msgstr "Omitir la introducción"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr "Borde derecho"
95msgstr "Borde derecho"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr "Deslice el dedo desde el borde derecho para desbloquear el teléfono"
99msgstr "Deslice el dedo desde el borde derecho para desbloquear el teléfono"
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr "Borde superior"
103msgstr "Borde superior"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr "Deslice el dedo desde el borde superior para acceder a los menús"
107msgstr "Deslice el dedo desde el borde superior para acceder a los menús"
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr "Cerrar"
111msgstr "Cerrar"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr "Deslice hacia arriba para cerrar la pantalla de configuración"
115msgstr "Deslice hacia arriba para cerrar la pantalla de configuración"
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr "Borde izquierdo"
119msgstr "Borde izquierdo"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124"Deslice el dedo desde la izquierda para mostrar el lanzador y acceder "
124"Deslice el dedo desde la izquierda para mostrar el lanzador y acceder "
125"rápidamente a las aplicaciones"
125"rápidamente a las aplicaciones"
126
126
127−#: Components/EdgeDemo.qml:217
127+#: Components/EdgeDemo.qml:226
128msgid "Well done"
128msgid "Well done"
129msgstr "Bien hecho"
129msgstr "Bien hecho"
130
130
131−#: Components/EdgeDemo.qml:218
131+#: Components/EdgeDemo.qml:227
132+msgid ""
132−msgid "You have now mastered the edge gestures and can start using the phone"
133+"You have now mastered the edge gestures and can start using the "
134+"phone<br><br>Tap anywhere to start"
135+msgstr ""
133−msgstr "Ahora domina el uso de gestos de los bordes. Puede usar el teléfono"
136+"Ahora domina los gestos de bordes y puede usar el teléfono<br><br>Toque la "
137+"pantalla para comenzar"
134
138
135−#: Components/PageHeader.qml:298
139+#: Components/PageHeader.qml:341
136msgid "Recent searches"
140msgid "Recent searches"
137msgstr "Búsquedas recientes"
141msgstr "Búsquedas recientes"
138
142
139#. TRANSLATORS: Number of persons who rated this app
143#. TRANSLATORS: Number of persons who rated this app
144+#. TRANSLATORS: Number of persons who rated this app/video/whatever
140−#: Dash/Apps/AppInfo.qml:73
145+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141#, qt-format
146#, qt-format
142msgid "(%1)"
147msgid "(%1)"
143msgstr "(%1)"
148msgstr "(%1)"
144
149
145#. TRANSLATORS: Number of persons who wrote reviews for this app
150#. TRANSLATORS: Number of persons who wrote reviews for this app
151+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
146−#: Dash/Apps/AppInfo.qml:85
152+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147#, qt-format
153#, qt-format
148msgid "%1 review"
154msgid "%1 review"
149msgid_plural "%1 reviews"
155msgid_plural "%1 reviews"
150msgstr[0] "%1 reseña"
156msgstr[0] "%1 reseña"
151msgstr[1] "%1 reseñas"
157msgstr[1] "%1 reseñas"
152
158
153−#: Dash/Apps/AppPreview.qml:175
159+#: Dash/Apps/AppPreview.qml:126
154msgid "Rate this"
160msgid "Rate this"
155msgstr "Valorar esto"
161msgstr "Valorar esto"
156
162
157−#: Dash/Apps/AppReviews.qml:72
158−msgid "Add a review"
159−msgstr "Añadir una reseña"
160−
161−#: Dash/Apps/AppReviews.qml:84
162−msgid "Review"
163−msgstr "Reseñar"
164−
165−#: Dash/Apps/AppReviews.qml:118
166−msgid "Send"
167−msgstr "Enviar"
168−
169−#: Dash/Apps/AppReviews.qml:136
170−msgid "Comments:"
171−msgstr "Comentarios:"
172−
173#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174msgid "Featured"
164msgid "Featured"
175msgstr "Destacados"
165msgstr "Destacados"
@@ -198,19 +188,23 @@ msgstr "Populares en línea"
198msgid "Videos"
188msgid "Videos"
199msgstr "Vídeos"
189msgstr "Vídeos"
200
190
201−#: Dash/Video/VideoPreview.qml:130
191+#: Dash/Previews/Reviews.qml:74
202−msgid "Directed by:"
192+msgid "Add a review"
203−msgstr "Dirigida por:"
193+msgstr "Añadir una reseña"
194+
195+#: Dash/Previews/Reviews.qml:86
196+msgid "Review"
197+msgstr "Reseñar"
204
198
205−#: Dash/Video/VideoPreview.qml:153
199+#: Dash/Previews/Reviews.qml:121
206−msgid "Starring:"
200+msgid "Send"
207−msgstr "Protagonistas:"
201+msgstr "Enviar"
208
202
209−#: Dash/Video/VideoPreview.qml:176
203+#: Dash/Previews/Reviews.qml:139
210−msgid "Author:"
204+msgid "Comments:"
211−msgstr "Autor:"
205+msgstr "Comentarios:"
212
206
213−#: Greeter/Lockscreen.qml:134
207+#: Greeter/Lockscreen.qml:142
214msgid "Emergency Call"
208msgid "Emergency Call"
215msgstr "Llamada de emergencia"
209msgstr "Llamada de emergencia"
216
210
@@ -247,11 +241,15 @@ msgstr "Hablando…"
247msgid "Search"
241msgid "Search"
248msgstr "Buscar"
242msgstr "Buscar"
249
243
250−#: plugins/Unity/scope.cpp:317
244+#: plugins/Unity/scope.cpp:361
251msgid "Sorry, there is nothing that matches your search."
245msgid "Sorry, there is nothing that matches your search."
252msgstr "No hay nada que coincida con su búsqueda."
246msgstr "No hay nada que coincida con su búsqueda."
253
247
248+#: plugins/Unity/showallfilteroption.cpp:41
249+msgid "All"
250+msgstr "Todo"
251+
254−#: Shell.qml:429
252+#: Shell.qml:453
255#, qt-format
253#, qt-format
256msgid "Please enter %1"
254msgid "Please enter %1"
257msgstr "Introduzca %1"
255msgstr "Introduzca %1"
po/fi.po+47−49
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-09-26 09:25+0000\n"
11+"PO-Revision-Date: 2013-10-03 09:21+0000\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
12"Last-Translator: Jiri Grönroos <Unknown>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-09-27 06:43+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,78 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr "Ohita esittely"
91msgstr "Ohita esittely"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr "Oikea reuna"
95msgstr "Oikea reuna"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr "Vedä oikealta avataksesi puhelimen lukituksen"
99msgstr "Vedä oikealta avataksesi puhelimen lukituksen"
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr "Yläreuna"
103msgstr "Yläreuna"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr "Vedä yläreunasta käyttääksesi ilmaisimia"
107msgstr "Vedä yläreunasta käyttääksesi ilmaisimia"
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr "Sulje"
111msgstr "Sulje"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr "Vedä uudestaan sulkeaksesi asetusnäkymän"
115msgstr "Vedä uudestaan sulkeaksesi asetusnäkymän"
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr "Vasen reuna"
119msgstr "Vasen reuna"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr "Vedä vasemmalta saattaaksesi sovellusten käynnistimen esiin"
123msgstr "Vedä vasemmalta saattaaksesi sovellusten käynnistimen esiin"
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr "Hyvin tehty"
127msgstr "Hyvin tehty"
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
133+msgstr ""
131−msgstr "Hallitset nyt reunaeleet, joten voit aloittaa puhelimen käytön"
134+"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
135+"käytön<br><br>Napauta missä tahansa aloittaaksesi"
132
136
133−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
134msgid "Recent searches"
138msgid "Recent searches"
135msgstr "Viimeisimmät haut"
139msgstr "Viimeisimmät haut"
136
140
137#. TRANSLATORS: Number of persons who rated this app
141#. TRANSLATORS: Number of persons who rated this app
142+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
143+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
144#, qt-format
140msgid "(%1)"
145msgid "(%1)"
141msgstr "(%1)"
146msgstr "(%1)"
142
147
143#. TRANSLATORS: Number of persons who wrote reviews for this app
148#. TRANSLATORS: Number of persons who wrote reviews for this app
149+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
150+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
151#, qt-format
146msgid "%1 review"
152msgid "%1 review"
147msgid_plural "%1 reviews"
153msgid_plural "%1 reviews"
148msgstr[0] "%1 arvostelu"
154msgstr[0] "%1 arvostelu"
149msgstr[1] "%1 arvostelua"
155msgstr[1] "%1 arvostelua"
150
156
151−#: Dash/Apps/AppPreview.qml:175
157+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
158msgid "Rate this"
153msgstr "Arvioi tämä"
159msgstr "Arvioi tämä"
154
160
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr "Lisää arvostelu"
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr "Arvostelu"
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr "Lähetä"
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr "Kommentit:"
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
162msgid "Featured"
173msgstr "Suositellut"
163msgstr "Suositellut"
@@ -196,19 +186,23 @@ msgstr "Suosittua verkossa"
196msgid "Videos"
186msgid "Videos"
197msgstr "Videot"
187msgstr "Videot"
198
188
199−#: Dash/Video/VideoPreview.qml:130
189+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
190+msgid "Add a review"
191+msgstr "Lisää arvostelu"
192+
193+#: Dash/Previews/Reviews.qml:86
194+msgid "Review"
201−msgstr "Ohjannut:"
195+msgstr "Arvostelu"
202
196
203−#: Dash/Video/VideoPreview.qml:153
197+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
198+msgid "Send"
205−msgstr "Pääosissa:"
199+msgstr "Lähetä"
206
200
207−#: Dash/Video/VideoPreview.qml:176
201+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
202+msgid "Comments:"
209−msgstr "Tekijä:"
203+msgstr "Kommentit:"
210
204
211−#: Greeter/Lockscreen.qml:134
205+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
206msgid "Emergency Call"
213msgstr "Hätäpuhelu"
207msgstr "Hätäpuhelu"
214
208
@@ -245,11 +239,15 @@ msgstr "Puhutaan..."
245msgid "Search"
239msgid "Search"
246msgstr "Hae"
240msgstr "Hae"
247
241
248−#: plugins/Unity/scope.cpp:317
242+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
243msgid "Sorry, there is nothing that matches your search."
250msgstr "Hakuun täsmääviä tuloksia ei löydy."
244msgstr "Hakuun täsmääviä tuloksia ei löydy."
251
245
246+#: plugins/Unity/showallfilteroption.cpp:41
247+msgid "All"
248+msgstr "Kaikki"
249+
252−#: Shell.qml:429
250+#: Shell.qml:453
253#, qt-format
251#, qt-format
254msgid "Please enter %1"
252msgid "Please enter %1"
255msgstr "Kirjoita %1"
253msgstr "Kirjoita %1"
po/fo.po+52−56
@@ -7,56 +7,56 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 02:57+0000\n"
11+"PO-Revision-Date: 2013-10-01 15:13+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
13"Language-Team: Faroese <fo@li.org>\n"
13"Language-Team: Faroese <fo@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
23−msgstr ""
23+msgstr "Fartelefon"
24
24
25#: Applications/applications.js:29
25#: Applications/applications.js:29
26msgid "Camera"
26msgid "Camera"
27−msgstr ""
27+msgstr "Myndatól"
28
28
29#: Applications/applications.js:35
29#: Applications/applications.js:35
30msgid "Gallery"
30msgid "Gallery"
31−msgstr ""
31+msgstr "Myndasavn"
32
32
33#: Applications/applications.js:40
33#: Applications/applications.js:40
34msgid "Facebook"
34msgid "Facebook"
35−msgstr ""
35+msgstr "Facebook"
36
36
37#: Applications/applications.js:46
37#: Applications/applications.js:46
38msgid "Browser"
38msgid "Browser"
39−msgstr ""
39+msgstr "Kagi"
40
40
41#: Applications/applications.js:51
41#: Applications/applications.js:51
42msgid "Twitter"
42msgid "Twitter"
43−msgstr ""
43+msgstr "Twitter"
44
44
45#: Applications/applications.js:57
45#: Applications/applications.js:57
46msgid "GMail"
46msgid "GMail"
47−msgstr ""
47+msgstr "GMail"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr ""
51+msgstr "Veðrið"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
55−msgstr ""
55+msgstr "Skriviblokkur"
56
56
57#: Applications/applications.js:74
57#: Applications/applications.js:74
58msgid "Calendar"
58msgid "Calendar"
59−msgstr ""
59+msgstr "Kalendari"
60
60
61#: Applications/applications.js:80
61#: Applications/applications.js:80
62msgid "Media Player"
62msgid "Media Player"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr ""
137msgstr ""
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Sjónbond"
185msgstr "Sjónbond"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
201msgstr ""
189msgstr ""
202
190
203−#: Dash/Video/VideoPreview.qml:153
191+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
192+msgid "Review"
205msgstr ""
193msgstr ""
206
194
207−#: Dash/Video/VideoPreview.qml:176
195+#: Dash/Previews/Reviews.qml:121
208−msgid "Author:"
196+msgid "Send"
209msgstr ""
197msgstr ""
210
198
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
202+
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Snakkar..."
245msgid "Search"
237msgid "Search"
246msgstr "Leita"
238msgstr "Leita"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
242msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/fr.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr ""
137msgstr ""
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Vidéos"
185msgstr "Vidéos"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr ""
245msgid "Search"
237msgid "Search"
246msgstr ""
238msgstr ""
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr ""
242msgstr ""
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/gd.ponew file+260
@@ -0,0 +1,260 @@
1+# Gaelic; Scottish translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-09-30 10:34+0000\n"
12+"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
13+"Language-Team: Gaelic; Scottish <gd@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18+"(n > 2 && n < 20) ? 2 : 3;\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
21+
22+#: Applications/applications.js:23
23+msgid "Phone"
24+msgstr "Fòn"
25+
26+#: Applications/applications.js:29
27+msgid "Camera"
28+msgstr "Camara"
29+
30+#: Applications/applications.js:35
31+msgid "Gallery"
32+msgstr "Gailearaidh"
33+
34+#: Applications/applications.js:40
35+msgid "Facebook"
36+msgstr "Facebook"
37+
38+#: Applications/applications.js:46
39+msgid "Browser"
40+msgstr "Brabhsair"
41+
42+#: Applications/applications.js:51
43+msgid "Twitter"
44+msgstr "Twitter"
45+
46+#: Applications/applications.js:57
47+msgid "GMail"
48+msgstr "GMail"
49+
50+#: Applications/applications.js:62
51+msgid "Weather"
52+msgstr "An aimsir"
53+
54+#: Applications/applications.js:68
55+msgid "Notepad"
56+msgstr "Pada nan nòtaichean"
57+
58+#: Applications/applications.js:74
59+msgid "Calendar"
60+msgstr "Am mìosachan"
61+
62+#: Applications/applications.js:80
63+msgid "Media Player"
64+msgstr "Cluicheadair mheadhanan"
65+
66+#: Applications/applications.js:86
67+msgid "Evernote"
68+msgstr "Evernote"
69+
70+#: Applications/applications.js:91
71+msgid "Map"
72+msgstr "Mapa"
73+
74+#: Applications/applications.js:96
75+msgid "Pinterest"
76+msgstr "Pinterest"
77+
78+#: Applications/applications.js:101
79+msgid "SoundCloud"
80+msgstr "SoundCloud"
81+
82+#: Applications/applications.js:106
83+msgid "Wikipedia"
84+msgstr "An Uicipeid"
85+
86+#: Applications/applications.js:111
87+msgid "YouTube"
88+msgstr "YouTube"
89+
90+#: Components/EdgeDemoOverlay.qml:149
91+msgid "Skip intro"
92+msgstr "Gearr leum thairis air an ro-ràdh"
93+
94+#: Components/EdgeDemo.qml:112
95+msgid "Right edge"
96+msgstr "An oir dheas"
97+
98+#: Components/EdgeDemo.qml:113
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+"Feuch is dèan grad-shlaighdeadh a-steach on oir dheas gus a' ghlas a thoirt "
102+"far an fhòn"
103+
104+#: Components/EdgeDemo.qml:144
105+msgid "Top edge"
106+msgstr "An oir aig a' bharr"
107+
108+#: Components/EdgeDemo.qml:145
109+msgid "Try swiping from the top edge to access the indicators"
110+msgstr ""
111+"Feuch is dèan grad-shlaighdeadh a-steach on oir aig a' bharr gus greim "
112+"fhaighinn air na taisbeanairean"
113+
114+#: Components/EdgeDemo.qml:170
115+msgid "Close"
116+msgstr "Dùin"
117+
118+#: Components/EdgeDemo.qml:171
119+msgid "Swipe up again to close the settings screen"
120+msgstr "Dèan grad-shlaighdeadh a-nìos gus sgrìn nan roghainnean a dhùnadh"
121+
122+#: Components/EdgeDemo.qml:198
123+msgid "Left edge"
124+msgstr "An oir chlì"
125+
126+#: Components/EdgeDemo.qml:199
127+msgid "Swipe from the left to reveal the launcher for quick access to apps"
128+msgstr ""
129+"Dèan grad-shlaighdeadh on oir chlì air an lòinseir a bheir dhut cothrom "
130+"luath air na h-aplacaidean"
131+
132+#: Components/EdgeDemo.qml:226
133+msgid "Well done"
134+msgstr "Gasta!"
135+
136+#: Components/EdgeDemo.qml:227
137+msgid ""
138+"You have now mastered the edge gestures and can start using the "
139+"phone<br><br>Tap anywhere to start"
140+msgstr ""
141+
142+#: Components/PageHeader.qml:341
143+msgid "Recent searches"
144+msgstr "Na lorg thu o chionn goirid"
145+
146+#. TRANSLATORS: Number of persons who rated this app
147+#. TRANSLATORS: Number of persons who rated this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
149+#, qt-format
150+msgid "(%1)"
151+msgstr "(%1)"
152+
153+#. TRANSLATORS: Number of persons who wrote reviews for this app
154+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
155+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
156+#, qt-format
157+msgid "%1 review"
158+msgid_plural "%1 reviews"
159+msgstr[0] "%1 lèirmheas"
160+msgstr[1] "%1 lèirmheas"
161+msgstr[2] "%1 lèirmheasan"
162+msgstr[3] "%1 lèirmheas"
163+
164+#: Dash/Apps/AppPreview.qml:126
165+msgid "Rate this"
166+msgstr "Rangaich seo"
167+
168+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
169+msgid "Featured"
170+msgstr "Brosnaichte"
171+
172+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
173+msgid "Recent"
174+msgstr "O chionn goirid"
175+
176+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
177+msgid "New Releases"
178+msgstr "Air ùr-sgaoileadh"
179+
180+#: Dash/DashMusic.qml:30
181+msgid "Top Charting"
182+msgstr "Gràinnean-mullaich nan cairt"
183+
184+#: Dash/DashMusic.qml:91
185+msgid "Music"
186+msgstr "Ceòl"
187+
188+#: Dash/DashVideos.qml:31
189+msgid "Popular Online"
190+msgstr "Fèill mhòr air air loidhne"
191+
192+#: Dash/DashVideos.qml:146
193+msgid "Videos"
194+msgstr "Videothan"
195+
196+#: Dash/Previews/Reviews.qml:74
197+msgid "Add a review"
198+msgstr "Cuir lèirmheas ris"
199+
200+#: Dash/Previews/Reviews.qml:86
201+msgid "Review"
202+msgstr "Lèirmheas"
203+
204+#: Dash/Previews/Reviews.qml:121
205+msgid "Send"
206+msgstr "Cuir"
207+
208+#: Dash/Previews/Reviews.qml:139
209+msgid "Comments:"
210+msgstr "Beachdan"
211+
212+#: Greeter/Lockscreen.qml:142
213+msgid "Emergency Call"
214+msgstr "Gairm èiginn"
215+
216+#: Greeter/PassphraseLockscreen.qml:59
217+#, qt-format
218+msgid "Hello %1"
219+msgstr "Shin thu, %1"
220+
221+#: Greeter/PassphraseLockscreen.qml:59
222+msgid "Hello"
223+msgstr "Shin thu"
224+
225+#: Hud/HudParametrizedActionsPage.qml:132
226+msgid "Confirm"
227+msgstr "Dearbhaich"
228+
229+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
230+msgid "Type or say a command"
231+msgstr "Sgrìobh no can àithne"
232+
233+#: Hud/Hud.qml:84
234+msgid "Loading. Please Wait..."
235+msgstr "'Ga luchdadh, fuirich ort..."
236+
237+#: Hud/Hud.qml:89
238+msgid "Speak Now..."
239+msgstr "Can rud a-nis..."
240+
241+#: Hud/Hud.qml:94
242+msgid "Speaking..."
243+msgstr "A' bruidhinn..."
244+
245+#: Panel/SearchIndicator.qml:27
246+msgid "Search"
247+msgstr "Lorg"
248+
249+#: plugins/Unity/scope.cpp:361
250+msgid "Sorry, there is nothing that matches your search."
251+msgstr "Tha sinn duilich ach chan eil dad a' freagairt ris na lorg thu."
252+
253+#: plugins/Unity/showallfilteroption.cpp:41
254+msgid "All"
255+msgstr ""
256+
257+#: Shell.qml:453
258+#, qt-format
259+msgid "Please enter %1"
260+msgstr "Cuir a-steach %1"
po/gl.po+86−88
@@ -7,178 +7,168 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 03:38+0000\n"
11+"PO-Revision-Date: 2013-10-03 18:49+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Marcos Lans <Unknown>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
23−msgstr ""
23+msgstr "Teléfono"
24
24
25#: Applications/applications.js:29
25#: Applications/applications.js:29
26msgid "Camera"
26msgid "Camera"
27−msgstr ""
27+msgstr "Cámara"
28
28
29#: Applications/applications.js:35
29#: Applications/applications.js:35
30msgid "Gallery"
30msgid "Gallery"
31−msgstr ""
31+msgstr "Galería"
32
32
33#: Applications/applications.js:40
33#: Applications/applications.js:40
34msgid "Facebook"
34msgid "Facebook"
35−msgstr ""
35+msgstr "Facebook"
36
36
37#: Applications/applications.js:46
37#: Applications/applications.js:46
38msgid "Browser"
38msgid "Browser"
39−msgstr ""
39+msgstr "Navegador"
40
40
41#: Applications/applications.js:51
41#: Applications/applications.js:51
42msgid "Twitter"
42msgid "Twitter"
43−msgstr ""
43+msgstr "Twitter"
44
44
45#: Applications/applications.js:57
45#: Applications/applications.js:57
46msgid "GMail"
46msgid "GMail"
47−msgstr ""
47+msgstr "GMail"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr ""
51+msgstr "O tempo"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
55−msgstr ""
55+msgstr "Bloc de notas"
56
56
57#: Applications/applications.js:74
57#: Applications/applications.js:74
58msgid "Calendar"
58msgid "Calendar"
59−msgstr ""
59+msgstr "Calendario"
60
60
61#: Applications/applications.js:80
61#: Applications/applications.js:80
62msgid "Media Player"
62msgid "Media Player"
63−msgstr ""
63+msgstr "Reprodutor multimedia"
64
64
65#: Applications/applications.js:86
65#: Applications/applications.js:86
66msgid "Evernote"
66msgid "Evernote"
67−msgstr ""
67+msgstr "Evernote"
68
68
69#: Applications/applications.js:91
69#: Applications/applications.js:91
70msgid "Map"
70msgid "Map"
71−msgstr ""
71+msgstr "Mapa"
72
72
73#: Applications/applications.js:96
73#: Applications/applications.js:96
74msgid "Pinterest"
74msgid "Pinterest"
75−msgstr ""
75+msgstr "Pinterest"
76
76
77#: Applications/applications.js:101
77#: Applications/applications.js:101
78msgid "SoundCloud"
78msgid "SoundCloud"
79−msgstr ""
79+msgstr "SoundCloud"
80
80
81#: Applications/applications.js:106
81#: Applications/applications.js:106
82msgid "Wikipedia"
82msgid "Wikipedia"
83−msgstr ""
83+msgstr "Wikipedia"
84
84
85#: Applications/applications.js:111
85#: Applications/applications.js:111
86msgid "YouTube"
86msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "Saltar introdución"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "Bordo dereito"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Probe o arrastre desde o bordo dereito para desbloquear o teléfono"
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "Bordo superior"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "Esvare desde o bordo superior para acceder aos indicadores."
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111−msgstr ""
111+msgstr "Pechar"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "Esvare cara a arriba para pechar os axustes"
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119−msgstr ""
119+msgstr "Bordo esquerdo"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123−msgstr ""
123+msgstr "Esvare desde a esquerda para mostrar o iniciador de acceso rápido"
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127−msgstr ""
127+msgstr "Ben feito"
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
134+"Xa domina os xestos desde os bordos e pode comezar a usar o "
135+"móbil<br><br>Toque en calquera sitio para comezar"
132
136
133−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
134msgid "Recent searches"
138msgid "Recent searches"
135msgstr "Buscas recentes"
139msgstr "Buscas recentes"
136
140
137#. TRANSLATORS: Number of persons who rated this app
141#. TRANSLATORS: Number of persons who rated this app
142+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
143+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
144#, qt-format
140msgid "(%1)"
145msgid "(%1)"
141−msgstr ""
146+msgstr "(%1)"
142
147
143#. TRANSLATORS: Number of persons who wrote reviews for this app
148#. TRANSLATORS: Number of persons who wrote reviews for this app
149+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
150+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
151#, qt-format
146msgid "%1 review"
152msgid "%1 review"
147msgid_plural "%1 reviews"
153msgid_plural "%1 reviews"
148−msgstr[0] ""
154+msgstr[0] "%1 opinión"
149−msgstr[1] ""
155+msgstr[1] "%1 opinións"
150
156
151−#: Dash/Apps/AppPreview.qml:175
157+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
158msgid "Rate this"
153−msgstr ""
159+msgstr "Valore isto"
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170
160
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
162msgid "Featured"
173−msgstr ""
163+msgstr "Destacado"
174
164
175#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
165#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176msgid "Recent"
166msgid "Recent"
177−msgstr ""
167+msgstr "Recentes"
178
168
179#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
169#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180msgid "New Releases"
170msgid "New Releases"
181−msgstr ""
171+msgstr "Novas versións"
182
172
183#: Dash/DashMusic.qml:30
173#: Dash/DashMusic.qml:30
184msgid "Top Charting"
174msgid "Top Charting"
@@ -190,36 +180,40 @@ msgstr "Música"
190
180
191#: Dash/DashVideos.qml:31
181#: Dash/DashVideos.qml:31
192msgid "Popular Online"
182msgid "Popular Online"
193−msgstr ""
183+msgstr "Populares en liña"
194
184
195#: Dash/DashVideos.qml:146
185#: Dash/DashVideos.qml:146
196msgid "Videos"
186msgid "Videos"
197msgstr "Vídeos"
187msgstr "Vídeos"
198
188
199−#: Dash/Video/VideoPreview.qml:130
189+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
190+msgid "Add a review"
201−msgstr ""
191+msgstr "Engadir unha opinión"
202
192
203−#: Dash/Video/VideoPreview.qml:153
193+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
194+msgid "Review"
205−msgstr ""
195+msgstr "Opinión"
206
196
207−#: Dash/Video/VideoPreview.qml:176
197+#: Dash/Previews/Reviews.qml:121
208−msgid "Author:"
198+msgid "Send"
209−msgstr ""
199+msgstr "Enviar"
210
200
201+#: Dash/Previews/Reviews.qml:139
202+msgid "Comments:"
203+msgstr "Comentarios:"
204+
211−#: Greeter/Lockscreen.qml:134
205+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
206msgid "Emergency Call"
213−msgstr ""
207+msgstr "Chamada de emerxencia"
214
208
215#: Greeter/PassphraseLockscreen.qml:59
209#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
210#, qt-format
217msgid "Hello %1"
211msgid "Hello %1"
218−msgstr ""
212+msgstr "Ola %1"
219
213
220#: Greeter/PassphraseLockscreen.qml:59
214#: Greeter/PassphraseLockscreen.qml:59
221msgid "Hello"
215msgid "Hello"
222−msgstr ""
216+msgstr "Ola"
223
217
224#: Hud/HudParametrizedActionsPage.qml:132
218#: Hud/HudParametrizedActionsPage.qml:132
225msgid "Confirm"
219msgid "Confirm"
@@ -245,11 +239,15 @@ msgstr "Falando…"
245msgid "Search"
239msgid "Search"
246msgstr "Buscar"
240msgstr "Buscar"
247
241
248−#: plugins/Unity/scope.cpp:317
242+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
243msgid "Sorry, there is nothing that matches your search."
250msgstr "Sentímolo, non hai nada que coincida con esta busca."
244msgstr "Sentímolo, non hai nada que coincida con esta busca."
251
245
246+#: plugins/Unity/showallfilteroption.cpp:41
247+msgid "All"
248+msgstr "Todo"
249+
252−#: Shell.qml:429
250+#: Shell.qml:453
253#, qt-format
251#, qt-format
254msgid "Please enter %1"
252msgid "Please enter %1"
255−msgstr ""
253+msgstr "Introduza %1"
po/he.po+86−90
@@ -7,182 +7,170 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 03:54+0000\n"
11+"PO-Revision-Date: 2013-10-01 09:19+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"
13"Language-Team: Hebrew <he@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
23−msgstr ""
23+msgstr "טלפון"
24
24
25#: Applications/applications.js:29
25#: Applications/applications.js:29
26msgid "Camera"
26msgid "Camera"
27−msgstr ""
27+msgstr "מצלמה"
28
28
29#: Applications/applications.js:35
29#: Applications/applications.js:35
30msgid "Gallery"
30msgid "Gallery"
31−msgstr ""
31+msgstr "גלריה"
32
32
33#: Applications/applications.js:40
33#: Applications/applications.js:40
34msgid "Facebook"
34msgid "Facebook"
35−msgstr ""
35+msgstr "Facebook"
36
36
37#: Applications/applications.js:46
37#: Applications/applications.js:46
38msgid "Browser"
38msgid "Browser"
39−msgstr ""
39+msgstr "דפדפן"
40
40
41#: Applications/applications.js:51
41#: Applications/applications.js:51
42msgid "Twitter"
42msgid "Twitter"
43−msgstr ""
43+msgstr "Twitter"
44
44
45#: Applications/applications.js:57
45#: Applications/applications.js:57
46msgid "GMail"
46msgid "GMail"
47−msgstr ""
47+msgstr "GMail"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr ""
51+msgstr "מזג אוויר"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
55−msgstr ""
55+msgstr "פנקס רשימות"
56
56
57#: Applications/applications.js:74
57#: Applications/applications.js:74
58msgid "Calendar"
58msgid "Calendar"
59−msgstr ""
59+msgstr "לוח שנה"
60
60
61#: Applications/applications.js:80
61#: Applications/applications.js:80
62msgid "Media Player"
62msgid "Media Player"
63−msgstr ""
63+msgstr "נגן מדיה"
64
64
65#: Applications/applications.js:86
65#: Applications/applications.js:86
66msgid "Evernote"
66msgid "Evernote"
67−msgstr ""
67+msgstr "Evernote"
68
68
69#: Applications/applications.js:91
69#: Applications/applications.js:91
70msgid "Map"
70msgid "Map"
71−msgstr ""
71+msgstr "מפה"
72
72
73#: Applications/applications.js:96
73#: Applications/applications.js:96
74msgid "Pinterest"
74msgid "Pinterest"
75−msgstr ""
75+msgstr "Pinterest"
76
76
77#: Applications/applications.js:101
77#: Applications/applications.js:101
78msgid "SoundCloud"
78msgid "SoundCloud"
79−msgstr ""
79+msgstr "SoundCloud"
80
80
81#: Applications/applications.js:106
81#: Applications/applications.js:106
82msgid "Wikipedia"
82msgid "Wikipedia"
83−msgstr ""
83+msgstr "ויקיפדיה"
84
84
85#: Applications/applications.js:111
85#: Applications/applications.js:111
86msgid "YouTube"
86msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "לדלג על הפתיחה"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "שול ימני"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "נא לנסות למשוך מהשול הימני כדי לשחרר את נעילת הטלפון"
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "השול העליון"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "נא לנסות למשוך מהשול העליון כדי לגשת למחוונים"
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111−msgstr ""
111+msgstr "סגירה"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "ניתן למשוך שוב כדי לסגור את מסך ההגדרות"
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119−msgstr ""
119+msgstr "שול שמאלי"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123−msgstr ""
123+msgstr "יש למשוך משמאל כדי לחשוף את המשגר לצורך גישה מהירה ליישומים"
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127−msgstr ""
127+msgstr "כל הכבוד"
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "חיפושים אחרונים"
137msgstr "חיפושים אחרונים"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148−msgstr[0] ""
152+msgstr[0] "סקירה %1"
149−msgstr[1] ""
153+msgstr[1] "%1 סקירות"
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153−msgstr ""
157+msgstr "דירוג היישום"
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170
158
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173−msgstr ""
161+msgstr "מומלצים"
174
162
175#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
163#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176msgid "Recent"
164msgid "Recent"
177−msgstr ""
165+msgstr "אחרונים"
178
166
179#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
167#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180msgid "New Releases"
168msgid "New Releases"
181−msgstr ""
169+msgstr "מהדורות חדשות"
182
170
183#: Dash/DashMusic.qml:30
171#: Dash/DashMusic.qml:30
184msgid "Top Charting"
172msgid "Top Charting"
185−msgstr ""
173+msgstr "בראש הטבלה"
186
174
187#: Dash/DashMusic.qml:91
175#: Dash/DashMusic.qml:91
188msgid "Music"
176msgid "Music"
@@ -190,36 +178,40 @@ msgstr "מוזיקה"
190
178
191#: Dash/DashVideos.qml:31
179#: Dash/DashVideos.qml:31
192msgid "Popular Online"
180msgid "Popular Online"
193−msgstr ""
181+msgstr "פופולריים ברחבי הרשת"
194
182
195#: Dash/DashVideos.qml:146
183#: Dash/DashVideos.qml:146
196msgid "Videos"
184msgid "Videos"
197msgstr "סרטונים"
185msgstr "סרטונים"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
201−msgstr ""
189+msgstr "הוספת סקירה"
202
190
203−#: Dash/Video/VideoPreview.qml:153
191+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
192+msgid "Review"
205−msgstr ""
193+msgstr "סקירה"
206
194
207−#: Dash/Video/VideoPreview.qml:176
195+#: Dash/Previews/Reviews.qml:121
208−msgid "Author:"
196+msgid "Send"
209−msgstr ""
197+msgstr "שליחה"
210
198
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "הערות:"
202+
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213−msgstr ""
205+msgstr "שיחת חירום"
214
206
215#: Greeter/PassphraseLockscreen.qml:59
207#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
208#, qt-format
217msgid "Hello %1"
209msgid "Hello %1"
218−msgstr ""
210+msgstr "שלום %1"
219
211
220#: Greeter/PassphraseLockscreen.qml:59
212#: Greeter/PassphraseLockscreen.qml:59
221msgid "Hello"
213msgid "Hello"
222−msgstr ""
214+msgstr "שלום"
223
215
224#: Hud/HudParametrizedActionsPage.qml:132
216#: Hud/HudParametrizedActionsPage.qml:132
225msgid "Confirm"
217msgid "Confirm"
@@ -239,17 +231,21 @@ msgstr "יש לדבר כעת..."
239
231
240#: Hud/Hud.qml:94
232#: Hud/Hud.qml:94
241msgid "Speaking..."
233msgid "Speaking..."
242−msgstr "מושמע דיבור..."
234+msgstr "הדיבור מושמע…"
243
235
244#: Panel/SearchIndicator.qml:27
236#: Panel/SearchIndicator.qml:27
245msgid "Search"
237msgid "Search"
246msgstr "חיפוש"
238msgstr "חיפוש"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה."
242msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255−msgstr ""
251+msgstr "נא להזין %1"
po/hr.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
11"PO-Revision-Date: 2013-06-27 04:14+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"
13"Language-Team: Croatian <hr@li.org>\n"
@@ -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-30 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16750)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,88 +87,76 @@ msgstr ""
87msgid "YouTube"
87msgid "YouTube"
88msgstr ""
88msgstr ""
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92msgstr ""
92msgstr ""
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96msgstr ""
96msgstr ""
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100msgstr ""
100msgstr ""
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104msgstr ""
104msgstr ""
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
108msgstr ""
109
109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111msgid "Close"
111msgid "Close"
112msgstr ""
112msgstr ""
113
113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
116msgstr ""
116msgstr ""
117
117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
119msgid "Left edge"
120msgstr ""
120msgstr ""
121
121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
124msgstr ""
125
125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127msgid "Well done"
127msgid "Well done"
128msgstr ""
128msgstr ""
129
129
130−#: Components/EdgeDemo.qml:218
130+#: Components/EdgeDemo.qml:227
131+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132msgstr ""
134msgstr ""
133
135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135msgid "Recent searches"
137msgid "Recent searches"
136msgstr "Nedavne pretrage"
138msgstr "Nedavne pretrage"
137
139
138#. TRANSLATORS: Number of persons who rated this app
140#. TRANSLATORS: Number of persons who rated this app
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
143#, qt-format
141msgid "(%1)"
144msgid "(%1)"
142msgstr ""
145msgstr ""
143
146
144#. TRANSLATORS: Number of persons who wrote reviews for this app
147#. TRANSLATORS: Number of persons who wrote reviews for this app
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
150#, qt-format
147msgid "%1 review"
151msgid "%1 review"
148msgid_plural "%1 reviews"
152msgid_plural "%1 reviews"
149msgstr[0] ""
153msgstr[0] ""
150msgstr[1] ""
154msgstr[1] ""
151
155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
157msgid "Rate this"
154msgstr ""
158msgstr ""
155
159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
161msgid "Featured"
174msgstr ""
162msgstr ""
@@ -197,19 +185,23 @@ msgstr ""
197msgid "Videos"
185msgid "Videos"
198msgstr "Video"
186msgstr "Video"
199
187
200−#: Dash/Video/VideoPreview.qml:130
188+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
202msgstr ""
194msgstr ""
203
195
204−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:121
205−msgid "Starring:"
197+msgid "Send"
206msgstr ""
198msgstr ""
207
199
208−#: Dash/Video/VideoPreview.qml:176
200+#: Dash/Previews/Reviews.qml:139
209−msgid "Author:"
201+msgid "Comments:"
210msgstr ""
202msgstr ""
211
203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
205msgid "Emergency Call"
214msgstr ""
206msgstr ""
215
207
@@ -246,11 +238,15 @@ msgstr "Govor..."
246msgid "Search"
238msgid "Search"
247msgstr "Pretraživanje"
239msgstr "Pretraživanje"
248
240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
242msgid "Sorry, there is nothing that matches your search."
251msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
243msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
252
244
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
253−#: Shell.qml:429
249+#: Shell.qml:453
254#, qt-format
250#, qt-format
255msgid "Please enter %1"
251msgid "Please enter %1"
256msgstr ""
252msgstr ""
po/hu.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Legutóbbi keresések"
137msgstr "Legutóbbi keresések"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Videók"
185msgstr "Videók"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Beszéd…"
245msgid "Search"
237msgid "Search"
246msgstr "Keresés"
238msgstr "Keresés"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Elnézést, nincs találat a keresésre."
242msgstr "Elnézést, nincs találat a keresésre."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/hy.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
11"PO-Revision-Date: 2013-06-27 04:43+0000\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
12"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
13"Language-Team: Armenian <hy@li.org>\n"
13"Language-Team: Armenian <hy@li.org>\n"
@@ -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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Վերջին որոնումներ"
137msgstr "Վերջին որոնումներ"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Վիդեոներ"
185msgstr "Վիդեոներ"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Խոսում եմ..."
245msgid "Search"
237msgid "Search"
246msgstr "Որոնում"
238msgstr "Որոնում"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
242msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/id.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
11"PO-Revision-Date: 2013-06-26 22:35+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Indonesian <id@li.org>\n"
13"Language-Team: Indonesian <id@li.org>\n"
@@ -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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr ""
137msgstr ""
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr ""
185msgstr ""
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr ""
245msgid "Search"
237msgid "Search"
246msgstr ""
238msgstr ""
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr ""
242msgstr ""
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/is.po+43−47
@@ -7,7 +7,7 @@ msgid ""
7msgstr ""
7msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-09-18 16:22+0000\n"
11"PO-Revision-Date: 2013-09-18 16:22+0000\n"
12"Last-Translator: Andri Thorlacius <Unknown>\n"
12"Last-Translator: Andri Thorlacius <Unknown>\n"
13"Language-Team: Icelandic <is@li.org>\n"
13"Language-Team: Icelandic <is@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-09-19 05:14+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16765)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,89 +86,77 @@ msgstr "Wikipedia"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr "Hoppa yfir kynningu"
91msgstr "Hoppa yfir kynningu"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr "Hægri brún"
95msgstr "Hægri brún"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100"Prufaðu að renna puttanum frá hægri brúninni til að aflæsa símanum þínum."
100"Prufaðu að renna puttanum frá hægri brúninni til að aflæsa símanum þínum."
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104msgstr "Efri brún"
104msgstr "Efri brún"
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
108msgstr ""
109
109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111msgid "Close"
111msgid "Close"
112msgstr "Loka"
112msgstr "Loka"
113
113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
116msgstr ""
116msgstr ""
117
117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
119msgid "Left edge"
120msgstr "Vinstri brún"
120msgstr "Vinstri brún"
121
121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
124msgstr ""
125
125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127msgid "Well done"
127msgid "Well done"
128msgstr "Vel gert"
128msgstr "Vel gert"
129
129
130−#: Components/EdgeDemo.qml:218
130+#: Components/EdgeDemo.qml:227
131+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132msgstr ""
134msgstr ""
133
135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135msgid "Recent searches"
137msgid "Recent searches"
136msgstr "Nýlegar leitir"
138msgstr "Nýlegar leitir"
137
139
138#. TRANSLATORS: Number of persons who rated this app
140#. TRANSLATORS: Number of persons who rated this app
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
143#, qt-format
141msgid "(%1)"
144msgid "(%1)"
142msgstr "(%1)"
145msgstr "(%1)"
143
146
144#. TRANSLATORS: Number of persons who wrote reviews for this app
147#. TRANSLATORS: Number of persons who wrote reviews for this app
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
150#, qt-format
147msgid "%1 review"
151msgid "%1 review"
148msgid_plural "%1 reviews"
152msgid_plural "%1 reviews"
149msgstr[0] "%1 ummæli"
153msgstr[0] "%1 ummæli"
150msgstr[1] "%1 ummæli"
154msgstr[1] "%1 ummæli"
151
155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
157msgid "Rate this"
154msgstr "Gefa þessu einkunn"
158msgstr "Gefa þessu einkunn"
155
159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr "Gefa umsögn"
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr "Umsögn"
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr "Senda"
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr "Athugasemdir:"
171−
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
161msgid "Featured"
174msgstr "Efst á baugi"
162msgstr "Efst á baugi"
@@ -197,19 +185,23 @@ msgstr "Vinsælt á Netinu"
197msgid "Videos"
185msgid "Videos"
198msgstr "Myndbönd"
186msgstr "Myndbönd"
199
187
200−#: Dash/Video/VideoPreview.qml:130
188+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
189+msgid "Add a review"
202−msgstr "Leikstýrt af:"
190+msgstr "Gefa umsögn"
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
194+msgstr "Umsögn"
203
195
204−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:121
205−msgid "Starring:"
197+msgid "Send"
206−msgstr "Meðal leikara eru:"
198+msgstr "Senda"
207
199
208−#: Dash/Video/VideoPreview.qml:176
200+#: Dash/Previews/Reviews.qml:139
209−msgid "Author:"
201+msgid "Comments:"
210−msgstr "Höfundur:"
202+msgstr "Athugasemdir:"
211
203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
205msgid "Emergency Call"
214msgstr "Neyðarsímtal"
206msgstr "Neyðarsímtal"
215
207
@@ -246,11 +238,15 @@ msgstr "Tala..."
246msgid "Search"
238msgid "Search"
247msgstr "Leita"
239msgstr "Leita"
248
240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
242msgid "Sorry, there is nothing that matches your search."
251msgstr "Því miður, það var ekkert sem passaði við leitarorðið þitt."
243msgstr "Því miður, það var ekkert sem passaði við leitarorðið þitt."
252
244
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
253−#: Shell.qml:429
249+#: Shell.qml:453
254#, qt-format
250#, qt-format
255msgid "Please enter %1"
251msgid "Please enter %1"
256msgstr ""
252msgstr ""
po/it.po+89−86
@@ -7,182 +7,177 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 05:14+0000\n"
11+"PO-Revision-Date: 2013-10-07 09:34+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
23−msgstr ""
23+msgstr "Telefono"
24
24
25#: Applications/applications.js:29
25#: Applications/applications.js:29
26msgid "Camera"
26msgid "Camera"
27−msgstr ""
27+msgstr "Fotocamera"
28
28
29#: Applications/applications.js:35
29#: Applications/applications.js:35
30msgid "Gallery"
30msgid "Gallery"
31−msgstr ""
31+msgstr "Galleria"
32
32
33#: Applications/applications.js:40
33#: Applications/applications.js:40
34msgid "Facebook"
34msgid "Facebook"
35−msgstr ""
35+msgstr "Facebook"
36
36
37#: Applications/applications.js:46
37#: Applications/applications.js:46
38msgid "Browser"
38msgid "Browser"
39−msgstr ""
39+msgstr "Browser"
40
40
41#: Applications/applications.js:51
41#: Applications/applications.js:51
42msgid "Twitter"
42msgid "Twitter"
43−msgstr ""
43+msgstr "Twitter"
44
44
45#: Applications/applications.js:57
45#: Applications/applications.js:57
46msgid "GMail"
46msgid "GMail"
47−msgstr ""
47+msgstr "GMail"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr ""
51+msgstr "Meteo"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
55−msgstr ""
55+msgstr "Blocco note"
56
56
57#: Applications/applications.js:74
57#: Applications/applications.js:74
58msgid "Calendar"
58msgid "Calendar"
59−msgstr ""
59+msgstr "Calendario"
60
60
61#: Applications/applications.js:80
61#: Applications/applications.js:80
62msgid "Media Player"
62msgid "Media Player"
63−msgstr ""
63+msgstr "Riproduttore multimediale"
64
64
65#: Applications/applications.js:86
65#: Applications/applications.js:86
66msgid "Evernote"
66msgid "Evernote"
67−msgstr ""
67+msgstr "Evernote"
68
68
69#: Applications/applications.js:91
69#: Applications/applications.js:91
70msgid "Map"
70msgid "Map"
71−msgstr ""
71+msgstr "Mappa"
72
72
73#: Applications/applications.js:96
73#: Applications/applications.js:96
74msgid "Pinterest"
74msgid "Pinterest"
75−msgstr ""
75+msgstr "Pinterest"
76
76
77#: Applications/applications.js:101
77#: Applications/applications.js:101
78msgid "SoundCloud"
78msgid "SoundCloud"
79−msgstr ""
79+msgstr "SoundCloud"
80
80
81#: Applications/applications.js:106
81#: Applications/applications.js:106
82msgid "Wikipedia"
82msgid "Wikipedia"
83−msgstr ""
83+msgstr "Wikipedia"
84
84
85#: Applications/applications.js:111
85#: Applications/applications.js:111
86msgid "YouTube"
86msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "Salta introduzione"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "Bordo destro"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Provare a far scorrere dal bordo destro per sbloccare il telefono"
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "Bordo superiore"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108+"Provare a far scorrere dal bordo in alto per accedere agli indicatori"
108
109
109−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
110msgid "Close"
111msgid "Close"
111−msgstr ""
112+msgstr "Chiudi"
112
113
113−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
115msgstr ""
116msgstr ""
117+"Far scorrere verso l'alto nuovamente per chiudere la schermata delle "
118+"impostazioni"
116
119
117−#: Components/EdgeDemo.qml:189
120+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
121msgid "Left edge"
119−msgstr ""
122+msgstr "Bordo sinistro"
120
123
121−#: Components/EdgeDemo.qml:190
124+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
125msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
126msgstr ""
127+"Far scorrere il bordo sinistro per mostrare il Launcher e avere un rapido "
128+"accesso alle applicazioni"
124
129
125−#: Components/EdgeDemo.qml:217
130+#: Components/EdgeDemo.qml:226
126msgid "Well done"
131msgid "Well done"
127−msgstr ""
132+msgstr "Ben fatto"
128
133
129−#: Components/EdgeDemo.qml:218
134+#: Components/EdgeDemo.qml:227
135+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
136+"You have now mastered the edge gestures and can start using the "
137+"phone<br><br>Tap anywhere to start"
131msgstr ""
138msgstr ""
139+"I gesti sui bordi sono stati configurati ed è possibile iniziare a usare il "
140+"telefono<br><br>Toccare in un punto qualunque per iniziare"
132
141
133−#: Components/PageHeader.qml:298
142+#: Components/PageHeader.qml:341
134msgid "Recent searches"
143msgid "Recent searches"
135msgstr "Ricerche recenti"
144msgstr "Ricerche recenti"
136
145
137#. TRANSLATORS: Number of persons who rated this app
146#. TRANSLATORS: Number of persons who rated this app
147+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
148+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
149#, qt-format
140msgid "(%1)"
150msgid "(%1)"
141−msgstr ""
151+msgstr "(%1)"
142
152
143#. TRANSLATORS: Number of persons who wrote reviews for this app
153#. TRANSLATORS: Number of persons who wrote reviews for this app
154+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
155+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
156#, qt-format
146msgid "%1 review"
157msgid "%1 review"
147msgid_plural "%1 reviews"
158msgid_plural "%1 reviews"
148−msgstr[0] ""
159+msgstr[0] "%1 recensione"
149−msgstr[1] ""
160+msgstr[1] "%1 recensioni"
150
161
151−#: Dash/Apps/AppPreview.qml:175
162+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
163msgid "Rate this"
153−msgstr ""
164+msgstr "Valuta"
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170
165
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
166#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
167msgid "Featured"
173−msgstr ""
168+msgstr "In evidenza"
174
169
175#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
170#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176msgid "Recent"
171msgid "Recent"
177−msgstr ""
172+msgstr "Recenti"
178
173
179#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
174#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180msgid "New Releases"
175msgid "New Releases"
181−msgstr ""
176+msgstr "Nuovi rilasci"
182
177
183#: Dash/DashMusic.qml:30
178#: Dash/DashMusic.qml:30
184msgid "Top Charting"
179msgid "Top Charting"
185−msgstr ""
180+msgstr "Più votate"
186
181
187#: Dash/DashMusic.qml:91
182#: Dash/DashMusic.qml:91
188msgid "Music"
183msgid "Music"
@@ -190,36 +185,40 @@ msgstr "Musica"
190
185
191#: Dash/DashVideos.qml:31
186#: Dash/DashVideos.qml:31
192msgid "Popular Online"
187msgid "Popular Online"
193−msgstr ""
188+msgstr "Popolari online"
194
189
195#: Dash/DashVideos.qml:146
190#: Dash/DashVideos.qml:146
196msgid "Videos"
191msgid "Videos"
197msgstr "Video"
192msgstr "Video"
198
193
199−#: Dash/Video/VideoPreview.qml:130
194+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
195+msgid "Add a review"
201−msgstr ""
196+msgstr "Aggiungi una recensione"
202
197
203−#: Dash/Video/VideoPreview.qml:153
198+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
199+msgid "Review"
205−msgstr ""
200+msgstr "Recensisci"
206
201
207−#: Dash/Video/VideoPreview.qml:176
202+#: Dash/Previews/Reviews.qml:121
208−msgid "Author:"
203+msgid "Send"
209−msgstr ""
204+msgstr "Invia"
210
205
206+#: Dash/Previews/Reviews.qml:139
207+msgid "Comments:"
208+msgstr "Commenti:"
209+
211−#: Greeter/Lockscreen.qml:134
210+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
211msgid "Emergency Call"
213−msgstr ""
212+msgstr "Chiamata di emergenza"
214
213
215#: Greeter/PassphraseLockscreen.qml:59
214#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
215#, qt-format
217msgid "Hello %1"
216msgid "Hello %1"
218−msgstr ""
217+msgstr "Ciao %1"
219
218
220#: Greeter/PassphraseLockscreen.qml:59
219#: Greeter/PassphraseLockscreen.qml:59
221msgid "Hello"
220msgid "Hello"
222−msgstr ""
221+msgstr "Ciao"
223
222
224#: Hud/HudParametrizedActionsPage.qml:132
223#: Hud/HudParametrizedActionsPage.qml:132
225msgid "Confirm"
224msgid "Confirm"
@@ -245,11 +244,15 @@ msgstr "Sto parlando..."
245msgid "Search"
244msgid "Search"
246msgstr "Cerca"
245msgstr "Cerca"
247
246
248−#: plugins/Unity/scope.cpp:317
247+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
248msgid "Sorry, there is nothing that matches your search."
250msgstr "Nessun risultato corrispondente alla ricerca."
249msgstr "Nessun risultato corrispondente alla ricerca."
251
250
251+#: plugins/Unity/showallfilteroption.cpp:41
252+msgid "All"
253+msgstr "Tutto"
254+
252−#: Shell.qml:429
255+#: Shell.qml:453
253#, qt-format
256#, qt-format
254msgid "Please enter %1"
257msgid "Please enter %1"
255−msgstr ""
258+msgstr "Inserire %1"
po/ja.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: 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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr ""
137msgstr ""
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr ""
185msgstr ""
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr ""
245msgid "Search"
237msgid "Search"
246msgstr ""
238msgstr ""
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr ""
242msgstr ""
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/kn.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
11"PO-Revision-Date: 2013-06-27 05:43+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kannada <kn@li.org>\n"
13"Language-Team: Kannada <kn@li.org>\n"
@@ -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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
137msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "ವೀಡಿಯೋಗಳು"
185msgstr "ವೀಡಿಯೋಗಳು"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "ಮಾತನಾಡುತಿದ್ದೀರಿ"
245msgid "Search"
237msgid "Search"
246msgstr "ಹುಡುಕು"
238msgstr "ಹುಡುಕು"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯಾದ ಹೊಂದಾಣಿಕೆಗಳು ದೊರಕುತ್ತಿಲ್ಲ"
242msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯಾದ ಹೊಂದಾಣಿಕೆಗಳು ದೊರಕುತ್ತಿಲ್ಲ"
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/ko.po+63−67
@@ -7,167 +7,155 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 05:59+0000\n"
11+"PO-Revision-Date: 2013-10-10 07:04+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Kim Boram <boramism@gmail.com>\n"
13"Language-Team: Korean <ko@li.org>\n"
13"Language-Team: Korean <ko@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-11 05:58+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
23−msgstr ""
23+msgstr "전화"
24
24
25#: Applications/applications.js:29
25#: Applications/applications.js:29
26msgid "Camera"
26msgid "Camera"
27−msgstr ""
27+msgstr "카메라"
28
28
29#: Applications/applications.js:35
29#: Applications/applications.js:35
30msgid "Gallery"
30msgid "Gallery"
31−msgstr ""
31+msgstr "갤러리"
32
32
33#: Applications/applications.js:40
33#: Applications/applications.js:40
34msgid "Facebook"
34msgid "Facebook"
35−msgstr ""
35+msgstr "페이스북"
36
36
37#: Applications/applications.js:46
37#: Applications/applications.js:46
38msgid "Browser"
38msgid "Browser"
39−msgstr ""
39+msgstr "브라우저"
40
40
41#: Applications/applications.js:51
41#: Applications/applications.js:51
42msgid "Twitter"
42msgid "Twitter"
43−msgstr ""
43+msgstr "트위터"
44
44
45#: Applications/applications.js:57
45#: Applications/applications.js:57
46msgid "GMail"
46msgid "GMail"
47−msgstr ""
47+msgstr "지메일"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr ""
51+msgstr "날씨"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
55−msgstr ""
55+msgstr "메모장"
56
56
57#: Applications/applications.js:74
57#: Applications/applications.js:74
58msgid "Calendar"
58msgid "Calendar"
59−msgstr ""
59+msgstr "달력"
60
60
61#: Applications/applications.js:80
61#: Applications/applications.js:80
62msgid "Media Player"
62msgid "Media Player"
63−msgstr ""
63+msgstr "미디어 재생기"
64
64
65#: Applications/applications.js:86
65#: Applications/applications.js:86
66msgid "Evernote"
66msgid "Evernote"
67−msgstr ""
67+msgstr "에버노트"
68
68
69#: Applications/applications.js:91
69#: Applications/applications.js:91
70msgid "Map"
70msgid "Map"
71−msgstr ""
71+msgstr "지도"
72
72
73#: Applications/applications.js:96
73#: Applications/applications.js:96
74msgid "Pinterest"
74msgid "Pinterest"
75−msgstr ""
75+msgstr "핀터레스트"
76
76
77#: Applications/applications.js:101
77#: Applications/applications.js:101
78msgid "SoundCloud"
78msgid "SoundCloud"
79−msgstr ""
79+msgstr "사운드클라우드"
80
80
81#: Applications/applications.js:106
81#: Applications/applications.js:106
82msgid "Wikipedia"
82msgid "Wikipedia"
83−msgstr ""
83+msgstr "위키백과"
84
84
85#: Applications/applications.js:111
85#: Applications/applications.js:111
86msgid "YouTube"
86msgid "YouTube"
87−msgstr ""
87+msgstr "유튜브"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "도입부 건너뛰기"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "오른쪽 끝"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135−msgstr "요즈음 찿은 것들"
137+msgstr "최근 검색"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr ""
185msgstr ""
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -243,13 +235,17 @@ msgstr ""
243
235
244#: Panel/SearchIndicator.qml:27
236#: Panel/SearchIndicator.qml:27
245msgid "Search"
237msgid "Search"
246−msgstr "찾기"
238+msgstr "검색"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr ""
242msgstr ""
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/ky.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
11"PO-Revision-Date: 2013-06-27 06:17+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
13"Language-Team: Kirghiz <ky@li.org>\n"
@@ -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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Соңку издөөлөр"
137msgstr "Соңку издөөлөр"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Видеолор"
185msgstr "Видеолор"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Сүйлөнүүдө..."
245msgid "Search"
237msgid "Search"
246msgstr "Издөө"
238msgstr "Издөө"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Тилекке каршы, сиздин издөөңүзгө эч нерсе дал келген жок."
242msgstr "Тилекке каршы, сиздин издөөңүзгө эч нерсе дал келген жок."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/lo.ponew file+251
@@ -0,0 +1,251 @@
1+# Lao translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-02 10:00+0000\n"
12+"Last-Translator: Anousak <anousak@gmail.com>\n"
13+"Language-Team: Lao <lo@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
20+
21+#: Applications/applications.js:23
22+msgid "Phone"
23+msgstr "ໂທລະສັບ"
24+
25+#: Applications/applications.js:29
26+msgid "Camera"
27+msgstr "ກ້ອງ"
28+
29+#: Applications/applications.js:35
30+msgid "Gallery"
31+msgstr "Gallery"
32+
33+#: Applications/applications.js:40
34+msgid "Facebook"
35+msgstr "Facebook"
36+
37+#: Applications/applications.js:46
38+msgid "Browser"
39+msgstr "ບາວເຊິ"
40+
41+#: Applications/applications.js:51
42+msgid "Twitter"
43+msgstr "Twitter"
44+
45+#: Applications/applications.js:57
46+msgid "GMail"
47+msgstr "GMail"
48+
49+#: Applications/applications.js:62
50+msgid "Weather"
51+msgstr "ສະພາບອາກາດ"
52+
53+#: Applications/applications.js:68
54+msgid "Notepad"
55+msgstr "Noetpad"
56+
57+#: Applications/applications.js:74
58+msgid "Calendar"
59+msgstr "ປະຕິທິນ"
60+
61+#: Applications/applications.js:80
62+msgid "Media Player"
63+msgstr ""
64+
65+#: Applications/applications.js:86
66+msgid "Evernote"
67+msgstr ""
68+
69+#: Applications/applications.js:91
70+msgid "Map"
71+msgstr "ເເຜນທີ່"
72+
73+#: Applications/applications.js:96
74+msgid "Pinterest"
75+msgstr ""
76+
77+#: Applications/applications.js:101
78+msgid "SoundCloud"
79+msgstr ""
80+
81+#: Applications/applications.js:106
82+msgid "Wikipedia"
83+msgstr ""
84+
85+#: Applications/applications.js:111
86+msgid "YouTube"
87+msgstr "ິYouTube"
88+
89+#: Components/EdgeDemoOverlay.qml:149
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:112
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:113
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:144
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:145
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:170
110+msgid "Close"
111+msgstr "ປິດ"
112+
113+#: Components/EdgeDemo.qml:171
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:198
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:199
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:226
126+msgid "Well done"
127+msgstr "ດີຫຼາຍ"
128+
129+#: Components/EdgeDemo.qml:227
130+msgid ""
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
133+msgstr ""
134+
135+#: Components/PageHeader.qml:341
136+msgid "Recent searches"
137+msgstr ""
138+
139+#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142+#, qt-format
143+msgid "(%1)"
144+msgstr "(%1)"
145+
146+#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149+#, qt-format
150+msgid "%1 review"
151+msgid_plural "%1 reviews"
152+msgstr[0] ""
153+msgstr[1] ""
154+
155+#: Dash/Apps/AppPreview.qml:126
156+msgid "Rate this"
157+msgstr ""
158+
159+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160+msgid "Featured"
161+msgstr ""
162+
163+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
164+msgid "Recent"
165+msgstr ""
166+
167+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
168+msgid "New Releases"
169+msgstr ""
170+
171+#: Dash/DashMusic.qml:30
172+msgid "Top Charting"
173+msgstr ""
174+
175+#: Dash/DashMusic.qml:91
176+msgid "Music"
177+msgstr "ດົນຕີ"
178+
179+#: Dash/DashVideos.qml:31
180+msgid "Popular Online"
181+msgstr ""
182+
183+#: Dash/DashVideos.qml:146
184+msgid "Videos"
185+msgstr "ວິດີໂອ"
186+
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr ""
194+
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "ສົ່ງ"
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "ຄໍ່ເຫັນ"
202+
203+#: Greeter/Lockscreen.qml:142
204+msgid "Emergency Call"
205+msgstr ""
206+
207+#: Greeter/PassphraseLockscreen.qml:59
208+#, qt-format
209+msgid "Hello %1"
210+msgstr "ສະບາຍດີ %1"
211+
212+#: Greeter/PassphraseLockscreen.qml:59
213+msgid "Hello"
214+msgstr "ສະບາຍດີ"
215+
216+#: Hud/HudParametrizedActionsPage.qml:132
217+msgid "Confirm"
218+msgstr "ຢືນຢັນ"
219+
220+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
221+msgid "Type or say a command"
222+msgstr ""
223+
224+#: Hud/Hud.qml:84
225+msgid "Loading. Please Wait..."
226+msgstr ""
227+
228+#: Hud/Hud.qml:89
229+msgid "Speak Now..."
230+msgstr "ເວົ້າໂລດ"
231+
232+#: Hud/Hud.qml:94
233+msgid "Speaking..."
234+msgstr "ກໍາລັງເວົ້າ"
235+
236+#: Panel/SearchIndicator.qml:27
237+msgid "Search"
238+msgstr "ຊອກຫາ"
239+
240+#: plugins/Unity/scope.cpp:361
241+msgid "Sorry, there is nothing that matches your search."
242+msgstr ""
243+
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr "ທັງໝົດ"
247+
248+#: Shell.qml:453
249+#, qt-format
250+msgid "Please enter %1"
251+msgstr "ກະລູນາປ້ອນ %1"
po/lv.po+59−63
@@ -7,60 +7,60 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 06:31+0000\n"
11+"PO-Revision-Date: 2013-09-28 16:29+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
13"Language-Team: Latvian <lv@li.org>\n"
13"Language-Team: Latvian <lv@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
23−msgstr ""
23+msgstr "Tālrunis"
24
24
25#: Applications/applications.js:29
25#: Applications/applications.js:29
26msgid "Camera"
26msgid "Camera"
27−msgstr ""
27+msgstr "Fotokamera"
28
28
29#: Applications/applications.js:35
29#: Applications/applications.js:35
30msgid "Gallery"
30msgid "Gallery"
31−msgstr ""
31+msgstr "Galerija"
32
32
33#: Applications/applications.js:40
33#: Applications/applications.js:40
34msgid "Facebook"
34msgid "Facebook"
35−msgstr ""
35+msgstr "Facebook"
36
36
37#: Applications/applications.js:46
37#: Applications/applications.js:46
38msgid "Browser"
38msgid "Browser"
39−msgstr ""
39+msgstr "Pārlūkprogramma"
40
40
41#: Applications/applications.js:51
41#: Applications/applications.js:51
42msgid "Twitter"
42msgid "Twitter"
43−msgstr ""
43+msgstr "Twitter"
44
44
45#: Applications/applications.js:57
45#: Applications/applications.js:57
46msgid "GMail"
46msgid "GMail"
47−msgstr ""
47+msgstr "GMail"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr ""
51+msgstr "Laikapstākļi"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
55−msgstr ""
55+msgstr "Bloknots"
56
56
57#: Applications/applications.js:74
57#: Applications/applications.js:74
58msgid "Calendar"
58msgid "Calendar"
59−msgstr ""
59+msgstr "Kalendārs"
60
60
61#: Applications/applications.js:80
61#: Applications/applications.js:80
62msgid "Media Player"
62msgid "Media Player"
63−msgstr ""
63+msgstr "Mēdiju Atskaņotājs"
64
64
65#: Applications/applications.js:86
65#: Applications/applications.js:86
66msgid "Evernote"
66msgid "Evernote"
@@ -68,106 +68,94 @@ msgstr ""
68
68
69#: Applications/applications.js:91
69#: Applications/applications.js:91
70msgid "Map"
70msgid "Map"
71−msgstr ""
71+msgstr "Karte"
72
72
73#: Applications/applications.js:96
73#: Applications/applications.js:96
74msgid "Pinterest"
74msgid "Pinterest"
75−msgstr ""
75+msgstr "Pinterest"
76
76
77#: Applications/applications.js:101
77#: Applications/applications.js:101
78msgid "SoundCloud"
78msgid "SoundCloud"
79−msgstr ""
79+msgstr "SoundCloud"
80
80
81#: Applications/applications.js:106
81#: Applications/applications.js:106
82msgid "Wikipedia"
82msgid "Wikipedia"
83−msgstr ""
83+msgstr "Vikipēdija"
84
84
85#: Applications/applications.js:111
85#: Applications/applications.js:111
86msgid "YouTube"
86msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "Labā mala"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Nesen veiktās meklēšanas"
137msgstr "Nesen veiktās meklēšanas"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Video"
185msgstr "Video"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
201msgstr ""
189msgstr ""
202
190
203−#: Dash/Video/VideoPreview.qml:153
191+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
192+msgid "Review"
205msgstr ""
193msgstr ""
206
194
207−#: Dash/Video/VideoPreview.qml:176
195+#: Dash/Previews/Reviews.qml:121
208−msgid "Author:"
196+msgid "Send"
209msgstr ""
197msgstr ""
210
198
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
202+
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Runa..."
245msgid "Search"
237msgid "Search"
246msgstr "Meklēt"
238msgstr "Meklēt"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
242msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/my.po+71−75
@@ -7,166 +7,154 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 06:47+0000\n"
11+"PO-Revision-Date: 2013-10-09 11:35+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Pyae Sone <Unknown>\n"
13"Language-Team: Burmese <my@li.org>\n"
13"Language-Team: Burmese <my@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-10 05:50+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
23−msgstr ""
23+msgstr "ဖုန်း"
24
24
25#: Applications/applications.js:29
25#: Applications/applications.js:29
26msgid "Camera"
26msgid "Camera"
27−msgstr ""
27+msgstr "ကင်မရာ"
28
28
29#: Applications/applications.js:35
29#: Applications/applications.js:35
30msgid "Gallery"
30msgid "Gallery"
31−msgstr ""
31+msgstr "ဓာတ်ပုံသိမ်းထားသည့်နေရာ"
32
32
33#: Applications/applications.js:40
33#: Applications/applications.js:40
34msgid "Facebook"
34msgid "Facebook"
35−msgstr ""
35+msgstr "Facebook"
36
36
37#: Applications/applications.js:46
37#: Applications/applications.js:46
38msgid "Browser"
38msgid "Browser"
39−msgstr ""
39+msgstr "Browser"
40
40
41#: Applications/applications.js:51
41#: Applications/applications.js:51
42msgid "Twitter"
42msgid "Twitter"
43−msgstr ""
43+msgstr "Twitter"
44
44
45#: Applications/applications.js:57
45#: Applications/applications.js:57
46msgid "GMail"
46msgid "GMail"
47−msgstr ""
47+msgstr "ဂျီမေးလ်"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr ""
51+msgstr "ရာသီဥတု"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
55−msgstr ""
55+msgstr "Notepad"
56
56
57#: Applications/applications.js:74
57#: Applications/applications.js:74
58msgid "Calendar"
58msgid "Calendar"
59−msgstr ""
59+msgstr "ပြက္ခဒိန်"
60
60
61#: Applications/applications.js:80
61#: Applications/applications.js:80
62msgid "Media Player"
62msgid "Media Player"
63−msgstr ""
63+msgstr "မီဒီယာဖွင့်စက်"
64
64
65#: Applications/applications.js:86
65#: Applications/applications.js:86
66msgid "Evernote"
66msgid "Evernote"
67−msgstr ""
67+msgstr "Evernote"
68
68
69#: Applications/applications.js:91
69#: Applications/applications.js:91
70msgid "Map"
70msgid "Map"
71−msgstr ""
71+msgstr "မြေပုံ"
72
72
73#: Applications/applications.js:96
73#: Applications/applications.js:96
74msgid "Pinterest"
74msgid "Pinterest"
75−msgstr ""
75+msgstr "Pinterest"
76
76
77#: Applications/applications.js:101
77#: Applications/applications.js:101
78msgid "SoundCloud"
78msgid "SoundCloud"
79−msgstr ""
79+msgstr "SoundCloud"
80
80
81#: Applications/applications.js:106
81#: Applications/applications.js:106
82msgid "Wikipedia"
82msgid "Wikipedia"
83−msgstr ""
83+msgstr "ဝီကီပီဒီးယား"
84
84
85#: Applications/applications.js:111
85#: Applications/applications.js:111
86msgid "YouTube"
86msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "မိတ်ဆက်ကိုကျော်မည်"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "ညာဖက် အစွန်း"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "ထိပ် အစွန်း"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111−msgstr ""
111+msgstr "ပိတ်"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119−msgstr ""
119+msgstr "ဘယ်​ဖက် အစွန်း"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127−msgstr ""
127+msgstr "ကောင်းအောင်ပြုလုပ်ခဲ့သည်"
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
137msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153−msgstr ""
157+msgstr "ဒီဟာကိုအမှတ်ပေးမည်"
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170
158
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
@@ -174,11 +162,11 @@ msgstr ""
174
162
175#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
163#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176msgid "Recent"
164msgid "Recent"
177−msgstr ""
165+msgstr "မကြာသေးခင်က"
178
166
179#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
167#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180msgid "New Releases"
168msgid "New Releases"
181−msgstr ""
169+msgstr "အသစ်ထွက်ရှိသော"
182
170
183#: Dash/DashMusic.qml:30
171#: Dash/DashMusic.qml:30
184msgid "Top Charting"
172msgid "Top Charting"
@@ -190,25 +178,29 @@ msgstr "တေးဂီတ"
190
178
191#: Dash/DashVideos.qml:31
179#: Dash/DashVideos.qml:31
192msgid "Popular Online"
180msgid "Popular Online"
193−msgstr ""
181+msgstr "အွန်လိုင်းတွင်ပေါ်ပြူလာဖြစ်သော"
194
182
195#: Dash/DashVideos.qml:146
183#: Dash/DashVideos.qml:146
196msgid "Videos"
184msgid "Videos"
197msgstr "ဗီဒီယိုများ"
185msgstr "ဗီဒီယိုများ"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
201msgstr ""
189msgstr ""
202
190
203−#: Dash/Video/VideoPreview.qml:153
191+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
192+msgid "Review"
205msgstr ""
193msgstr ""
206
194
207−#: Dash/Video/VideoPreview.qml:176
195+#: Dash/Previews/Reviews.qml:121
208−msgid "Author:"
196+msgid "Send"
209−msgstr ""
197+msgstr "ပို့မည်"
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "မှတ်ချက်များ-"
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "ပြောနေသည်"
245msgid "Search"
237msgid "Search"
246msgstr "ရှာဖွေ"
238msgstr "ရှာဖွေ"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့်တူညီတာဘာမှမရှိပါ။"
242msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့်တူညီတာဘာမှမရှိပါ။"
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/nb.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Siste søk"
137msgstr "Siste søk"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Videoer"
185msgstr "Videoer"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Snakker …"
245msgid "Search"
237msgid "Search"
246msgstr "Søk"
238msgstr "Søk"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Søket ga ingen treff."
242msgstr "Søket ga ingen treff."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/nl.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "Recente zoekopdrachten"
137msgstr "Recente zoekopdrachten"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr "Video's"
185msgstr "Video's"
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr "Inspreken…"
245msgid "Search"
237msgid "Search"
246msgstr "Zoeken"
238msgstr "Zoeken"
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
242msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/pl.po+43−47
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16750)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,88 +87,76 @@ msgstr "Wikipedia"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92msgstr ""
92msgstr ""
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96msgstr ""
96msgstr ""
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100msgstr ""
100msgstr ""
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104msgstr ""
104msgstr ""
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
108msgstr ""
109
109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111msgid "Close"
111msgid "Close"
112msgstr ""
112msgstr ""
113
113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
116msgstr ""
116msgstr ""
117
117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
119msgid "Left edge"
120msgstr ""
120msgstr ""
121
121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
124msgstr ""
125
125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127msgid "Well done"
127msgid "Well done"
128msgstr ""
128msgstr ""
129
129
130−#: Components/EdgeDemo.qml:218
130+#: Components/EdgeDemo.qml:227
131+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132msgstr ""
134msgstr ""
133
135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135msgid "Recent searches"
137msgid "Recent searches"
136msgstr "Ostatnie wyszukiwania"
138msgstr "Ostatnie wyszukiwania"
137
139
138#. TRANSLATORS: Number of persons who rated this app
140#. TRANSLATORS: Number of persons who rated this app
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
143#, qt-format
141msgid "(%1)"
144msgid "(%1)"
142msgstr ""
145msgstr ""
143
146
144#. TRANSLATORS: Number of persons who wrote reviews for this app
147#. TRANSLATORS: Number of persons who wrote reviews for this app
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
150#, qt-format
147msgid "%1 review"
151msgid "%1 review"
148msgid_plural "%1 reviews"
152msgid_plural "%1 reviews"
149msgstr[0] ""
153msgstr[0] ""
150msgstr[1] ""
154msgstr[1] ""
151
155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
157msgid "Rate this"
154msgstr ""
158msgstr ""
155
159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
161msgid "Featured"
174msgstr "Polecane"
162msgstr "Polecane"
@@ -197,19 +185,23 @@ msgstr "Popularne w sieci"
197msgid "Videos"
185msgid "Videos"
198msgstr "Filmy"
186msgstr "Filmy"
199
187
200−#: Dash/Video/VideoPreview.qml:130
188+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
202−msgstr "Reżyseria:"
194+msgstr ""
203
195
204−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:121
205−msgid "Starring:"
197+msgid "Send"
206−msgstr "Obsada:"
198+msgstr ""
207
199
208−#: Dash/Video/VideoPreview.qml:176
200+#: Dash/Previews/Reviews.qml:139
209−msgid "Author:"
201+msgid "Comments:"
210−msgstr "Autor:"
202+msgstr ""
211
203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
205msgid "Emergency Call"
214msgstr ""
206msgstr ""
215
207
@@ -246,11 +238,15 @@ msgstr "Rozpoznanie..."
246msgid "Search"
238msgid "Search"
247msgstr "Szukaj"
239msgstr "Szukaj"
248
240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
242msgid "Sorry, there is nothing that matches your search."
251msgstr "Nie znaleziono pasujących wyników."
243msgstr "Nie znaleziono pasujących wyników."
252
244
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
253−#: Shell.qml:429
249+#: Shell.qml:453
254#, qt-format
250#, qt-format
255msgid "Please enter %1"
251msgid "Please enter %1"
256msgstr "Wprowadź %1"
252msgstr "Wprowadź %1"
po/pt_BR.po+86−88
@@ -7,182 +7,172 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 07:39+0000\n"
11+"PO-Revision-Date: 2013-10-01 13:05+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Rafael Neri <Unknown>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
23−msgstr ""
23+msgstr "Telefone"
24
24
25#: Applications/applications.js:29
25#: Applications/applications.js:29
26msgid "Camera"
26msgid "Camera"
27−msgstr ""
27+msgstr "Câmera"
28
28
29#: Applications/applications.js:35
29#: Applications/applications.js:35
30msgid "Gallery"
30msgid "Gallery"
31−msgstr ""
31+msgstr "Galeria"
32
32
33#: Applications/applications.js:40
33#: Applications/applications.js:40
34msgid "Facebook"
34msgid "Facebook"
35−msgstr ""
35+msgstr "Facebook"
36
36
37#: Applications/applications.js:46
37#: Applications/applications.js:46
38msgid "Browser"
38msgid "Browser"
39−msgstr ""
39+msgstr "Navegador"
40
40
41#: Applications/applications.js:51
41#: Applications/applications.js:51
42msgid "Twitter"
42msgid "Twitter"
43−msgstr ""
43+msgstr "Twitter"
44
44
45#: Applications/applications.js:57
45#: Applications/applications.js:57
46msgid "GMail"
46msgid "GMail"
47−msgstr ""
47+msgstr "GMail"
48
48
49#: Applications/applications.js:62
49#: Applications/applications.js:62
50msgid "Weather"
50msgid "Weather"
51−msgstr ""
51+msgstr "Clima"
52
52
53#: Applications/applications.js:68
53#: Applications/applications.js:68
54msgid "Notepad"
54msgid "Notepad"
55−msgstr ""
55+msgstr "Bloco de notas"
56
56
57#: Applications/applications.js:74
57#: Applications/applications.js:74
58msgid "Calendar"
58msgid "Calendar"
59−msgstr ""
59+msgstr "Calendário"
60
60
61#: Applications/applications.js:80
61#: Applications/applications.js:80
62msgid "Media Player"
62msgid "Media Player"
63−msgstr ""
63+msgstr "Media Player"
64
64
65#: Applications/applications.js:86
65#: Applications/applications.js:86
66msgid "Evernote"
66msgid "Evernote"
67−msgstr ""
67+msgstr "Evernote"
68
68
69#: Applications/applications.js:91
69#: Applications/applications.js:91
70msgid "Map"
70msgid "Map"
71−msgstr ""
71+msgstr "Mapa"
72
72
73#: Applications/applications.js:96
73#: Applications/applications.js:96
74msgid "Pinterest"
74msgid "Pinterest"
75−msgstr ""
75+msgstr "Pinterest"
76
76
77#: Applications/applications.js:101
77#: Applications/applications.js:101
78msgid "SoundCloud"
78msgid "SoundCloud"
79−msgstr ""
79+msgstr "SoundCloud"
80
80
81#: Applications/applications.js:106
81#: Applications/applications.js:106
82msgid "Wikipedia"
82msgid "Wikipedia"
83−msgstr ""
83+msgstr "Wikipédia"
84
84
85#: Applications/applications.js:111
85#: Applications/applications.js:111
86msgid "YouTube"
86msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "Pular introdução"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "Borda direita"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Tente deslizar da borda direita para desbloquear o telefone"
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "Borda superior"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "Tente deslizar da borda superior para acessar os indicadores"
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111−msgstr ""
111+msgstr "Fechar"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "Deslize novamente para cima para fechar a tela de configurações"
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119−msgstr ""
119+msgstr "Borda esquerda"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124+"Deslize da esquerda para revelar o lançador para acesso rápido aos "
125+"aplicativos"
124
126
125−#: Components/EdgeDemo.qml:217
127+#: Components/EdgeDemo.qml:226
126msgid "Well done"
128msgid "Well done"
127−msgstr ""
129+msgstr "Bem feito"
128
130
129−#: Components/EdgeDemo.qml:218
131+#: Components/EdgeDemo.qml:227
132+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
133+"You have now mastered the edge gestures and can start using the "
134+"phone<br><br>Tap anywhere to start"
131msgstr ""
135msgstr ""
132
136
133−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
134msgid "Recent searches"
138msgid "Recent searches"
135msgstr "Pesquisas recentes"
139msgstr "Pesquisas recentes"
136
140
137#. TRANSLATORS: Number of persons who rated this app
141#. TRANSLATORS: Number of persons who rated this app
142+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
143+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
144#, qt-format
140msgid "(%1)"
145msgid "(%1)"
141−msgstr ""
146+msgstr "(%1)"
142
147
143#. TRANSLATORS: Number of persons who wrote reviews for this app
148#. TRANSLATORS: Number of persons who wrote reviews for this app
149+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
150+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
151#, qt-format
146msgid "%1 review"
152msgid "%1 review"
147msgid_plural "%1 reviews"
153msgid_plural "%1 reviews"
148−msgstr[0] ""
154+msgstr[0] "%1 análise"
149−msgstr[1] ""
155+msgstr[1] "%1 análises"
150
156
151−#: Dash/Apps/AppPreview.qml:175
157+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
158msgid "Rate this"
153−msgstr ""
159+msgstr "Avaliar isto"
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170
160
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
162msgid "Featured"
173−msgstr ""
163+msgstr "Em destaque"
174
164
175#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
165#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176msgid "Recent"
166msgid "Recent"
177−msgstr ""
167+msgstr "Recente"
178
168
179#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
169#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180msgid "New Releases"
170msgid "New Releases"
181−msgstr ""
171+msgstr "Lançamentos"
182
172
183#: Dash/DashMusic.qml:30
173#: Dash/DashMusic.qml:30
184msgid "Top Charting"
174msgid "Top Charting"
185−msgstr ""
175+msgstr "Top gráficos"
186
176
187#: Dash/DashMusic.qml:91
177#: Dash/DashMusic.qml:91
188msgid "Music"
178msgid "Music"
@@ -190,36 +180,40 @@ msgstr "Músicas"
190
180
191#: Dash/DashVideos.qml:31
181#: Dash/DashVideos.qml:31
192msgid "Popular Online"
182msgid "Popular Online"
193−msgstr ""
183+msgstr "Popular Online"
194
184
195#: Dash/DashVideos.qml:146
185#: Dash/DashVideos.qml:146
196msgid "Videos"
186msgid "Videos"
197msgstr "Vídeos"
187msgstr "Vídeos"
198
188
199−#: Dash/Video/VideoPreview.qml:130
189+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
190+msgid "Add a review"
201−msgstr ""
191+msgstr "Adicionar uma análise"
202
192
203−#: Dash/Video/VideoPreview.qml:153
193+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
194+msgid "Review"
205−msgstr ""
195+msgstr "Revisão"
206
196
207−#: Dash/Video/VideoPreview.qml:176
197+#: Dash/Previews/Reviews.qml:121
208−msgid "Author:"
198+msgid "Send"
209−msgstr ""
199+msgstr "Enviar"
210
200
201+#: Dash/Previews/Reviews.qml:139
202+msgid "Comments:"
203+msgstr "Comentários:"
204+
211−#: Greeter/Lockscreen.qml:134
205+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
206msgid "Emergency Call"
213−msgstr ""
207+msgstr "Chamada de emergência"
214
208
215#: Greeter/PassphraseLockscreen.qml:59
209#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
210#, qt-format
217msgid "Hello %1"
211msgid "Hello %1"
218−msgstr ""
212+msgstr "Olá %1"
219
213
220#: Greeter/PassphraseLockscreen.qml:59
214#: Greeter/PassphraseLockscreen.qml:59
221msgid "Hello"
215msgid "Hello"
222−msgstr ""
216+msgstr "Olá"
223
217
224#: Hud/HudParametrizedActionsPage.qml:132
218#: Hud/HudParametrizedActionsPage.qml:132
225msgid "Confirm"
219msgid "Confirm"
@@ -245,11 +239,15 @@ msgstr "Falando..."
245msgid "Search"
239msgid "Search"
246msgstr "Pesquisar"
240msgstr "Pesquisar"
247
241
248−#: plugins/Unity/scope.cpp:317
242+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
243msgid "Sorry, there is nothing that matches your search."
250msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
244msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
251
245
246+#: plugins/Unity/showallfilteroption.cpp:41
247+msgid "All"
248+msgstr ""
249+
252−#: Shell.qml:429
250+#: Shell.qml:453
253#, qt-format
251#, qt-format
254msgid "Please enter %1"
252msgid "Please enter %1"
255−msgstr ""
253+msgstr "Por favor, digite %1"
po/ro.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-27 07:53+0000\n"
11"PO-Revision-Date: 2013-06-27 07:53+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
@@ -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-30 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16750)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,88 +87,76 @@ msgstr ""
87msgid "YouTube"
87msgid "YouTube"
88msgstr ""
88msgstr ""
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92msgstr ""
92msgstr ""
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96msgstr ""
96msgstr ""
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100msgstr ""
100msgstr ""
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104msgstr ""
104msgstr ""
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
108msgstr ""
109
109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111msgid "Close"
111msgid "Close"
112msgstr ""
112msgstr ""
113
113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
116msgstr ""
116msgstr ""
117
117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
119msgid "Left edge"
120msgstr ""
120msgstr ""
121
121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
124msgstr ""
125
125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127msgid "Well done"
127msgid "Well done"
128msgstr ""
128msgstr ""
129
129
130−#: Components/EdgeDemo.qml:218
130+#: Components/EdgeDemo.qml:227
131+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132msgstr ""
134msgstr ""
133
135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135msgid "Recent searches"
137msgid "Recent searches"
136msgstr "Căutări recente"
138msgstr "Căutări recente"
137
139
138#. TRANSLATORS: Number of persons who rated this app
140#. TRANSLATORS: Number of persons who rated this app
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
143#, qt-format
141msgid "(%1)"
144msgid "(%1)"
142msgstr ""
145msgstr ""
143
146
144#. TRANSLATORS: Number of persons who wrote reviews for this app
147#. TRANSLATORS: Number of persons who wrote reviews for this app
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
150#, qt-format
147msgid "%1 review"
151msgid "%1 review"
148msgid_plural "%1 reviews"
152msgid_plural "%1 reviews"
149msgstr[0] ""
153msgstr[0] ""
150msgstr[1] ""
154msgstr[1] ""
151
155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
157msgid "Rate this"
154msgstr ""
158msgstr ""
155
159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
161msgid "Featured"
174msgstr ""
162msgstr ""
@@ -197,19 +185,23 @@ msgstr ""
197msgid "Videos"
185msgid "Videos"
198msgstr "Video"
186msgstr "Video"
199
187
200−#: Dash/Video/VideoPreview.qml:130
188+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
202msgstr ""
194msgstr ""
203
195
204−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:121
205−msgid "Starring:"
197+msgid "Send"
206msgstr ""
198msgstr ""
207
199
208−#: Dash/Video/VideoPreview.qml:176
200+#: Dash/Previews/Reviews.qml:139
209−msgid "Author:"
201+msgid "Comments:"
210msgstr ""
202msgstr ""
211
203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
205msgid "Emergency Call"
214msgstr ""
206msgstr ""
215
207
@@ -246,12 +238,16 @@ msgstr "Vorbire..."
246msgid "Search"
238msgid "Search"
247msgstr "Căutare"
239msgstr "Căutare"
248
240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
242msgid "Sorry, there is nothing that matches your search."
251msgstr ""
243msgstr ""
252"Ne pare rău, nu este nimic care se potrivește căutării dumneavoastră."
244"Ne pare rău, nu este nimic care se potrivește căutării dumneavoastră."
253
245
246+#: plugins/Unity/showallfilteroption.cpp:41
247+msgid "All"
248+msgstr ""
249+
254−#: Shell.qml:429
250+#: Shell.qml:453
255#, qt-format
251#, qt-format
256msgid "Please enter %1"
252msgid "Please enter %1"
257msgstr ""
253msgstr ""
po/ru.po+68−68
@@ -7,17 +7,17 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-28 06:40+0000\n"
11+"PO-Revision-Date: 2013-10-01 05:55+0000\n"
12−"Last-Translator: Eugene Marshal <Unknown>\n"
12+"Last-Translator: Zonov Roman <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"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-30 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16750)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -69,7 +69,7 @@ msgstr "Evernote"
69
69
70#: Applications/applications.js:91
70#: Applications/applications.js:91
71msgid "Map"
71msgid "Map"
72−msgstr "Карта"
72+msgstr "Карты"
73
73
74#: Applications/applications.js:96
74#: Applications/applications.js:96
75msgid "Pinterest"
75msgid "Pinterest"
@@ -87,91 +87,83 @@ msgstr "Википедия"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92−msgstr ""
92+msgstr "Пропустить обучение"
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96−msgstr ""
96+msgstr "Правый край"
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100msgstr ""
100msgstr ""
101+"Попробуйте переместить палец от правого края к левому для разблокировки "
102+"устройства"
101
103
102−#: Components/EdgeDemo.qml:135
104+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
105msgid "Top edge"
104−msgstr ""
106+msgstr "Верхний край"
105
107
106−#: Components/EdgeDemo.qml:136
108+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
109msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
110msgstr ""
111+"Попробуйте переместить палец от верхнего края вниз для доступа к индикаторам"
109
112
110−#: Components/EdgeDemo.qml:161
113+#: Components/EdgeDemo.qml:170
111msgid "Close"
114msgid "Close"
112−msgstr ""
115+msgstr "Закрыть"
113
116
114−#: Components/EdgeDemo.qml:162
117+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
118msgid "Swipe up again to close the settings screen"
116−msgstr ""
119+msgstr "Снова переместите палец вверх для закрытия экрана настроек"
117
120
118−#: Components/EdgeDemo.qml:189
121+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
122msgid "Left edge"
120−msgstr ""
123+msgstr "Левый край"
121
124
122−#: Components/EdgeDemo.qml:190
125+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
126msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
127msgstr ""
128+"Переместите палец от левого края вправо для открытия лаунчера для быстрого "
129+"доступа к приложениям"
125
130
126−#: Components/EdgeDemo.qml:217
131+#: Components/EdgeDemo.qml:226
127msgid "Well done"
132msgid "Well done"
128−msgstr ""
133+msgstr "Великолепно"
129
134
130−#: Components/EdgeDemo.qml:218
135+#: Components/EdgeDemo.qml:227
136+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
137+"You have now mastered the edge gestures and can start using the "
138+"phone<br><br>Tap anywhere to start"
132msgstr ""
139msgstr ""
133
140
134−#: Components/PageHeader.qml:298
141+#: Components/PageHeader.qml:341
135msgid "Recent searches"
142msgid "Recent searches"
136msgstr "Последние поисковые запросы"
143msgstr "Последние поисковые запросы"
137
144
138#. TRANSLATORS: Number of persons who rated this app
145#. TRANSLATORS: Number of persons who rated this app
146+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
147+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
148#, qt-format
141msgid "(%1)"
149msgid "(%1)"
142−msgstr ""
150+msgstr "(%1)"
143
151
144#. TRANSLATORS: Number of persons who wrote reviews for this app
152#. TRANSLATORS: Number of persons who wrote reviews for this app
153+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
154+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
155#, qt-format
147msgid "%1 review"
156msgid "%1 review"
148msgid_plural "%1 reviews"
157msgid_plural "%1 reviews"
149−msgstr[0] ""
158+msgstr[0] "%1 отзыв"
150−msgstr[1] ""
151
159
152−#: Dash/Apps/AppPreview.qml:175
160+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
161msgid "Rate this"
154−msgstr ""
162+msgstr "Оцените это"
155−
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171
163
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
165msgid "Featured"
174−msgstr ""
166+msgstr "Рекомендованное"
175
167
176#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
168#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
177msgid "Recent"
169msgid "Recent"
@@ -183,7 +175,7 @@ msgstr "Новые релизы"
183
175
184#: Dash/DashMusic.qml:30
176#: Dash/DashMusic.qml:30
185msgid "Top Charting"
177msgid "Top Charting"
186−msgstr ""
178+msgstr "Наиболее популярное"
187
179
188#: Dash/DashMusic.qml:91
180#: Dash/DashMusic.qml:91
189msgid "Music"
181msgid "Music"
@@ -191,40 +183,44 @@ msgstr "Музыка"
191
183
192#: Dash/DashVideos.qml:31
184#: Dash/DashVideos.qml:31
193msgid "Popular Online"
185msgid "Popular Online"
194−msgstr ""
186+msgstr "Популярное в Интернете"
195
187
196#: Dash/DashVideos.qml:146
188#: Dash/DashVideos.qml:146
197msgid "Videos"
189msgid "Videos"
198msgstr "Видео"
190msgstr "Видео"
199
191
200−#: Dash/Video/VideoPreview.qml:130
192+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
193+msgid "Add a review"
202−msgstr "Режиссёр"
194+msgstr "Добавьте отзыв"
203
195
204−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:86
205−msgid "Starring:"
197+msgid "Review"
206−msgstr "В главных ролях"
198+msgstr "Отзыв"
207
199
208−#: Dash/Video/VideoPreview.qml:176
200+#: Dash/Previews/Reviews.qml:121
201+msgid "Send"
202+msgstr "Отправить"
203+
204+#: Dash/Previews/Reviews.qml:139
209−msgid "Author:"
205+msgid "Comments:"
210−msgstr "Автор:"
206+msgstr "Комментарии:"
211
207
212−#: Greeter/Lockscreen.qml:134
208+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
209msgid "Emergency Call"
214−msgstr ""
210+msgstr "Экстренный вызов"
215
211
216#: Greeter/PassphraseLockscreen.qml:59
212#: Greeter/PassphraseLockscreen.qml:59
217#, qt-format
213#, qt-format
218msgid "Hello %1"
214msgid "Hello %1"
219−msgstr ""
215+msgstr "Привет, %1"
220
216
221#: Greeter/PassphraseLockscreen.qml:59
217#: Greeter/PassphraseLockscreen.qml:59
222msgid "Hello"
218msgid "Hello"
223−msgstr ""
219+msgstr "Привет"
224
220
225#: Hud/HudParametrizedActionsPage.qml:132
221#: Hud/HudParametrizedActionsPage.qml:132
226msgid "Confirm"
222msgid "Confirm"
227−msgstr "Подвердить"
223+msgstr "Подтвердить"
228
224
229#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
225#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
230msgid "Type or say a command"
226msgid "Type or say a command"
@@ -246,11 +242,15 @@ msgstr "Говорите..."
246msgid "Search"
242msgid "Search"
247msgstr "Поиск"
243msgstr "Поиск"
248
244
249−#: plugins/Unity/scope.cpp:317
245+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
246msgid "Sorry, there is nothing that matches your search."
251msgstr "Извините, поиск не дал результатов."
247msgstr "Извините, поиск не дал результатов."
252
248
249+#: plugins/Unity/showallfilteroption.cpp:41
250+msgid "All"
251+msgstr ""
252+
253−#: Shell.qml:429
253+#: Shell.qml:453
254#, qt-format
254#, qt-format
255msgid "Please enter %1"
255msgid "Please enter %1"
256msgstr "Пожалуйста, введите %1"
256msgstr "Пожалуйста, введите %1"
po/shn.ponew file+251
@@ -0,0 +1,251 @@
1+# Shan translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-07 11:46+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13+"Language-Team: Shan <shn@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
20+
21+#: Applications/applications.js:23
22+msgid "Phone"
23+msgstr ""
24+
25+#: Applications/applications.js:29
26+msgid "Camera"
27+msgstr ""
28+
29+#: Applications/applications.js:35
30+msgid "Gallery"
31+msgstr ""
32+
33+#: Applications/applications.js:40
34+msgid "Facebook"
35+msgstr ""
36+
37+#: Applications/applications.js:46
38+msgid "Browser"
39+msgstr ""
40+
41+#: Applications/applications.js:51
42+msgid "Twitter"
43+msgstr ""
44+
45+#: Applications/applications.js:57
46+msgid "GMail"
47+msgstr ""
48+
49+#: Applications/applications.js:62
50+msgid "Weather"
51+msgstr ""
52+
53+#: Applications/applications.js:68
54+msgid "Notepad"
55+msgstr ""
56+
57+#: Applications/applications.js:74
58+msgid "Calendar"
59+msgstr ""
60+
61+#: Applications/applications.js:80
62+msgid "Media Player"
63+msgstr ""
64+
65+#: Applications/applications.js:86
66+msgid "Evernote"
67+msgstr ""
68+
69+#: Applications/applications.js:91
70+msgid "Map"
71+msgstr ""
72+
73+#: Applications/applications.js:96
74+msgid "Pinterest"
75+msgstr ""
76+
77+#: Applications/applications.js:101
78+msgid "SoundCloud"
79+msgstr ""
80+
81+#: Applications/applications.js:106
82+msgid "Wikipedia"
83+msgstr ""
84+
85+#: Applications/applications.js:111
86+msgid "YouTube"
87+msgstr ""
88+
89+#: Components/EdgeDemoOverlay.qml:149
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:112
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:113
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:144
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:145
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:170
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:171
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:198
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:199
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:226
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:227
130+msgid ""
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
133+msgstr ""
134+
135+#: Components/PageHeader.qml:341
136+msgid "Recent searches"
137+msgstr ""
138+
139+#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142+#, qt-format
143+msgid "(%1)"
144+msgstr ""
145+
146+#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149+#, qt-format
150+msgid "%1 review"
151+msgid_plural "%1 reviews"
152+msgstr[0] ""
153+msgstr[1] ""
154+
155+#: Dash/Apps/AppPreview.qml:126
156+msgid "Rate this"
157+msgstr ""
158+
159+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160+msgid "Featured"
161+msgstr ""
162+
163+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
164+msgid "Recent"
165+msgstr ""
166+
167+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
168+msgid "New Releases"
169+msgstr ""
170+
171+#: Dash/DashMusic.qml:30
172+msgid "Top Charting"
173+msgstr ""
174+
175+#: Dash/DashMusic.qml:91
176+msgid "Music"
177+msgstr ""
178+
179+#: Dash/DashVideos.qml:31
180+msgid "Popular Online"
181+msgstr ""
182+
183+#: Dash/DashVideos.qml:146
184+msgid "Videos"
185+msgstr ""
186+
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr ""
194+
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
202+
203+#: Greeter/Lockscreen.qml:142
204+msgid "Emergency Call"
205+msgstr ""
206+
207+#: Greeter/PassphraseLockscreen.qml:59
208+#, qt-format
209+msgid "Hello %1"
210+msgstr ""
211+
212+#: Greeter/PassphraseLockscreen.qml:59
213+msgid "Hello"
214+msgstr ""
215+
216+#: Hud/HudParametrizedActionsPage.qml:132
217+msgid "Confirm"
218+msgstr ""
219+
220+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
221+msgid "Type or say a command"
222+msgstr ""
223+
224+#: Hud/Hud.qml:84
225+msgid "Loading. Please Wait..."
226+msgstr ""
227+
228+#: Hud/Hud.qml:89
229+msgid "Speak Now..."
230+msgstr ""
231+
232+#: Hud/Hud.qml:94
233+msgid "Speaking..."
234+msgstr ""
235+
236+#: Panel/SearchIndicator.qml:27
237+msgid "Search"
238+msgstr ""
239+
240+#: plugins/Unity/scope.cpp:361
241+msgid "Sorry, there is nothing that matches your search."
242+msgstr ""
243+
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
249+#, qt-format
250+msgid "Please enter %1"
251+msgstr ""
po/si.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
13"Language-Team: Sinhalese <si@li.org>\n"
@@ -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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr ""
137msgstr ""
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr ""
185msgstr ""
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr ""
245msgid "Search"
237msgid "Search"
246msgstr ""
238msgstr ""
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr ""
242msgstr ""
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/sl.po+46−49
@@ -7,8 +7,8 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-09-19 19:48+0000\n"
11+"PO-Revision-Date: 2013-10-02 10:55+0000\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
@@ -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-09-20 06:21+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16765)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,65 +87,70 @@ msgstr "Wikipedija"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92msgstr "Preskoči uvod"
92msgstr "Preskoči uvod"
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96msgstr "Desni rob"
96msgstr "Desni rob"
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100msgstr "Poskusite povleči od desnega roba za odklep telefona"
100msgstr "Poskusite povleči od desnega roba za odklep telefona"
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104msgstr "Zgornji rob"
104msgstr "Zgornji rob"
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr "Poskusite povleči od zgornjega roba za dostop do kazalnikov"
108msgstr "Poskusite povleči od zgornjega roba za dostop do kazalnikov"
109
109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111msgid "Close"
111msgid "Close"
112msgstr "Zapri"
112msgstr "Zapri"
113
113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
116msgstr "Povlecite ponovno navzgor za zaprtje zaslona z nastavitvami"
116msgstr "Povlecite ponovno navzgor za zaprtje zaslona z nastavitvami"
117
117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
119msgid "Left edge"
120msgstr "Levi rob"
120msgstr "Levi rob"
121
121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
124msgstr ""
125"Poskusite povleči od leve za razkritje zaganjalnika za hiter dostop do "
125"Poskusite povleči od leve za razkritje zaganjalnika za hiter dostop do "
126"programov"
126"programov"
127
127
128−#: Components/EdgeDemo.qml:217
128+#: Components/EdgeDemo.qml:226
129msgid "Well done"
129msgid "Well done"
130msgstr "Odlično"
130msgstr "Odlično"
131
131
132−#: Components/EdgeDemo.qml:218
132+#: Components/EdgeDemo.qml:227
133+msgid ""
133−msgid "You have now mastered the edge gestures and can start using the phone"
134+"You have now mastered the edge gestures and can start using the "
135+"phone<br><br>Tap anywhere to start"
134msgstr ""
136msgstr ""
135−"Zdaj, ko ste osvojili kretnje z robovi, lahko začnete uporabljati telefon"
137+"Sedaj ste osvojili poteze robov ter lahko začnete uporabljati "
138+"telefon<br><br>Tapnite kjerkoli na začetek"
136
139
137−#: Components/PageHeader.qml:298
140+#: Components/PageHeader.qml:341
138msgid "Recent searches"
141msgid "Recent searches"
139msgstr "Nedavna iskanja"
142msgstr "Nedavna iskanja"
140
143
141#. TRANSLATORS: Number of persons who rated this app
144#. TRANSLATORS: Number of persons who rated this app
145+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142−#: Dash/Apps/AppInfo.qml:73
146+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
143#, qt-format
147#, qt-format
144msgid "(%1)"
148msgid "(%1)"
145msgstr "(%1)"
149msgstr "(%1)"
146
150
147#. TRANSLATORS: Number of persons who wrote reviews for this app
151#. TRANSLATORS: Number of persons who wrote reviews for this app
152+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148−#: Dash/Apps/AppInfo.qml:85
153+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149#, qt-format
154#, qt-format
150msgid "%1 review"
155msgid "%1 review"
151msgid_plural "%1 reviews"
156msgid_plural "%1 reviews"
@@ -154,26 +159,10 @@ msgstr[1] "%1 ocena"
154msgstr[2] "%1 oceni"
159msgstr[2] "%1 oceni"
155msgstr[3] "%1 ocene"
160msgstr[3] "%1 ocene"
156
161
157−#: Dash/Apps/AppPreview.qml:175
162+#: Dash/Apps/AppPreview.qml:126
158msgid "Rate this"
163msgid "Rate this"
159msgstr "Ocenite"
164msgstr "Ocenite"
160
165
161−#: Dash/Apps/AppReviews.qml:72
162−msgid "Add a review"
163−msgstr "Dodaj oceno"
164−
165−#: Dash/Apps/AppReviews.qml:84
166−msgid "Review"
167−msgstr "Ocena"
168−
169−#: Dash/Apps/AppReviews.qml:118
170−msgid "Send"
171−msgstr "Pošlji"
172−
173−#: Dash/Apps/AppReviews.qml:136
174−msgid "Comments:"
175−msgstr "Opombe:"
176−
177#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
166#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
178msgid "Featured"
167msgid "Featured"
179msgstr "Predstavljeno"
168msgstr "Predstavljeno"
@@ -202,19 +191,23 @@ msgstr "Priljubljeno na spletu"
202msgid "Videos"
191msgid "Videos"
203msgstr "Videi"
192msgstr "Videi"
204
193
205−#: Dash/Video/VideoPreview.qml:130
194+#: Dash/Previews/Reviews.qml:74
206−msgid "Directed by:"
195+msgid "Add a review"
207−msgstr ""
196+msgstr "Dodaj oceno"
208
197
209−#: Dash/Video/VideoPreview.qml:153
198+#: Dash/Previews/Reviews.qml:86
210−msgid "Starring:"
199+msgid "Review"
211−msgstr ""
200+msgstr "Ocena"
212
201
213−#: Dash/Video/VideoPreview.qml:176
202+#: Dash/Previews/Reviews.qml:121
203+msgid "Send"
204+msgstr "Pošlji"
205+
206+#: Dash/Previews/Reviews.qml:139
214−msgid "Author:"
207+msgid "Comments:"
215−msgstr ""
208+msgstr "Opombe:"
216
209
217−#: Greeter/Lockscreen.qml:134
210+#: Greeter/Lockscreen.qml:142
218msgid "Emergency Call"
211msgid "Emergency Call"
219msgstr "Klic v sili"
212msgstr "Klic v sili"
220
213
@@ -251,11 +244,15 @@ msgstr "Govorjenje ..."
251msgid "Search"
244msgid "Search"
252msgstr "Iskanje"
245msgstr "Iskanje"
253
246
254−#: plugins/Unity/scope.cpp:317
247+#: plugins/Unity/scope.cpp:361
255msgid "Sorry, there is nothing that matches your search."
248msgid "Sorry, there is nothing that matches your search."
256msgstr "Nič se ne ujema z vašim iskalnim nizom."
249msgstr "Nič se ne ujema z vašim iskalnim nizom."
257
250
251+#: plugins/Unity/showallfilteroption.cpp:41
252+msgid "All"
253+msgstr "Vse"
254+
258−#: Shell.qml:429
255+#: Shell.qml:453
259#, qt-format
256#, qt-format
260msgid "Please enter %1"
257msgid "Please enter %1"
261msgstr "Vnesite %1"
258msgstr "Vnesite %1"
po/sr.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-27 09:19+0000\n"
11"PO-Revision-Date: 2013-06-27 09:19+0000\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
13"Language-Team: Serbian <sr@li.org>\n"
13"Language-Team: Serbian <sr@li.org>\n"
@@ -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-30 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16750)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,88 +87,76 @@ msgstr ""
87msgid "YouTube"
87msgid "YouTube"
88msgstr ""
88msgstr ""
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92msgstr ""
92msgstr ""
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96msgstr ""
96msgstr ""
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100msgstr ""
100msgstr ""
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104msgstr ""
104msgstr ""
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
108msgstr ""
109
109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111msgid "Close"
111msgid "Close"
112msgstr ""
112msgstr ""
113
113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
115msgid "Swipe up again to close the settings screen"
116msgstr ""
116msgstr ""
117
117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
119msgid "Left edge"
120msgstr ""
120msgstr ""
121
121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
124msgstr ""
125
125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127msgid "Well done"
127msgid "Well done"
128msgstr ""
128msgstr ""
129
129
130−#: Components/EdgeDemo.qml:218
130+#: Components/EdgeDemo.qml:227
131+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132msgstr ""
134msgstr ""
133
135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135msgid "Recent searches"
137msgid "Recent searches"
136msgstr "Скорашње претраге"
138msgstr "Скорашње претраге"
137
139
138#. TRANSLATORS: Number of persons who rated this app
140#. TRANSLATORS: Number of persons who rated this app
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
143#, qt-format
141msgid "(%1)"
144msgid "(%1)"
142msgstr ""
145msgstr ""
143
146
144#. TRANSLATORS: Number of persons who wrote reviews for this app
147#. TRANSLATORS: Number of persons who wrote reviews for this app
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
150#, qt-format
147msgid "%1 review"
151msgid "%1 review"
148msgid_plural "%1 reviews"
152msgid_plural "%1 reviews"
149msgstr[0] ""
153msgstr[0] ""
150msgstr[1] ""
154msgstr[1] ""
151
155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
157msgid "Rate this"
154msgstr ""
158msgstr ""
155
159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
161msgid "Featured"
174msgstr ""
162msgstr ""
@@ -197,19 +185,23 @@ msgstr ""
197msgid "Videos"
185msgid "Videos"
198msgstr "Видео"
186msgstr "Видео"
199
187
200−#: Dash/Video/VideoPreview.qml:130
188+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
202msgstr ""
194msgstr ""
203
195
204−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:121
205−msgid "Starring:"
197+msgid "Send"
206msgstr ""
198msgstr ""
207
199
208−#: Dash/Video/VideoPreview.qml:176
200+#: Dash/Previews/Reviews.qml:139
209−msgid "Author:"
201+msgid "Comments:"
210msgstr ""
202msgstr ""
211
203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
205msgid "Emergency Call"
214msgstr ""
206msgstr ""
215
207
@@ -246,11 +238,15 @@ msgstr "Говор..."
246msgid "Search"
238msgid "Search"
247msgstr "Претрага"
239msgstr "Претрага"
248
240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
242msgid "Sorry, there is nothing that matches your search."
251msgstr "Нажалост, претрага није наишла на икакво подударање."
243msgstr "Нажалост, претрага није наишла на икакво подударање."
252
244
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
253−#: Shell.qml:429
249+#: Shell.qml:453
254#, qt-format
250#, qt-format
255msgid "Please enter %1"
251msgid "Please enter %1"
256msgstr ""
252msgstr ""
po/sv.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
11"PO-Revision-Date: 2013-06-26 22:36+0000\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13"Language-Team: 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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr ""
137msgstr ""
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr ""
185msgstr ""
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr ""
245msgid "Search"
237msgid "Search"
246msgstr ""
238msgstr ""
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr ""
242msgstr ""
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/te.po+40−44
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\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-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,76 @@ msgstr ""
86msgid "YouTube"
86msgid "YouTube"
87msgstr ""
87msgstr ""
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95msgstr ""
95msgstr ""
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103msgstr ""
103msgstr ""
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111msgstr ""
111msgstr ""
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119msgstr ""
119msgstr ""
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr ""
137msgstr ""
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141msgstr ""
144msgstr ""
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148msgstr[0] ""
152msgstr[0] ""
149msgstr[1] ""
153msgstr[1] ""
150
154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
156msgid "Rate this"
153msgstr ""
157msgstr ""
154
158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
160msgid "Featured"
173msgstr ""
161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196msgid "Videos"
184msgid "Videos"
197msgstr ""
185msgstr ""
198
186
199−#: Dash/Video/VideoPreview.qml:130
187+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
201msgstr ""
193msgstr ""
202
194
203−#: Dash/Video/VideoPreview.qml:153
195+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
196+msgid "Send"
205msgstr ""
197msgstr ""
206
198
207−#: Dash/Video/VideoPreview.qml:176
199+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
200+msgid "Comments:"
209msgstr ""
201msgstr ""
210
202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
204msgid "Emergency Call"
213msgstr ""
205msgstr ""
214
206
@@ -245,11 +237,15 @@ msgstr ""
245msgid "Search"
237msgid "Search"
246msgstr ""
238msgstr ""
247
239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
241msgid "Sorry, there is nothing that matches your search."
250msgstr ""
242msgstr ""
251
243
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
252−#: Shell.qml:429
248+#: Shell.qml:453
253#, qt-format
249#, qt-format
254msgid "Please enter %1"
250msgid "Please enter %1"
255msgstr ""
251msgstr ""
po/tr.po+67−70
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 10:08+0000\n"
11+"PO-Revision-Date: 2013-10-01 13:21+0000\n"
12−"Last-Translator: Adar Cem EREN <adarcemeren34@gmail.com>\n"
12+"Last-Translator: Volkan Gezer <Unknown>\n"
13"Language-Team: Turkish <tr@li.org>\n"
13"Language-Team: Turkish <tr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -64,7 +64,7 @@ msgstr "Ortam Oynatıcı"
64
64
65#: Applications/applications.js:86
65#: Applications/applications.js:86
66msgid "Evernote"
66msgid "Evernote"
67−msgstr ""
67+msgstr "Evernote"
68
68
69#: Applications/applications.js:91
69#: Applications/applications.js:91
70msgid "Map"
70msgid "Map"
@@ -72,11 +72,11 @@ msgstr "Harita"
72
72
73#: Applications/applications.js:96
73#: Applications/applications.js:96
74msgid "Pinterest"
74msgid "Pinterest"
75−msgstr ""
75+msgstr "Pinterest"
76
76
77#: Applications/applications.js:101
77#: Applications/applications.js:101
78msgid "SoundCloud"
78msgid "SoundCloud"
79−msgstr ""
79+msgstr "SoundCloud"
80
80
81#: Applications/applications.js:106
81#: Applications/applications.js:106
82msgid "Wikipedia"
82msgid "Wikipedia"
@@ -86,87 +86,76 @@ msgstr "Vikipedi"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91−msgstr ""
91+msgstr "İntro'yu geç"
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "Sağ kenar"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Kilidi açmak için sağ kenara sürüklemeyi deneyin"
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "Üst kenar"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "Bildiricilere erişmek için üst kenarı sürüklemeyi deneyin"
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111−msgstr ""
111+msgstr "Kapat"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "Ayarlar ekranını kapatmak için tekrar yukarı kaydırın"
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119−msgstr ""
119+msgstr "Sol kenar"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124+"Uygulamalara hızlı erişim çalıştırıcısını açmak için sol kenarı sürükleyin"
124
125
125−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
126msgid "Well done"
127msgid "Well done"
127−msgstr ""
128+msgstr "Tebrikler"
128
129
129−#: Components/EdgeDemo.qml:218
130+#: Components/EdgeDemo.qml:227
131+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
131msgstr ""
134msgstr ""
132
135
133−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
134msgid "Recent searches"
137msgid "Recent searches"
135msgstr "Son Arananlar"
138msgstr "Son Arananlar"
136
139
137#. TRANSLATORS: Number of persons who rated this app
140#. TRANSLATORS: Number of persons who rated this app
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
143#, qt-format
140msgid "(%1)"
144msgid "(%1)"
141−msgstr ""
145+msgstr "(%1)"
142
146
143#. TRANSLATORS: Number of persons who wrote reviews for this app
147#. TRANSLATORS: Number of persons who wrote reviews for this app
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
150#, qt-format
146msgid "%1 review"
151msgid "%1 review"
147msgid_plural "%1 reviews"
152msgid_plural "%1 reviews"
148−msgstr[0] ""
153+msgstr[0] "%1 inceleme"
149−msgstr[1] ""
154+msgstr[1] "%1 inceleme"
150
155
151−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
157msgid "Rate this"
153−msgstr ""
158+msgstr "Oyla"
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170
159
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
161msgid "Featured"
@@ -178,11 +167,11 @@ msgstr "En Son"
178
167
179#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
168#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180msgid "New Releases"
169msgid "New Releases"
181−msgstr ""
170+msgstr "Yeni Sürümler"
182
171
183#: Dash/DashMusic.qml:30
172#: Dash/DashMusic.qml:30
184msgid "Top Charting"
173msgid "Top Charting"
185−msgstr ""
174+msgstr "En Çok Beğenilenler"
186
175
187#: Dash/DashMusic.qml:91
176#: Dash/DashMusic.qml:91
188msgid "Music"
177msgid "Music"
@@ -196,26 +185,30 @@ msgstr "Genellikle Çevrimiçi"
196msgid "Videos"
185msgid "Videos"
197msgstr "Videolar"
186msgstr "Videolar"
198
187
199−#: Dash/Video/VideoPreview.qml:130
188+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
189+msgid "Add a review"
190+msgstr "Bir inceleme ekle"
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
201−msgstr "Yönetmen"
194+msgstr "İnceleme"
202
195
203−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:121
204−msgid "Starring:"
197+msgid "Send"
205−msgstr ""
198+msgstr "Gönder"
206
199
207−#: Dash/Video/VideoPreview.qml:176
200+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
201+msgid "Comments:"
209−msgstr "Yazar:"
202+msgstr "Yorumlar:"
210
203
211−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
205msgid "Emergency Call"
213−msgstr ""
206+msgstr "Acil Arama"
214
207
215#: Greeter/PassphraseLockscreen.qml:59
208#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
209#, qt-format
217msgid "Hello %1"
210msgid "Hello %1"
218−msgstr ""
211+msgstr "Merhaba %1"
219
212
220#: Greeter/PassphraseLockscreen.qml:59
213#: Greeter/PassphraseLockscreen.qml:59
221msgid "Hello"
214msgid "Hello"
@@ -245,11 +238,15 @@ msgstr "Konuşuyor..."
245msgid "Search"
238msgid "Search"
246msgstr "Ara"
239msgstr "Ara"
247
240
248−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
242msgid "Sorry, there is nothing that matches your search."
250msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
243msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
251
244
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
252−#: Shell.qml:429
249+#: Shell.qml:453
253#, qt-format
250#, qt-format
254msgid "Please enter %1"
251msgid "Please enter %1"
255−msgstr ""
252+msgstr "Lütfen %1 girin"
po/ug.po+51−56
@@ -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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-06-27 11:02+0000\n"
11+"PO-Revision-Date: 2013-10-09 22:38+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Gheyret T.Kenji <Unknown>\n"
13"Language-Team: Uyghur <ug@li.org>\n"
13"Language-Team: Uyghur <ug@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=1; plural=0;\n"
17"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
18+"X-Launchpad-Export-Date: 2013-10-10 05:50+0000\n"
19−"X-Generator: Launchpad (build 16750)\n"
19+"X-Generator: Launchpad (build 16799)\n"
20
20
21#: Applications/applications.js:23
21#: Applications/applications.js:23
22msgid "Phone"
22msgid "Phone"
@@ -86,88 +86,75 @@ msgstr "ۋىكىپېدىيە"
86msgid "YouTube"
86msgid "YouTube"
87msgstr "YouTube"
87msgstr "YouTube"
88
88
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
90msgid "Skip intro"
90msgid "Skip intro"
91msgstr ""
91msgstr ""
92
92
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
94msgid "Right edge"
94msgid "Right edge"
95−msgstr ""
95+msgstr "ئوڭ گىرۋەك"
96
96
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
98msgid "Try swiping from the right edge to unlock the phone"
98msgid "Try swiping from the right edge to unlock the phone"
99msgstr ""
99msgstr ""
100
100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102msgid "Top edge"
102msgid "Top edge"
103−msgstr ""
103+msgstr "ئۈستى گىرۋەك"
104
104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106msgid "Try swiping from the top edge to access the indicators"
106msgid "Try swiping from the top edge to access the indicators"
107msgstr ""
107msgstr ""
108
108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110msgid "Close"
110msgid "Close"
111−msgstr ""
111+msgstr "ياپ"
112
112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114msgid "Swipe up again to close the settings screen"
114msgid "Swipe up again to close the settings screen"
115msgstr ""
115msgstr ""
116
116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118msgid "Left edge"
118msgid "Left edge"
119−msgstr ""
119+msgstr "سول گىرۋەك"
120
120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123msgstr ""
123msgstr ""
124
124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126msgid "Well done"
126msgid "Well done"
127msgstr ""
127msgstr ""
128
128
129−#: Components/EdgeDemo.qml:218
129+#: Components/EdgeDemo.qml:227
130+msgid ""
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
131msgstr ""
133msgstr ""
132
134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134msgid "Recent searches"
136msgid "Recent searches"
135msgstr "يېقىنقى ئىزدەشلەر"
137msgstr "يېقىنقى ئىزدەشلەر"
136
138
137#. TRANSLATORS: Number of persons who rated this app
139#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
138−#: Dash/Apps/AppInfo.qml:73
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
139#, qt-format
142#, qt-format
140msgid "(%1)"
143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142
145
143#. TRANSLATORS: Number of persons who wrote reviews for this app
146#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
144−#: Dash/Apps/AppInfo.qml:85
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
145#, qt-format
149#, qt-format
146msgid "%1 review"
150msgid "%1 review"
147msgid_plural "%1 reviews"
151msgid_plural "%1 reviews"
148−msgstr[0] ""
152+msgstr[0] "%1 باھا"
149−msgstr[1] ""
150
153
151−#: Dash/Apps/AppPreview.qml:175
154+#: Dash/Apps/AppPreview.qml:126
152msgid "Rate this"
155msgid "Rate this"
153msgstr ""
156msgstr ""
154
157
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
158#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172msgid "Featured"
159msgid "Featured"
173msgstr "داڭلىق"
160msgstr "داڭلىق"
@@ -196,26 +183,30 @@ msgstr ""
196msgid "Videos"
183msgid "Videos"
197msgstr "سىنلار"
184msgstr "سىنلار"
198
185
199−#: Dash/Video/VideoPreview.qml:130
186+#: Dash/Previews/Reviews.qml:74
200−msgid "Directed by:"
187+msgid "Add a review"
201msgstr ""
188msgstr ""
202
189
203−#: Dash/Video/VideoPreview.qml:153
190+#: Dash/Previews/Reviews.qml:86
204−msgid "Starring:"
191+msgid "Review"
205msgstr ""
192msgstr ""
206
193
207−#: Dash/Video/VideoPreview.qml:176
194+#: Dash/Previews/Reviews.qml:121
195+msgid "Send"
196+msgstr "ئەۋەت"
197+
198+#: Dash/Previews/Reviews.qml:139
208−msgid "Author:"
199+msgid "Comments:"
209−msgstr "ئاپتور:"
200+msgstr "ئىنكاس:"
210
201
211−#: Greeter/Lockscreen.qml:134
202+#: Greeter/Lockscreen.qml:142
212msgid "Emergency Call"
203msgid "Emergency Call"
213msgstr ""
204msgstr ""
214
205
215#: Greeter/PassphraseLockscreen.qml:59
206#: Greeter/PassphraseLockscreen.qml:59
216#, qt-format
207#, qt-format
217msgid "Hello %1"
208msgid "Hello %1"
218−msgstr ""
209+msgstr "سالام %1"
219
210
220#: Greeter/PassphraseLockscreen.qml:59
211#: Greeter/PassphraseLockscreen.qml:59
221msgid "Hello"
212msgid "Hello"
@@ -245,11 +236,15 @@ msgstr "سۆزلەۋاتىسىز…"
245msgid "Search"
236msgid "Search"
246msgstr "ئىزدە"
237msgstr "ئىزدە"
247
238
248−#: plugins/Unity/scope.cpp:317
239+#: plugins/Unity/scope.cpp:361
249msgid "Sorry, there is nothing that matches your search."
240msgid "Sorry, there is nothing that matches your search."
250msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپىلمىدى."
241msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپىلمىدى."
251
242
243+#: plugins/Unity/showallfilteroption.cpp:41
244+msgid "All"
245+msgstr "ھەممىسى"
246+
252−#: Shell.qml:429
247+#: Shell.qml:453
253#, qt-format
248#, qt-format
254msgid "Please enter %1"
249msgid "Please enter %1"
255−msgstr ""
250+msgstr "%1 نى كىرگۈزۈڭ"
po/uk.po+62−62
@@ -7,17 +7,17 @@ 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-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11−"PO-Revision-Date: 2013-07-21 05:47+0000\n"
11+"PO-Revision-Date: 2013-09-28 07:54+0000\n"
12−"Last-Translator: Ярослав Смук <Smuk.Slavko@yandex.ua>\n"
12+"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
13"Language-Team: Ukrainian <uk@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"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-30 05:37+0000\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20−"X-Generator: Launchpad (build 16750)\n"
20+"X-Generator: Launchpad (build 16799)\n"
21
21
22#: Applications/applications.js:23
22#: Applications/applications.js:23
23msgid "Phone"
23msgid "Phone"
@@ -87,87 +87,79 @@ msgstr "Вікіпедія"
87msgid "YouTube"
87msgid "YouTube"
88msgstr "YouTube"
88msgstr "YouTube"
89
89
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
91msgid "Skip intro"
91msgid "Skip intro"
92−msgstr ""
92+msgstr "Пропустити вступ"
93
93
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
95msgid "Right edge"
95msgid "Right edge"
96−msgstr ""
96+msgstr "Правий край"
97
97
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
99msgid "Try swiping from the right edge to unlock the phone"
99msgid "Try swiping from the right edge to unlock the phone"
100−msgstr ""
100+msgstr "Спробуйте провести пальцем від правою краю, щоб розблокувати телефон"
101
101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103msgid "Top edge"
103msgid "Top edge"
104−msgstr ""
104+msgstr "Верхній край"
105
105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107msgid "Try swiping from the top edge to access the indicators"
107msgid "Try swiping from the top edge to access the indicators"
108msgstr ""
108msgstr ""
109+"Спробуйте провести пальцем від верхнього краю, щоб розблокувати телефон"
109
110
110−#: Components/EdgeDemo.qml:161
111+#: Components/EdgeDemo.qml:170
111msgid "Close"
112msgid "Close"
112−msgstr ""
113+msgstr "Закрити"
113
114
114−#: Components/EdgeDemo.qml:162
115+#: Components/EdgeDemo.qml:171
115msgid "Swipe up again to close the settings screen"
116msgid "Swipe up again to close the settings screen"
116−msgstr ""
117+msgstr "Проведіть пальцем ще раз, щоб закрити вікно параметрів"
117
118
118−#: Components/EdgeDemo.qml:189
119+#: Components/EdgeDemo.qml:198
119msgid "Left edge"
120msgid "Left edge"
120−msgstr ""
121+msgstr "Лівий край"
121
122
122−#: Components/EdgeDemo.qml:190
123+#: Components/EdgeDemo.qml:199
123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgid "Swipe from the left to reveal the launcher for quick access to apps"
124msgstr ""
125msgstr ""
126+"Проведіть пальцем від лівого краю, щоб відкрити панель запуску для "
127+"пришвидшення доступу до програм"
125
128
126−#: Components/EdgeDemo.qml:217
129+#: Components/EdgeDemo.qml:226
127msgid "Well done"
130msgid "Well done"
128−msgstr ""
131+msgstr "Добре"
129
132
130−#: Components/EdgeDemo.qml:218
133+#: Components/EdgeDemo.qml:227
134+msgid ""
131−msgid "You have now mastered the edge gestures and can start using the phone"
135+"You have now mastered the edge gestures and can start using the "
136+"phone<br><br>Tap anywhere to start"
132msgstr ""
137msgstr ""
133
138
134−#: Components/PageHeader.qml:298
139+#: Components/PageHeader.qml:341
135msgid "Recent searches"
140msgid "Recent searches"
136msgstr "Нещодавні пошуки"
141msgstr "Нещодавні пошуки"
137
142
138#. TRANSLATORS: Number of persons who rated this app
143#. TRANSLATORS: Number of persons who rated this app
144+#. TRANSLATORS: Number of persons who rated this app/video/whatever
139−#: Dash/Apps/AppInfo.qml:73
145+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
140#, qt-format
146#, qt-format
141msgid "(%1)"
147msgid "(%1)"
142−msgstr ""
148+msgstr "(%1)"
143
149
144#. TRANSLATORS: Number of persons who wrote reviews for this app
150#. TRANSLATORS: Number of persons who wrote reviews for this app
151+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
145−#: Dash/Apps/AppInfo.qml:85
152+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
146#, qt-format
153#, qt-format
147msgid "%1 review"
154msgid "%1 review"
148msgid_plural "%1 reviews"
155msgid_plural "%1 reviews"
149−msgstr[0] ""
156+msgstr[0] "%1 рецензія"
150−msgstr[1] ""
157+msgstr[1] "%1 рецензії"
158+msgstr[2] "%1 рецензій"
151
159
152−#: Dash/Apps/AppPreview.qml:175
160+#: Dash/Apps/AppPreview.qml:126
153msgid "Rate this"
161msgid "Rate this"
154−msgstr ""
162+msgstr "Оцінити"
155−
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171
163
172#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173msgid "Featured"
165msgid "Featured"
@@ -197,21 +189,25 @@ msgstr "Популярне у мережі"
197msgid "Videos"
189msgid "Videos"
198msgstr "Відео"
190msgstr "Відео"
199
191
200−#: Dash/Video/VideoPreview.qml:130
192+#: Dash/Previews/Reviews.qml:74
201−msgid "Directed by:"
193+msgid "Add a review"
202−msgstr "Режисер:"
194+msgstr "Додати рецензію"
203
195
204−#: Dash/Video/VideoPreview.qml:153
196+#: Dash/Previews/Reviews.qml:86
205−msgid "Starring:"
197+msgid "Review"
206−msgstr "Актори:"
198+msgstr "Рецензія"
199+
200+#: Dash/Previews/Reviews.qml:121
201+msgid "Send"
202+msgstr "Надіслати"
207
203
208−#: Dash/Video/VideoPreview.qml:176
204+#: Dash/Previews/Reviews.qml:139
209−msgid "Author:"
205+msgid "Comments:"
210−msgstr "Автор:"
206+msgstr "Коментарі:"
211
207
212−#: Greeter/Lockscreen.qml:134
208+#: Greeter/Lockscreen.qml:142
213msgid "Emergency Call"
209msgid "Emergency Call"
214−msgstr ""
210+msgstr "Терміновий виклик"
215
211
216#: Greeter/PassphraseLockscreen.qml:59
212#: Greeter/PassphraseLockscreen.qml:59
217#, qt-format
213#, qt-format
@@ -246,11 +242,15 @@ msgstr "Мовлення…"
246msgid "Search"
242msgid "Search"
247msgstr "Пошук"
243msgstr "Пошук"
248
244
249−#: plugins/Unity/scope.cpp:317
245+#: plugins/Unity/scope.cpp:361
250msgid "Sorry, there is nothing that matches your search."
246msgid "Sorry, there is nothing that matches your search."
251msgstr "Вибачте, для вказаних вами ключових слів нічого не знайдено."
247msgstr "Вибачте, для вказаних вами ключових слів нічого не знайдено."
252
248
249+#: plugins/Unity/showallfilteroption.cpp:41
250+msgid "All"
251+msgstr ""
252+
253−#: Shell.qml:429
253+#: Shell.qml:453
254#, qt-format
254#, qt-format
255msgid "Please enter %1"
255msgid "Please enter %1"
256msgstr "Будь ласка, введіть %1"
256msgstr "Будь ласка, введіть %1"
po/unity8.pot+38−42

This diff is too big to show here.

po/xh.ponew file+251

This diff is too big to show here.

po/zh_CN.po+46−50

This diff is too big to show here.

po/zh_TW.po+40−44

This diff is too big to show here.

run_on_device+1−1

This diff is too big to show here.

tests/autopilot/unity8/indicators_client/__init__.pydeleted−8

This diff is too big to show here.

tests/autopilot/unity8/indicators_client/emulators/__init__.pydeleted−31

This diff is too big to show here.

tests/autopilot/unity8/indicators_client/emulators/common.pydeleted−14

This diff is too big to show here.

tests/autopilot/unity8/indicators_client/emulators/main_window.pydeleted−27

This diff is too big to show here.

tests/autopilot/unity8/indicators_client/tests/__init__.pydeleted−91

This diff is too big to show here.

tests/autopilot/unity8/indicators_client/tests/test_battery.pydeleted−114

This diff is too big to show here.

tests/autopilot/unity8/shell/__init__.py+14

This diff is too big to show here.

tests/autopilot/unity8/shell/emulators/dash.py+15−6

This diff is too big to show here.

tests/autopilot/unity8/shell/emulators/hud.py+8−9

This diff is too big to show here.

tests/autopilot/unity8/shell/emulators/main_window.py+3

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/__init__.py+26−7

This diff is too big to show here.

tests/autopilot/unity8/shell/tests/test_hud.py+43−9

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.cpp+13−1

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.h+8

This diff is too big to show here.

plugins/Unity/Indicators/Network/plugin.cpp → tests/mocks/QMenuModel/UnityMenuModel.qmlrenamed+9−14

This diff is too big to show here.

tests/mocks/QMenuModel/qmldir+1

This diff is too big to show here.

tests/mocks/Unity/Indicators/IndicatorsModel.qml+5−15

This diff is too big to show here.

tests/mocks/Unity/fake_applications_scope.cpp+7

This diff is too big to show here.

tests/mocks/Unity/fake_categories.cpp+6

This diff is too big to show here.

tests/mocks/Unity/fake_categories.h+1

This diff is too big to show here.

tests/mocks/Unity/fake_preview.cpp−5

This diff is too big to show here.

tests/mocks/Unity/fake_preview.h−2

This diff is too big to show here.

tests/mocks/Unity/fake_scope.cpp+26

This diff is too big to show here.

tests/mocks/Unity/fake_scope.h+10−1

This diff is too big to show here.

tests/mocks/libusermetrics/UserMetrics.cpp+6−2

This diff is too big to show here.

tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+8

This diff is too big to show here.

tests/plugins/Unity/CMakeLists.txt+1−1

This diff is too big to show here.

tests/plugins/Unity/Indicators/indicatorsmodeltest.cpp−15

This diff is too big to show here.

tests/plugins/Unity/Launcher/launcherbackendtest.cpp+2−23

This diff is too big to show here.

tests/plugins/Unity/resultstest.cpp+100−9

This diff is too big to show here.

tests/plugins/Unity/resultstest.h+2

This diff is too big to show here.

tests/qmltests/CMakeLists.txt+4−3

This diff is too big to show here.

tests/qmltests/Components/tst_LazyImage.qml+40−15

This diff is too big to show here.

tests/qmltests/Components/tst_PageHeader.qml+28

This diff is too big to show here.

tests/qmltests/Components/tst_Showable.qml+27

This diff is too big to show here.

tests/qmltests/Dash/Apps/tst_AppPreview.qml+60−24

This diff is too big to show here.

tests/qmltests/Dash/Movie/tst_MoviePreview.qmlnew file+85

This diff is too big to show here.

tests/qmltests/Dash/Video/tst_VideoPreview.qmldeleted−63

This diff is too big to show here.

tests/qmltests/Dash/qml/FakeScopeView.qml+3−9

This diff is too big to show here.

tests/qmltests/Dash/tst_DashContent.qml+29−5

This diff is too big to show here.

tests/qmltests/Dash/tst_DashPreview.qml+66−19

This diff is too big to show here.

tests/qmltests/Dash/tst_FilterGrids.qml+1−1

This diff is too big to show here.

tests/qmltests/Dash/tst_GenericPreview.qmlnew file+116

This diff is too big to show here.

tests/qmltests/Greeter/tst_Infographics.qml+4−4

This diff is too big to show here.

tests/qmltests/Greeter/tst_Phone.qml+15

This diff is too big to show here.

tests/qmltests/Notifications/tst_Notifications.qml+7−2

This diff is too big to show here.

tests/qmltests/Panel/tst_IndicatorRow.qml+3−3

This diff is too big to show here.

tests/qmltests/tst_Shell.qml+125−2

This diff is too big to show here.