on xenial help sign in
[ David Callé ]

* Small logic change in preview descriptions line breaks. Multiple new lines are now replaced by multiple br tags. [ Nick Dedekind ] * Use indicator identifier for indicators-client list item label. * Make sure overflow indicators are hidden and not the search label. [ Mirco Müller ] * Tweaks to notifications to improve spec-compliance. - updated notifications-qmltest to reflect the use of a variant-map for the hints - made text-fields as heigh as buttons - made the summary align horizontally to the icon - updated button-height and bubble- background. [ Pawel Stolowski ] * Handle category_order_changes signal from scopes (used in Home only) and reorder categories accordingly. * Implementation of albumart image provider for audio content. [ Michael Terry ] * Hide the greeter when an app is focused, fixing snap decisions launching an app in the greeter (like receiving a call). [ Michael Zanetti ] * Launcher - remove support for pinning items in the backend After the latest design changes, recent apps is everything that is contained in the ApplicationManager. So no need for storing anything else than pinned apps in the config. [ Michał Sawicz ] * Remove the mir socket before starting unity8 during autopilot tests. [ Ubuntu daily release ] * Automatic snapshot from revision 420 [ Michal Hruby ] * Add Scope::isActive property and corresponding tests. (LP: #1230352) [ Daniel d'Andrada ] * Move OSKController to the front as it will now also block input meant to the OSK That's in the unity-mir implementation. The SurfaceFlinger one is still an empty noop. Currently, when the OSK is up, both shell and OSK get user input, thus we need the OSKController to shield our shell components from them. (LP: #1236773) [ Michał Sawicz ] * Add Scope::isActive property and corresponding tests. (LP: #1230352) * Force focus back on shell in case it loses it for some reason. [ Ubuntu daily release ] * Automatic snapshot from revision 409 [ Michał Sawicz ] * update previews to match design. (LP: #1224555) * Add an InputFilterArea in Notifications. (LP: #1233411, #1235215) [ Ying-Chun Liu ] * update previews to match design. (LP: #1224555) [ Albert Astals ] * Unrevert 376 by reverting r395 and a small fix to fix the cpu hogging issue . (LP: #1124567) [ Michael Terry ] * Add Showable.showNow() method and use it in Shell to immediately show greeter when we blank the screen rather than animating it. (LP: #1233564) [ Michael Zanetti ] * update previews to match design. (LP: #1224555) [ Diego Sarmentero ] * update previews to match design. (LP: #1224555) [ Ubuntu daily release ] * Automatic snapshot from revision 404

commit5cf4e1685fa26a20e28e13179bf6a2f4c374bb5e authorDiego Sarmentero <diego.sarmentero@gmail.com> dateFri 11 Oct 2013, 10:54 (13 years ago) parente696c90f11ec7d
126 files changed+3459−2417
Bottombar/Bottombar.qml+1−1 Components/ApplicationManagerWrapper.qml−29 Components/FilterGrid.qml+4−3 Components/LazyImage.qml+22−9 Components/ResponsiveGridView.qml+2 Components/Tile.qml+6−63 Components/TileStyle.qml+81 Components/VolumeControl.qml+1−1 Dash/Apps/AppsAvailableForDownloadModel.qml−81 Dash/Apps/DashPluginFilterGrid.qml+49 Dash/Apps/FrequentlyUsedAppsModel.qml+4−4 Dash/Apps/RunningApplicationTile.qml+2−2 Dash/Dash.qml+3 Dash/DashContent.qml+6−6 Dash/DashMusic.qml−96 Dash/DashVideos.qml−201 Dash/Generic/FlatTileStyle.qml+79 Dash/Generic/GenericFilterGrid.qml−3 Dash/Generic/GenericPreview.qml+1−1 Dash/Generic/WeatherFilterGrid.qml+49 Dash/GenericScopeView.qml+40−1 Dash/Music/MusicFilterGrid.qml+21−22 Dash/Music/MusicTileStyle.qml+101 Dash/ScopeDelegateMapper.qml+2−4 Dash/ScopeView.qml+12−3 Dash/Video/VideosFilterGrid.qml → Dash/Video/VideoFilterGrid.qml+17−13 Dash/Video/VideoTileStyle.qml+86 Dash/Video/graphics/movie_icon_holder@27.png Greeter/PinLockscreen.qml+5 Notifications/Notification.qml+7−4 Notifications/NotificationMenuItemFactory.qml+8−9 Panel/IndicatorRow.qml+51−12 Panel/Indicators.qml+2 Panel/Indicators/client/IndicatorsList.qml+1−1 Panel/Panel.qml+3−2 Panel/SearchIndicator.qml+9−8 Shell.qml+60−45 debian/changelog+91 debian/control+2 plugins/AccountsService/AccountsService.cpp+3−1 plugins/Unity/CMakeLists.txt+1−1 plugins/Unity/Indicators/indicatorsmanager.cpp+20−24 plugins/Unity/Indicators/indicatorsmanager.h−1 plugins/Unity/Indicators/qml/MenuItemFactory.qml+1 plugins/Unity/Launcher/backend/launcherbackend.cpp−33 plugins/Unity/Launcher/backend/launcherbackend.h−15 plugins/Unity/Launcher/launchermodel.cpp+3−7 plugins/Unity/categories.cpp+70−17 plugins/Unity/categories.h+10−1 plugins/Unity/categoryresults.cpp+2−1 plugins/Unity/iconutils.cpp+24−3 plugins/Unity/iconutils.h+2−1 plugins/Unity/preview.cpp+1−1 plugins/Unity/scope.cpp+44−6 plugins/Unity/scope.h+7 plugins/Utils/CMakeLists.txt+12−1 plugins/Utils/albumartprovider.cpp+231 plugins/Utils/albumartprovider.h+56 plugins/Utils/mediaartcache.cpp+178 plugins/Utils/mediaartcache.h+54 plugins/Utils/plugin.cpp+20−1 plugins/Utils/plugin.h+1 po/ar.po+24−34 po/ast.po+24−34 po/az.po+21−31 po/bg.po+22−32 po/ca.po+24−34 po/cs.po+252 po/de.po+24−34 po/el.po+21−31 po/en_AU.po+24−34 po/en_GB.po+24−34 po/eo.po+21−31 po/es.po+24−34 po/fi.po+24−34 po/fo.po+21−31 po/fr.po+21−31 po/gd.po+24−34 po/gl.po+24−34 po/he.po+24−34 po/hr.po+21−31 po/hu.po+21−31 po/hy.po+21−31 po/id.po+21−31 po/is.po+24−34 po/it.po+28−36 po/ja.po+21−31 po/kn.po+21−31 po/ko.po+44−54 po/ky.po+21−31 po/lo.po+22−32 po/lv.po+21−31 po/my.po+52−62 po/nb.po+21−31 po/nl.po+21−31 po/pl.po+24−34 po/pt_BR.po+24−34 po/ro.po+21−31 po/ru.po+24−34 po/shn.po+251 po/si.po+21−31 po/sl.po+24−34 po/sr.po+21−31 po/sv.po+21−31 po/te.po+21−31 po/tr.po+24−34 po/ug.po+33−44 po/uk.po+24−34 po/unity8.pot+3−31 po/xh.po+21−31 po/zh_CN.po+27−37 po/zh_TW.po+21−31 tests/autopilot/unity8/shell/tests/__init__.py+17 tests/mocks/Unity/fake_scope.cpp+13 tests/mocks/Unity/fake_scope.h+5 tests/plugins/Unity/CMakeLists.txt+1−1 tests/plugins/Unity/Launcher/launcherbackendtest.cpp−21 tests/plugins/Unity/resultstest.cpp+87 tests/plugins/Unity/resultstest.h+2 tests/qmltests/CMakeLists.txt+1−1 tests/qmltests/Components/tst_LazyImage.qml+40−15 tests/qmltests/Dash/qml/FakeScopeView.qml+3−9 tests/qmltests/Dash/tst_DashContent.qml+29−5 tests/qmltests/Dash/tst_FilterGrids.qml+1−1 tests/qmltests/Notifications/tst_Notifications.qml+7−2 tests/qmltests/tst_Shell.qml+57−2
Bottombar/Bottombar.qml+1−1
@@ -122,7 +122,7 @@ Item {
122122 id: dragArea
123123 objectName: "hudDragArea"
124124 width: parent.width
125− height: distanceThreshold
125+ height: shell.edgeSize
126126 anchors.bottom: parent.bottom
127127
128128 distanceThreshold: units.gu(8)
Components/ApplicationManagerWrapper.qml−29
@@ -25,7 +25,6 @@ Item {
2525 property variant mainStageFocusedApplication: null
2626 property variant sideStageFocusedApplication: null
2727 property bool sideStageEnabled: true
28− signal focusRequested(string desktopFile)
2928 property bool keyboardVisible: ApplicationManager.keyboardVisible
3029 property int keyboardHeight: ApplicationManager.keyboardHeight
3130
@@ -155,32 +154,4 @@ Item {
155154 }
156155 return desktopFile.substring(left+1, right);
157156 }
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− }
186157}
Components/FilterGrid.qml+4−3
@@ -57,6 +57,8 @@ Item {
5757 property alias delegate: iconTileGrid.delegate
5858 property alias cellWidth: iconTileGrid.cellWidth
5959 property alias cellHeight: iconTileGrid.cellHeight
60+ property alias delegateCreationBegin: iconTileGrid.delegateCreationBegin
61+ property alias delegateCreationEnd: iconTileGrid.delegateCreationEnd
6062 readonly property alias flicking: iconTileGrid.flicking
6163 readonly property alias moving: iconTileGrid.moving
6264 readonly property alias pressDelay: iconTileGrid.pressDelay
@@ -64,7 +66,7 @@ Item {
6466 height: !filterAnimation.running ? childrenRect.height : height
6567 clip: filterAnimation.running
6668
67− NumberAnimation {
69+ SmoothedAnimation {
6870 property bool filterEndValue
6971 id: filterAnimation
7072 target: root
@@ -73,7 +75,7 @@ Item {
7375 // Duration and easing here match the ListViewWithPageHeader::m_contentYAnimation
7476 // otherwise since both animations can run at the same time you'll get
7577 // some visual weirdness.
76− duration: 200
78+ velocity: units.gu(100)
7779 easing.type: Easing.InOutQuad
7880 onStopped: {
7981 root.filter = filterEndValue;
@@ -102,6 +104,5 @@ Item {
102104 model: root.model
103105 limit: (filter && !filterAnimation.running) ? collapsedRowCount * iconTileGrid.columns : -1
104106 }
105−
106107 }
107108}
Components/LazyImage.qml+22−9
@@ -52,7 +52,7 @@ Item {
5252 id: placeholder
5353 objectName: "placeholder"
5454 color: "#22FFFFFF"
55− anchors.fill: parent
55+ anchors.fill: shape
5656 visible: opacity != 0
5757
5858 ActivityIndicator {
@@ -79,7 +79,10 @@ Item {
7979 UbuntuShape {
8080 id: shape
8181 objectName: "shape"
82− anchors.fill: parent
82+ height: root.initialHeight
83+ width: root.initialWidth
84+ anchors.centerIn: root.scaleTo == "fit" ? parent : undefined
85+
8386 opacity: 0
8487 visible: opacity != 0
8588
@@ -88,16 +91,19 @@ Item {
8891 objectName: "image"
8992
9093 property url nextSource
94+ property string format: image.implicitWidth > image.implicitHeight ? "landscape" : "portrait"
9195
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
9597 asynchronous: true
9698 cache: false
9799 horizontalAlignment: Image.AlignHCenter
98100 verticalAlignment: Image.AlignVCenter
99− sourceSize.width: root.scaleTo == "width" ? root.width : 0
100− sourceSize.height: root.scaleTo == "height" ? root.height : 0
101+ sourceSize.width: root.scaleTo == "width" ? root.width
102+ : root.scaleTo == "fit" && root.width < root.height ? root.width
103+ : undefined
104+ sourceSize.height: root.scaleTo == "height" ? root.height
105+ : root.scale == "fit" && root.height < root.width ? root.height
106+ : undefined
101107 }
102108 }
103109
@@ -117,9 +123,14 @@ Item {
117123 State {
118124 name: "ready"
119125 when: image.status === Image.Ready && image.source != ""
120− PropertyChanges { target: root; implicitWidth: image.width; implicitHeight: image.height }
121− PropertyChanges { target: shape; opacity: 1 }
126+ PropertyChanges { target: root; implicitWidth: shape.width; implicitHeight: shape.height }
122127 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+ }
123134 },
124135 State {
125136 name: "error"
@@ -138,6 +149,7 @@ Item {
138149 ParallelAnimation {
139150 NumberAnimation { target: shape; property: "opacity"; easing.type: Easing.Linear }
140151 UbuntuNumberAnimation { target: root; properties: "implicitWidth,implicitHeight" }
152+ UbuntuNumberAnimation { target: shape; properties: "width,height" }
141153 NumberAnimation {
142154 targets: [placeholder, activity, errorImage]; property: "opacity";
143155 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
@@ -157,6 +169,7 @@ Item {
157169 easing.type: Easing.Linear; duration: UbuntuAnimation.SnapDuration
158170 }
159171 UbuntuNumberAnimation { target: root; properties: "implicitWidth,implicitHeight" }
172+ UbuntuNumberAnimation { target: shape; properties: "width,height" }
160173 }
161174 PropertyAction { target: shape; property: "visible" }
162175 }
Components/ResponsiveGridView.qml+2
@@ -39,6 +39,8 @@ Item {
3939 readonly property alias flicking: gridView.flicking
4040 readonly property alias moving: gridView.moving
4141 readonly property alias pressDelay: gridView.pressDelay
42+ property alias delegateCreationBegin: gridView.delegateCreationBegin
43+ property alias delegateCreationEnd: gridView.delegateCreationEnd
4244
4345 function contentHeightForRows(rows) {
4446 return rows * cellHeight + verticalSpacing
Components/Tile.qml+6−63
@@ -18,70 +18,13 @@ import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919
2020AbstractButton {
21− id: root
22− property alias source: image.source
23− property alias fillMode: image.fillMode
24− property alias horizontalAlignment: image.horizontalAlignment
25− property alias verticalAlignment: image.verticalAlignment
26− property alias text: label.text
21+ property url source
22+ property int fillMode: Image.PreserveAspectCrop
23+ property int horizontalAlignment: Text.AlignHCenter
24+ property string text
2725 property int imageWidth
2826 property int imageHeight
27+ property int maximumLineCount: 1
2928
30− UbuntuShape {
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− }
29+ style: TileStyle {}
8730}
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 {
2828 busName: "com.canonical.indicator.sound"
2929 objectPath: "/com/canonical/indicator/sound"
3030
31− property variant actionObject: action("scroll")
31+ property variant actionObject: action("volume")
3232 }
3333
3434 function volumeUp() {
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 {
6868 metadata: ""
6969 }
7070 ListElement {
71− uri: "application:///usr/share/applications/facebook-webapp.desktop"
71+ uri: "appid://com.ubuntu.developer.webapps.webapp-facebook/webapp-facebook/current-user-version"
7272 icon: "../../graphics/applicationIcons/facebook.png"
7373 category: 0
7474 mimetype: "application/x-desktop"
7575 title: "Facebook"
7676 comment: ""
77− dndUri: "file:///usr/share/applications/facebook-webapp.desktop"
77+ dndUri: "appid://com.ubuntu.developer.webapps.webapp-facebook/webapp-facebook/current-user-version"
7878 metadata: ""
7979 }
8080 ListElement {
@@ -88,13 +88,13 @@ ListModel {
8888 metadata: ""
8989 }
9090 ListElement {
91− uri: "application:///usr/share/applications/gmail-webapp.desktop"
91+ uri: "appid://com.ubuntu.developer.webapps.webapp-gmail/webapp-gmail/current-user-version"
9292 icon: "../../graphics/applicationIcons/gmail.png"
9393 category: 0
9494 mimetype: "application/x-desktop"
9595 title: "GMail"
9696 comment: ""
97− dndUri: "file:///usr/share/applications/gmail-webapp.desktop"
97+ dndUri: "appid://com.ubuntu.developer.webapps.webapp-gmail/webapp-gmail/current-user-version"
9898 metadata: ""
9999 }
100100 ListElement {
Dash/Apps/RunningApplicationTile.qml+2−2
@@ -124,8 +124,8 @@ AbstractButton {
124124
125125 CloseIcon {
126126 anchors {
127− right: shapedApplicationImage.right
128− rightMargin: -units.gu(1)
127+ left: shapedApplicationImage.left
128+ leftMargin: -units.gu(1)
129129 top: parent.top
130130 topMargin: -units.gu(1)
131131 }
Dash/Dash.qml+3
@@ -22,6 +22,9 @@ import "../Components"
2222
2323Showable {
2424 id: dash
25+ objectName: "dash"
26+
27+ visible: shown
2528
2629 property alias contentProgress: dashContent.contentProgress
2730 property string showScopeOnLoaded: "home.scope"
Dash/DashContent.qml+6−6
@@ -83,7 +83,7 @@ Item {
8383 id: dashContentList
8484 objectName: "dashContentList"
8585
86− interactive: dashContent.scopes.loaded
86+ interactive: dashContent.scopes.loaded && !currentItem.previewShown && !currentItem.moving
8787
8888 anchors.fill: parent
8989 model: dashContent.model
@@ -116,6 +116,9 @@ Item {
116116 source: scopeMapper.map(scope.id)
117117 objectName: scope.id + " loader"
118118
119+ readonly property bool previewShown: item.previewShown
120+ readonly property bool moving: item.moving
121+
119122 // these are needed for autopilot tests
120123 readonly property string scopeId: scope.id
121124 readonly property bool isCurrent: ListView.isCurrentItem
@@ -123,7 +126,7 @@ Item {
123126
124127 onLoaded: {
125128 item.scope = Qt.binding(function() { return scope })
126− item.isCurrent = Qt.binding(function() { return ListView.isCurrentItem })
129+ item.isCurrent = Qt.binding(function() { return visible && ListView.isCurrentItem })
127130 item.searchHistory = Qt.binding(function() { return shell.searchHistory })
128131 dashContentList.movementStarted.connect(item.movementStarted)
129132 dashContent.positionedAtBeginning.connect(item.positionedAtBeginning)
@@ -135,10 +138,7 @@ Item {
135138 onEndReached: contentEndReached()
136139 onPreviewShownChanged: {
137140 if (item.previewShown) {
138− previewShown()
139− dashContentList.interactive = false
140− } else {
141− dashContentList.interactive = true
141+ dashContent.previewShown()
142142 }
143143 }
144144 }
Dash/DashMusic.qmldeleted−96
@@ -1,96 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Ubuntu.Components 0.1
19−import "../Components"
20−import "../Components/ListItems" as ListItems
21−import "Music"
22−
23−ScopeView {
24− id: scopeView
25−
26− property var categoryNames: [
27− i18n.tr("Featured"),
28− i18n.tr("Recent"),
29− i18n.tr("New Releases"),
30− i18n.tr("Top Charting")
31− ]
32−
33− onIsCurrentChanged: {
34− pageHeader.resetSearch();
35− }
36−
37− onMovementStarted: categoryView.showHeader()
38−
39− Binding {
40− target: scopeView.scope
41− property: "searchQuery"
42− value: pageHeader.searchQuery
43− }
44−
45− Connections {
46− target: panel
47− onSearchClicked: if (isCurrent) {
48− pageHeader.triggerSearch()
49− categoryView.showHeader()
50− }
51− }
52−
53− function getRenderer(categoryId) {
54− switch (categoryId) {
55− case "featured": return "Music/MusicCarousel.qml"
56− default: return "Music/MusicFilterGrid.qml"
57− }
58− }
59−
60− ScopeListView {
61− id: categoryView
62− anchors.fill: parent
63− model: scopeView.categories
64−
65− onAtYEndChanged: if (atYEnd) endReached()
66− onMovingChanged: if (moving && atYEnd) endReached()
67−
68− delegate: ListItems.Base {
69− id: base
70− highlightWhenPressed: false
71−
72− property string categoryId: model.categoryId
73−
74− Loader {
75− anchors { top: parent.top; left: parent.left; right: parent.right }
76− source: scopeView.getRenderer(base.categoryId)
77− onLoaded: {
78− item.model = results
79− }
80− }
81− }
82−
83− sectionProperty: "name"
84− sectionDelegate: ListItems.Header {
85− width: categoryView.width
86− text: i18n.tr(section)
87− }
88− pageHeader: PageHeader {
89− id: pageHeader
90− width: categoryView.width
91− text: i18n.tr("Music")
92− searchEntryEnabled: true
93− searchHistory: scopeView.searchHistory
94− }
95− }
96−}
Dash/DashVideos.qmldeleted−201
@@ -1,201 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Ubuntu.Components 0.1
19−import "../Components"
20−import "../Components/ListItems" as ListItems
21−import "Video"
22−
23−ScopeView {
24− id: scopeView
25− property alias previewShown: previewLoader.onScreen
26−
27− property var categoryNames: [
28− i18n.tr("Featured"),
29− i18n.tr("Recent"),
30− i18n.tr("New Releases"),
31− i18n.tr("Popular Online")
32− ]
33−
34− onIsCurrentChanged: {
35− pageHeader.resetSearch();
36− }
37−
38− onMovementStarted: categoryView.showHeader()
39−
40− Binding {
41− target: scopeView.scope
42− property: "searchQuery"
43− value: pageHeader.searchQuery
44− }
45−
46− Connections {
47− target: panel
48− onSearchClicked: if (isCurrent) {
49− pageHeader.triggerSearch()
50− categoryView.showHeader()
51− }
52− }
53−
54− function getRenderer(categoryId) {
55− switch (categoryId) {
56− case "featured": return "Video/VideosCarousel.qml"
57− default: return "Video/VideosFilterGrid.qml"
58− }
59− }
60−
61− OpenEffect {
62− id: effect
63− anchors {
64− fill: parent
65− bottomMargin: -bottomOverflow
66− }
67− sourceItem: categoryView
68−
69− enabled: gap > 0.0
70−
71− topGapPx: (1 - gap) * positionPx
72− topOpacity: Math.max(0, (1 - gap * 1.2))
73− bottomGapPx: positionPx + gap * (targetBottomGapPx - positionPx)
74− bottomOverflow: units.gu(6)
75− bottomOpacity: 1 - (gap * 0.8)
76−
77− property int targetBottomGapPx: height - units.gu(8) - bottomOverflow
78− property real gap: previewLoader.open ? 1.0 : 0.0
79−
80− Behavior on gap {
81− NumberAnimation {
82− duration: 200
83− easing.type: Easing.InOutQuad
84− onRunningChanged: {
85− if (!previewLoader.open && !running) {
86− previewLoader.onScreen = false;
87− }
88− }
89− }
90− }
91− }
92−
93− ScopeListView {
94− id: categoryView
95− anchors.fill: parent
96− model: scopeView.categories
97− forceNoClip: previewLoader.onScreen
98−
99− onAtYEndChanged: if (atYEnd) endReached()
100− onMovingChanged: if (moving && atYEnd) endReached()
101−
102− delegate: ListItems.Base {
103− id: base
104− highlightWhenPressed: false
105− property string categoryId: model.categoryId
106−
107− Loader {
108− id: loader
109− anchors { top: parent.top; left: parent.left; right: parent.right }
110− source: scopeView.getRenderer(base.categoryId)
111− onLoaded: {
112− item.model = results
113− }
114−
115− Connections {
116− target: loader.item
117− onClicked: {
118− var dataItem;
119− // VideosCarousel and VideosFilterGrid have different
120− // clicked signals, accomodate for that
121− if (categoryId == "featured") {
122− var fileUri = delegateItem.model.uri.replace(/^[^:]+:/, "")
123− dataItem = {fileUri: fileUri, nfoUri: delegateItem.model.comment}
124− } else {
125− dataItem = data;
126− }
127− if (dataItem.nfoUri != "") {
128− previewLoader.videoData = dataItem;
129− previewLoader.open = true;
130− effect.positionPx = mapToItem(categoryView, 0, itemY).y;
131− }
132− }
133− }
134− }
135− }
136−
137− sectionProperty: "name"
138− sectionDelegate: ListItems.Header {
139− width: categoryView.width
140− text: i18n.tr(section)
141− }
142−
143− pageHeader: PageHeader {
144− id: pageHeader
145− width: categoryView.width
146− text: i18n.tr("Videos")
147− searchEntryEnabled: true
148− searchHistory: scopeView.searchHistory
149− }
150− }
151−
152− Loader {
153− id: previewLoader
154− height: effect.bottomGapPx - effect.topGapPx
155− anchors {
156− top: parent.top
157− topMargin: effect.topGapPx
158− left: parent.left
159− right: parent.right
160− }
161− sourceComponent: onScreen ? previewComponent : undefined
162−
163− property bool open: false
164− property bool onScreen: false
165− property var videoData
166−
167−
168− onOpenChanged: {
169− if (open) {
170− onScreen = true;
171− }
172− }
173−
174− onLoaded: {
175− item.item = videoData;
176− }
177− }
178−
179− Component {
180− id: previewComponent
181−
182− VideoPreview {
183− id: preview
184− anchors.fill: parent
185− onClose: open = false;
186− }
187− }
188−
189− // TODO: Move as InverseMouseArea to DashPreview
190− MouseArea {
191− enabled: previewLoader.onScreen
192− anchors {
193− fill: parent
194− topMargin: effect.bottomGapPx
195− }
196− onClicked: {
197− previewLoader.open = false;
198− }
199− }
200−
201−}
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 {
3939 text: model.title
4040 imageWidth: filtergrid.iconWidth
4141 imageHeight: filtergrid.iconHeight
42−
4342 source: model.icon
4443
45− fillMode: Image.PreserveAspectCrop
46−
4744 onClicked: {
4845 var data = { model: model }
4946 filtergrid.clicked(index, data, tile.y)
Dash/Generic/GenericPreview.qml+1−1
@@ -125,7 +125,7 @@ DashPreview {
125125 fontSize: "small"
126126 opacity: 0.6
127127 color: "white"
128− text: previewData.description.replace(/[\r\n]+/g, "<br />")
128+ text: previewData.description.replace(/[\r\n]/g, "<br />")
129129 style: Text.Raised
130130 styleColor: "black"
131131 wrapMode: Text.WordWrap
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+40−1
@@ -24,6 +24,8 @@ ScopeView {
2424 readonly property alias previewShown: previewLoader.onScreen
2525 property bool enableHeightBehaviorOnNextCreation: false
2626
27+ moving: categoryView.moving
28+
2729 onIsCurrentChanged: {
2830 pageHeader.resetSearch();
2931 previewLoader.open = false;
@@ -73,6 +75,7 @@ ScopeView {
7375 property string expandedCategoryId: ""
7476
7577 delegate: ListItems.Base {
78+ id: baseItem
7679 highlightWhenPressed: false
7780
7881 readonly property bool expandable: rendererLoader.item ? rendererLoader.item.expandable : false
@@ -98,6 +101,7 @@ ScopeView {
98101 // TODO: the running apps grid doesn't support standard scope results model yet
99102 item.firstModel = Qt.binding(function() { return results.firstModel })
100103 item.secondModel = Qt.binding(function() { return results.secondModel })
104+ item.canEnableTerminationMode = Qt.binding(function() { return scopeView.isCurrent })
101105 } else {
102106 item.model = Qt.binding(function() { return results })
103107 }
@@ -108,6 +112,7 @@ ScopeView {
108112 item.filter = shouldFilter;
109113 }
110114 }
115+ updateDelegateCreationRange();
111116 }
112117
113118 Component.onDestruction: {
@@ -164,6 +169,33 @@ ScopeView {
164169 }
165170 }
166171 }
172+ onContentYChanged: rendererLoader.updateDelegateCreationRange();
173+ onHeightChanged: rendererLoader.updateDelegateCreationRange();
174+ }
175+
176+ function updateDelegateCreationRange() {
177+ // Do not update the range if we are overshooting up or down, since we'll come back
178+ // to the stable position and delete/create items without any reason
179+ if (categoryView.contentY < categoryView.originY) {
180+ return;
181+ } else if (categoryView.contentY + categoryView.height > categoryView.contentHeight) {
182+ return;
183+ }
184+
185+ if (item.hasOwnProperty("delegateCreationBegin")) {
186+ if (baseItem.y + baseItem.height <= 0) {
187+ // Not visible (item at top of the list)
188+ item.delegateCreationBegin = baseItem.height
189+ item.delegateCreationEnd = baseItem.height
190+ } else if (baseItem.y >= categoryView.height) {
191+ // Not visible (item at bottom of the list)
192+ item.delegateCreationBegin = 0
193+ item.delegateCreationEnd = 0
194+ } else {
195+ item.delegateCreationBegin = Math.max(-baseItem.y, 0)
196+ item.delegateCreationEnd = Math.min(categoryView.height + item.delegateCreationBegin, baseItem.height)
197+ }
198+ }
167199 }
168200 }
169201 }
@@ -208,8 +240,15 @@ ScopeView {
208240 switch (rendererId) {
209241 case "grid": {
210242 switch (contentType) {
211− case "video": return "Generic/GenericFilterGridPotrait.qml";
243+ case "video": return "Video/VideoFilterGrid.qml";
212244 case "music": return "Music/MusicFilterGrid.qml";
245+ case "apps": {
246+ if (rendererHint == "toggled")
247+ return "Apps/DashPluginFilterGrid.qml";
248+ else
249+ return "Generic/GenericFilterGrid.qml";
250+ }
251+ case "weather": return "Generic/WeatherFilterGrid.qml";
213252 default: return "Generic/GenericFilterGrid.qml";
214253 }
215254 }
Dash/Music/MusicFilterGrid.qml+21−22
@@ -16,42 +16,41 @@
1616
1717import QtQuick 2.0
1818import "../../Components"
19+import "../Generic"
1920
20−FilterGrid {
21− id: filterGrid
21+GenericFilterGrid {
22+ id: filtergrid
2223
23− minimumHorizontalSpacing: units.gu(2)
24− maximumNumberOfColumns: 5
25− delegateWidth: units.gu(17)
26− delegateHeight: iconHeight + units.gu(3.5)
27− verticalSpacing: units.gu(2)
24+ delegateWidth: units.gu(11)
25+ delegateHeight: units.gu(16)
2826
29− readonly property int iconWidth: (width / columns) * 0.8
30− readonly property int iconHeight: iconWidth
27+ iconWidth: units.gu(11)
28+ iconHeight: units.gu(11)
3129
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 {
3631 id: tile
3732 objectName: "delegate" + index
38− width: filterGrid.cellWidth
39− height: filterGrid.cellHeight
40− iconWidth: filterGrid.iconWidth
41− iconHeight: filterGrid.iconHeight
42−
43− artist: model.title
44− album: model.comment
33+ width: filtergrid.cellWidth
34+ height: filtergrid.cellHeight
35+ text: model.comment
36+ imageWidth: filtergrid.iconWidth
37+ imageHeight: filtergrid.iconHeight
4538 source: model.icon
39+ maximumLineCount: 2
40+ horizontalAlignment: Text.AlignLeft
41+
42+ style: MusicTileStyle {
43+ artist: model.title
44+ }
4645
4746 onClicked: {
4847 var data = { model: model }
49− filterGrid.clicked(index, data, tile.y)
48+ filtergrid.clicked(index, data, tile.y)
5049 }
5150
5251 onPressAndHold: {
5352 var data = { model: model }
54− filterGrid.pressAndHold(index, data, tile.y)
53+ filtergrid.pressAndHold(index, data, tile.y)
5554 }
5655 }
5756}
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/ScopeDelegateMapper.qml+2−4
@@ -17,10 +17,8 @@
1717import QtQuick 2.0
1818
1919QtObject {
20− property var scopeDelegateMapping: {"mockmusicmaster.scope": "DashMusic.qml",
21− "applications.scope": "DashApps.qml",
22− "home.scope": "DashHome.qml",
23− "mockvideosmaster.scope": "DashVideos.qml"
20+ property var scopeDelegateMapping: {"applications.scope": "DashApps.qml",
21+ "home.scope": "DashHome.qml"
2422 }
2523 property string genericScope: "GenericScopeView.qml"
2624
Dash/ScopeView.qml+12−3
@@ -23,6 +23,7 @@ FocusScope {
2323 property SortFilterProxyModel categories: categoryFilter
2424 property bool isCurrent
2525 property ListModel searchHistory
26+ property bool moving: false
2627
2728 signal endReached
2829 signal movementStarted
@@ -31,14 +32,22 @@ FocusScope {
3132 // FIXME delay the search so that daemons have time to settle, note that
3233 // removing this will break ScopeView::test_changeScope
3334 onScopeChanged: {
34− timer.restart();
35− scope.activateApplication.connect(activateApp);
35+ if (scope) {
36+ timer.restart();
37+ scope.activateApplication.connect(activateApp);
38+ }
3639 }
3740
3841 function activateApp(desktopFilePath) {
3942 shell.activateApplication(desktopFilePath);
4043 }
4144
45+ Binding {
46+ target: scope
47+ property: "isActive"
48+ value: isCurrent
49+ }
50+
4251 Timer {
4352 id: timer
4453 interval: 2000
@@ -47,7 +56,7 @@ FocusScope {
4756
4857 SortFilterProxyModel {
4958 id: categoryFilter
50− model: scope.categories
59+ model: scope ? scope.categories : null
5160 dynamicSortFilter: true
5261 filterRole: Categories.RoleCount
5362 filterRegExp: /^0$/
Dash/Video/VideosFilterGrid.qml → Dash/Video/VideoFilterGrid.qmlrenamed+17−13
@@ -16,20 +16,16 @@
1616
1717import QtQuick 2.0
1818import "../../Components"
19+import "../Generic"
1920
20−FilterGrid {
21+GenericFilterGrid {
2122 id: filtergrid
2223
23− minimumHorizontalSpacing: units.gu(0.5)
24− maximumNumberOfColumns: 5
2524 delegateWidth: units.gu(11)
26− delegateHeight: iconHeight + units.gu(2.5)
27− verticalSpacing: units.gu(2)
25+ delegateHeight: units.gu(15)
2826
29− readonly property int iconWidth: (width / columns) * 0.8
30− readonly property int iconHeight: iconWidth * 16 / 11
31−
32− signal clicked(int index, var data, real itemY)
27+ iconWidth: units.gu(11)
28+ iconHeight: units.gu(11)
3329
3430 delegate: Tile {
3531 id: tile
@@ -40,11 +36,19 @@ FilterGrid {
4036 imageWidth: filtergrid.iconWidth
4137 imageHeight: filtergrid.iconHeight
4238 source: model.icon
43− fillMode: Image.PreserveAspectCrop
39+ maximumLineCount: 2
40+ horizontalAlignment: Text.AlignLeft
41+
42+ style: VideoTileStyle {}
43+
4444 onClicked: {
45− var fileUri = model.uri.replace(/^[^:]+:/, "")
46− var data = {fileUri: fileUri, nfoUri: model.comment}
47− filtergrid.clicked(index, data, tile.y);
45+ var data = { model: model }
46+ filtergrid.clicked(index, data, tile.y)
47+ }
48+
49+ onPressAndHold: {
50+ var data = { model: model }
51+ filtergrid.pressAndHold(index, data, tile.y)
4852 }
4953 }
5054}
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/PinLockscreen.qml+5
@@ -32,6 +32,8 @@ Column {
3232 signal entered(string passphrase)
3333 signal cancel()
3434
35+ property bool entryEnabled: true
36+
3537 function clear(playAnimation) {
3638 pinentryField.text = "";
3739 if (playAnimation) {
@@ -140,6 +142,7 @@ Column {
140142 width: root.padWidth / 3
141143 height: root.padHeight / 4
142144 text: index + 1
145+ enabled: entryEnabled
143146
144147 onClicked: {
145148 pinentryField.text = pinentryField.text + text;
@@ -161,6 +164,7 @@ Column {
161164 height: root.padHeight / 4
162165 text: "0"
163166 onClicked: pinentryField.text = pinentryField.text + text
167+ enabled: entryEnabled
164168 }
165169
166170 PinPadButton {
@@ -169,6 +173,7 @@ Column {
169173 height: root.padHeight / 4
170174 iconName: "erase"
171175 onClicked: pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1)
176+ enabled: entryEnabled
172177 }
173178 }
174179 }
Notifications/Notification.qml+7−4
@@ -35,8 +35,9 @@ UbuntuShape {
3535
3636 objectName: "background"
3737 implicitHeight: contentColumn.height + contentColumn.spacing * 2
38− color: Qt.rgba(0, 0, 0, 0.85)
38+ color: Qt.rgba(0.132, 0.117, 0.109, 0.97)
3939 opacity: 0
40+ radius: "medium"
4041
4142 clip: true
4243
@@ -128,6 +129,8 @@ UbuntuShape {
128129 id: labelColumn
129130 width: parent.width - x
130131
132+ anchors.verticalCenter: (icon.visible && !bodyLabel.visible) ? icon.verticalCenter : undefined
133+
131134 Label {
132135 id: summaryLabel
133136
@@ -190,8 +193,8 @@ UbuntuShape {
190193 left: parent.left
191194 right: parent.right
192195 }
193− visible: notification.type == Notification.SnapDecision
194− height: units.gu(4)
196+ visible: notification.type == Notification.SnapDecision && actionRepeater.count > 0
197+ height: units.gu(5)
195198
196199 property real buttonWidth: (width - contentColumn.spacing) / 2
197200 property bool expanded
@@ -282,7 +285,7 @@ UbuntuShape {
282285 }
283286
284287 text: loader.actionLabel
285− height: units.gu(4)
288+ height: units.gu(5)
286289 gradient: UbuntuColors.greyGradient
287290 onClicked: notification.notification.invokeAction(loader.actionId)
288291 }
Notifications/NotificationMenuItemFactory.qml+8−9
@@ -41,19 +41,14 @@ Loader {
4141 if (component !== undefined) {
4242 return component;
4343 }
44− } else {
45− if (menuData.isSeparator) {
46− return divMenu;
47− }
4844 }
49− return standardMenu;
5045 }
5146
5247 Component {
5348 id: textfield
5449
5550 Column {
56− spacing: units.gu(.5)
51+ spacing: units.gu(2)
5752
5853 anchors.left: parent.left; anchors.right: parent.right
5954
@@ -63,8 +58,6 @@ Loader {
6358 }
6459
6560 Label {
66− fontSize: "medium"
67− color: "white"
6861 text: menuData.label
6962 }
7063
@@ -72,7 +65,7 @@ Loader {
7265 id: textfield
7366
7467 anchors.left: parent.left; anchors.right: parent.right
75−
68+ height: units.gu(5)
7669 onTextChanged: {
7770 menuModel.changeState(menuIndex, text);
7871 }
@@ -85,8 +78,14 @@ Loader {
8578 PinLockscreen {
8679 anchors.left: parent.left; anchors.right: parent.right
8780
81+ Component.onCompleted: {
82+ menuModel.loadExtendedAttributes(menuIndex, {'x-canonical-pin-length': 'int'});
83+ pinLength = menuData.ext.xCanonicalPinLength;
84+ }
85+
8886 onEntered: {
8987 menuModel.changeState(menuIndex, passphrase);
88+ entryEnabled = false;
9089 }
9190
9291 onCancel: {
Panel/IndicatorRow.qml+51−12
@@ -27,6 +27,8 @@ Item {
2727 property alias row: row
2828 property QtObject indicatorsModel: null
2929 property var visibleIndicators: defined
30+ property int overFlowWidth: width
31+ property bool showAll: false
3032
3133 width: units.gu(40)
3234 height: units.gu(3)
@@ -42,6 +44,15 @@ Item {
4244 }
4345 }
4446
47+ Timer {
48+ id: allVisible
49+ interval: 1000
50+
51+ onTriggered: {
52+ showAll = false;
53+ }
54+ }
55+
4556 Row {
4657 id: row
4758
@@ -54,16 +65,31 @@ Item {
5465 objectName: "rowRepeater"
5566 model: indicatorsModel ? indicatorsModel : undefined
5667
68+ property int lastCount: 0
69+ onCountChanged: {
70+ if (lastCount < count) {
71+ showAll = true;
72+ allVisible.start();
73+ }
74+ lastCount = count;
75+ }
76+
5777 Item {
5878 id: itemWrapper
5979 height: indicatorRow.height
6080 width: indicatorItem.width
6181 visible: indicatorItem.indicatorVisible
82+ opacity: 1.0
83+ y: 0
84+ state: "standard"
6285
6386 property int ownIndex: index
6487 property alias highlighted: indicatorItem.highlighted
6588 property alias dimmed: indicatorItem.dimmed
6689
90+ property bool hidden: !showAll && !indicatorItem.highlighted && (indicatorRow.state == "locked" || indicatorRow.state == "commit")
91+ property bool overflow: row.width - itemWrapper.x > overFlowWidth
92+
6793 IndicatorItem {
6894 id: indicatorItem
6995 height: parent.height
@@ -87,22 +113,35 @@ Item {
87113 }
88114 indicatorRow.visibleIndicators[model.identifier] = indicatorVisible;
89115 indicatorRow.visibleIndicatorsChanged();
116+
117+ if (indicatorVisible) {
118+ showAll = true;
119+ allVisible.start();
120+ }
90121 }
91122 }
92123
93− opacity: {
94− if (!indicatorItem.highlighted && (indicatorRow.state == "locked" || indicatorRow.state == "commit")) {
95− return 0.0;
96− } else {
97− return 1.0;
124+ states: [
125+ State {
126+ name: "standard"
127+ when: !hidden && !overflow
128+ },
129+ State {
130+ name: "overflow"
131+ when: hidden || overflow
132+ PropertyChanges { target: itemWrapper; opacity: 0.0 }
98133 }
99− }
100− Behavior on opacity {
101− StandardAnimation {
102− // flow away from current index
103− duration: (rowRepeater.count - Math.abs(indicatorRow.currentItemIndex - index)) * (500/rowRepeater.count)
104− }
105− }
134+ ]
135+
136+ transitions: [
137+ Transition {
138+ StandardAnimation {
139+ target: itemWrapper
140+ property: "opacity"
141+ duration: 300
142+ }
143+ }
144+ ]
106145 }
107146 }
108147 }
Panel/Indicators.qml+2
@@ -29,6 +29,8 @@ Showable {
2929 property real openedHeight: units.gu(71)
3030 property int panelHeight: units.gu(3)
3131 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
3234
3335 property int hintValue
3436 readonly property int lockThreshold: openedHeight / 2
Panel/Indicators/client/IndicatorsList.qml+1−1
@@ -45,7 +45,7 @@ Page {
4545 anchors.right: parent.right
4646 objectName: identifier
4747
48− text: title
48+ text: identifier
4949
5050 onClicked: {
5151 var new_page = Qt.createComponent("IndicatorsPage.qml");
Panel/Panel.qml+3−2
@@ -73,6 +73,7 @@ Item {
7373
7474 Indicators {
7575 id: indicatorsMenu
76+ objectName: "indicators"
7677
7778 anchors.right: parent.right
7879 y: panelBackground.y
@@ -82,6 +83,7 @@ Item {
8283 panelHeight: __panelMinusSeparatorLineHeight
8384 openedHeight: parent.height + (pinnedMode ? 0 : root.panelHeight)
8485 pinnedMode: !fullscreenMode
86+ overFlowWidth: search.state=="hidden" ? parent.width : parent.width - search.width
8587
8688 property real unitProgress: (height - panelHeight) / (openedHeight - panelHeight)
8789 }
@@ -120,14 +122,13 @@ Item {
120122 return "hidden";
121123 }
122124 }
123− if (root.searchVisible) {
125+ if (root.searchVisible && !indicatorsMenu.showAll) {
124126 return "visible";
125127 }
126128
127129 return "hidden";
128130 }
129131
130− width: units.gu(13)
131132 height: __panelMinusSeparatorLineHeight
132133 anchors {
133134 top: panelBackground.top
Panel/SearchIndicator.qml+9−8
@@ -21,7 +21,7 @@ import "../Components"
2121Item {
2222 id: search
2323
24− width: units.gu(9)
24+ width: container.width + units.gu(2)
2525 height: units.gu(3)
2626
2727 property string headerText: i18n.tr("Search")
@@ -34,21 +34,24 @@ Item {
3434 onClicked: search.clicked()
3535 }
3636
37− Item {
37+ Row {
3838 id: container
3939 objectName: "container"
4040
41− width: parent.width
4241 height: parent.height
42+ width: childrenRect.width
43+ anchors {
44+ left: parent.left
45+ leftMargin: units.gu(1)
46+ }
47+ spacing: units.gu(1)
4348
44− Behavior on opacity { StandardAnimation {} }
49+ Behavior on opacity { StandardAnimation { duration: 300 } }
4550
4651 Image {
4752 id: icon
4853 source: "graphics/search.png"
4954 anchors.verticalCenter: parent.verticalCenter
50− anchors.left: parent.left
51− anchors.leftMargin: units.gu(1)
5255 }
5356
5457 Label {
@@ -56,8 +59,6 @@ Item {
5659 color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
5760 fontSize: "small"
5861 font.capitalization: Font.AllUppercase
59− anchors.left: icon.right
60− anchors.leftMargin: units.gu(1)
6162 anchors.verticalCenter: parent.verticalCenter
6263 }
6364 }
Shell.qml+60−45
@@ -99,17 +99,6 @@ FocusScope {
9999 }
100100 }
101101
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−
113102 function activateApplication(desktopFile, argument) {
114103 if (applicationManager) {
115104 // For newly started applications, as it takes them time to draw their first frame
@@ -160,10 +149,6 @@ FocusScope {
160149 }
161150 }
162151
163− OSKController {
164− anchors.fill: parent // as needs to know the geometry of the shell
165− }
166−
167152 VolumeControl {
168153 id: volumeControl
169154 }
@@ -405,7 +390,7 @@ FocusScope {
405390
406391 width: shell.edgeSize
407392 direction: Direction.Leftwards
408− enabled: edgeDemo.dashEnabled
393+ enabled: greeter.showProgress == 0 && edgeDemo.dashEnabled
409394 property bool haveApps: mainStage.applications.count > 0 || sideStage.applications.count > 0
410395
411396 maxTotalDragDistance: haveApps ? parent.width : parent.width * 0.7
@@ -472,6 +457,26 @@ FocusScope {
472457
473458 dragHandleWidth: shell.edgeSize
474459
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+
475480 onShownChanged: {
476481 if (shown) {
477482 lockscreen.reset();
@@ -482,6 +487,9 @@ FocusScope {
482487 greeter.selected(0);
483488 }
484489 greeter.forceActiveFocus();
490+ removeApplicationFocus();
491+ } else {
492+ restoreApplicationFocus();
485493 }
486494 }
487495
@@ -498,6 +506,29 @@ FocusScope {
498506 launcher.tease();
499507 }
500508 }
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+ }
501532 }
502533
503534 InputFilterArea {
@@ -510,34 +541,11 @@ FocusScope {
510541 id: powerConnection
511542 target: Powerd
512543
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−
533544 onDisplayPowerStateChange: {
534545 // We ignore any display-off signals when the proximity sensor
535546 // is active. This usually indicates something like a phone call.
536547 if (status == Powerd.Off && (flags & Powerd.UseProximity) == 0) {
537− powerConnection.setFocused(false);
538548 greeter.showNow();
539− } else if (status == Powerd.On) {
540− powerConnection.setFocused(true);
541549 }
542550
543551 // No reason to chew demo CPU when user isn't watching
@@ -550,13 +558,9 @@ FocusScope {
550558 }
551559
552560 function showHome() {
561+ var animate = !greeter.shown && !stages.shown
553562 greeter.hide()
554− // Animate if moving between application and dash
555− if (!stages.shown) {
556− dash.setCurrentScope("home.scope", true, false)
557− } else {
558− dash.setCurrentScope("home.scope", false, false)
559− }
563+ dash.setCurrentScope("home.scope", animate, false)
560564 stages.hide()
561565 }
562566
@@ -694,10 +698,17 @@ FocusScope {
694698 PropertyChanges { target: notifications; width: units.gu(38) }
695699 }
696700 ]
701+
702+ InputFilterArea {
703+ anchors { left: parent.left; right: parent.right }
704+ height: parent.contentHeight
705+ blockInput: height > 0
706+ }
697707 }
698708 }
699709
700710 focus: true
711+ onFocusChanged: if (!focus) forceActiveFocus();
701712
702713 InputFilterArea {
703714 anchors {
@@ -725,6 +736,10 @@ FocusScope {
725736 value: "unity8"
726737 }
727738
739+ OSKController {
740+ anchors.fill: parent // as needs to know the geometry of the shell
741+ }
742+
728743 //FIXME: This should be handled in the input stack, keyboard shouldnt propagate
729744 MouseArea {
730745 anchors.bottom: parent.bottom
debian/changelog+91
@@ -1,3 +1,94 @@
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+
192unity8 (7.82+13.10.20131007-0ubuntu1) saucy; urgency=low
293
394 [ Michał Sawicz ]
debian/control+2
@@ -26,6 +26,7 @@ Build-Depends: cmake,
2626 libupstart-dev,
2727 libusermetricsoutput1-dev,
2828 libxcb1-dev,
29+ libglib2.0-dev,
2930 pkg-config,
3031 python:any (>= 2.7),
3132 python-setuptools,
@@ -41,6 +42,7 @@ Build-Depends: cmake,
4142 qtdeclarative5-test-plugin,
4243 qtdeclarative5-ubuntu-ui-toolkit-plugin,
4344 qtdeclarative5-xmllistmodel-plugin,
45+ libqt5xmlpatterns5-dev,
4446 ttf-ubuntu-font-family,
4547Standards-Version: 3.9.4
4648Homepage: http://launchpad.net/unity
plugins/AccountsService/AccountsService.cpp+3−1
@@ -24,7 +24,9 @@
2424AccountsService::AccountsService(QObject* parent)
2525 : QObject(parent),
2626 m_service(new AccountsServiceDBusAdaptor(this)),
27− m_user(qgetenv("USER"))
27+ m_user(qgetenv("USER")),
28+ m_demoEdges(false),
29+ m_statsWelcomeScreen(false)
2830{
2931 connect(m_service, SIGNAL(propertiesChanged(const QString &, const QString &, const QStringList &)),
3032 this, SLOT(propertiesChanged(const QString &, const QString &, const QStringList &)));
plugins/Unity/CMakeLists.txt+1−1
@@ -6,7 +6,7 @@ add_subdirectory(Indicators)
66# Dependencies
77include(FindPkgConfig)
88pkg_check_modules(QTDEE REQUIRED libdee-qt5>=3.2)
9−pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0)
9+pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0>=7.1.1)
1010
1111include_directories(
1212 ${CMAKE_CURRENT_SOURCE_DIR}
plugins/Unity/Indicators/indicatorsmanager.cpp+20−24
@@ -47,34 +47,13 @@ public:
4747IndicatorsManager::IndicatorsManager(QObject* parent)
4848 : QObject(parent)
4949 , m_loaded(false)
50− , m_upstart(NULL)
5150{
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− }
6851}
6952
7053IndicatorsManager::~IndicatorsManager()
7154{
7255 unload();
7356
74− if (m_upstart != NULL) {
75− nih_unref(m_upstart, NULL);
76− m_upstart = NULL;
77− }
7857}
7958
8059void IndicatorsManager::load()
@@ -235,17 +214,34 @@ void IndicatorsManager::setLoaded(bool loaded)
235214 m_loaded = loaded;
236215 Q_EMIT loadedChanged(m_loaded);
237216
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) {
239233 int event_sent = 0;
240234 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);
242236 } 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);
244238 }
245239
246240 if (event_sent != 0) {
247241 qWarning() << "Unable to send indicator event to Upstart";
248242 }
243+ nih_unref(upstart, NULL);
244+ upstart = NULL;
249245 }
250246 }
251247}
plugins/Unity/Indicators/indicatorsmanager.h−1
@@ -71,7 +71,6 @@ private:
7171 QHash<QString, IndicatorData*> m_indicatorsData;
7272 QSharedPointer<QFileSystemWatcher> m_fsWatcher;
7373 bool m_loaded;
74− NihDBusProxy * m_upstart;
7574};
7675
7776#endif // INDICATORS_MANAGER_H
plugins/Unity/Indicators/qml/MenuItemFactory.qml+1
@@ -115,6 +115,7 @@ Item {
115115 text: menu && menu.label ? menu.label : ""
116116 icon: menu ? menu.icon : ""
117117 value : menu ? menu.actionState : 0.0
118+ enabled: menu ? menu.sensitive : false
118119 }
119120 }
120121
plugins/Unity/Launcher/backend/launcherbackend.cpp−33
@@ -30,12 +30,9 @@
3030class LauncherBackendItem
3131{
3232public:
33− LauncherBackendItem(): pinned(false) {}
34−
3533 QString desktopFile;
3634 QString displayName;
3735 QString icon;
38− bool pinned;
3936};
4037
4138LauncherBackend::LauncherBackend(QObject *parent):
@@ -135,32 +132,6 @@ QString LauncherBackend::icon(const QString &appId) const
135132 return iconName;
136133}
137134
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−
164135QList<QuickListEntry> LauncherBackend::quickList(const QString &appId) const
165136{
166137 // TODO: Get static (from .desktop file) and dynamic (from the app itself)
@@ -233,7 +204,6 @@ void LauncherBackend::syncFromAccounts()
233204 if (!m_itemCache.contains(appId)) {
234205 m_itemCache.insert(appId, parseDesktopFile(df));
235206 }
236− m_itemCache.value(appId)->pinned = true;
237207 }
238208 }
239209 }
@@ -305,7 +275,6 @@ LauncherBackendItem* LauncherBackend::parseDesktopFile(const QString &desktopFil
305275 } else {
306276 item->icon = "image://theme/" + iconString;
307277 }
308− item->pinned = false;
309278 return item;
310279}
311280
@@ -326,7 +295,6 @@ void LauncherBackend::loadFromVariant(const QVariantMap &details)
326295 item->desktopFile = details.value("desktopFile").toString();
327296 item->displayName = details.value("name").toString();
328297 item->icon = details.value("icon").toString();
329− item->pinned = details.value("is-pinned").toBool();
330298
331299 m_itemCache.insert(appId, item);
332300 m_storedApps.append(appId);
@@ -340,7 +308,6 @@ QVariantMap LauncherBackend::itemToVariant(const QString &appId) const
340308 details.insert("name", item->displayName);
341309 details.insert("icon", item->icon);
342310 details.insert("desktopFile", item->desktopFile);
343− details.insert("is-pinned", item->pinned);
344311 return details;
345312}
346313
plugins/Unity/Launcher/backend/launcherbackend.h−15
@@ -88,21 +88,6 @@ public:
8888 */
8989 QString icon(const QString &appId) const;
9090
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−
10691 /**
10792 * @brief Get the QuickList for an application.
10893 * @param appId The ID of the application.
plugins/Unity/Launcher/launchermodel.cpp+3−7
@@ -38,11 +38,7 @@ LauncherModel::LauncherModel(QObject *parent):
3838 m_backend->displayName(entry),
3939 m_backend->icon(entry),
4040 this);
41− if (m_backend->isPinned(entry)) {
42− item->setPinned(true);
43− } else {
44− item->setRecent(true);
45− }
41+ item->setPinned(true);
4642 m_list.append(item);
4743 }
4844}
@@ -129,11 +125,12 @@ void LauncherModel::pin(const QString &appId, int index)
129125 if (currentIndex >= 0) {
130126 if (index == -1 || index == currentIndex) {
131127 m_list.at(currentIndex)->setPinned(true);
132− m_backend->setPinned(appId, true);
133128 QModelIndex modelIndex = this->index(currentIndex);
134129 Q_EMIT dataChanged(modelIndex, modelIndex);
135130 } else {
136131 move(currentIndex, index);
132+ // move() will store the list to the backend itself, so just exit at this point.
133+ return;
137134 }
138135 } else {
139136 if (index == -1) {
@@ -144,7 +141,6 @@ void LauncherModel::pin(const QString &appId, int index)
144141 m_backend->displayName(appId),
145142 m_backend->icon(appId));
146143 item->setPinned(true);
147− m_backend->setPinned(appId, true);
148144 m_list.insert(index, item);
149145 endInsertRows();
150146 }
plugins/Unity/categories.cpp+70−17
@@ -90,9 +90,37 @@ void Categories::onCategoriesModelChanged(unity::glib::Object<DeeModel> model)
9090 delete model;
9191 }
9292 m_results.clear();
93+ m_categoryOrder.clear();
94+
9395 setModel(model);
9496}
9597
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+
96124void
97125Categories::setUnityScope(const unity::dash::Scope::Ptr& scope)
98126{
@@ -101,9 +129,9 @@ Categories::setUnityScope(const unity::dash::Scope::Ptr& scope)
101129 // no need to call this, we'll get notified
102130 //setModel(m_unityScope->categories()->model());
103131
104− m_categoriesChangedConnection.disconnect();
105− m_categoriesChangedConnection =
106− m_unityScope->categories()->model.changed.connect(sigc::mem_fun(this, &Categories::onCategoriesModelChanged));
132+ m_signals.disconnectAll();
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));
107135}
108136
109137void
@@ -111,7 +139,9 @@ Categories::onCountChanged()
111139{
112140 CategoryResults* results = qobject_cast<CategoryResults*>(sender());
113141 if (results) {
114− m_updatedCategories << results->categoryIndex();
142+ if (!m_updatedCategories.contains(results->categoryIndex())) {
143+ m_updatedCategories << results->categoryIndex();
144+ }
115145 m_timer.start();
116146 }
117147}
@@ -142,7 +172,8 @@ Categories::onEmitCountChanged()
142172 roles.append(Categories::RoleCount);
143173 Q_FOREACH(int categoryIndex, m_updatedCategories) {
144174 if (!m_results.contains(categoryIndex)) continue;
145− QModelIndex changedIndex = index(categoryIndex);
175+ const int realIndex = m_categoryOrder.indexOf(categoryIndex);
176+ const QModelIndex changedIndex = index(realIndex);
146177 Q_EMIT dataChanged(changedIndex, changedIndex, roles);
147178 }
148179 m_updatedCategories.clear();
@@ -196,48 +227,70 @@ Categories::data(const QModelIndex& index, int role) const
196227 return QVariant();
197228 }
198229
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+
199250 switch (role) {
200251 case RoleCategoryId:
201− return DeeListModel::data(index, CategoryColumn::ID);
252+ return DeeListModel::data(realIndex, CategoryColumn::ID);
202253 case RoleName:
203− return DeeListModel::data(index, CategoryColumn::DISPLAY_NAME);
254+ return DeeListModel::data(realIndex, CategoryColumn::DISPLAY_NAME);
204255 case RoleIcon:
205− return DeeListModel::data(index, CategoryColumn::ICON_HINT);
256+ return DeeListModel::data(realIndex, CategoryColumn::ICON_HINT);
206257 case RoleRenderer:
207− return DeeListModel::data(index, CategoryColumn::RENDERER_NAME);
258+ return DeeListModel::data(realIndex, CategoryColumn::RENDERER_NAME);
208259 case RoleContentType:
209260 {
210− auto hints = DeeListModel::data(index, CategoryColumn::HINTS).toHash();
261+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
211262 return hints.contains("content-type") ? hints["content-type"] : QVariant(QString("default"));
212263 }
213264 case RoleRendererHint:
214265 {
215− auto hints = DeeListModel::data(index, CategoryColumn::HINTS).toHash();
266+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
216267 return hints.contains("renderer-hint") ? hints["renderer-hint"] : QVariant(QString());
217268 }
218269 case RoleProgressSource:
219270 {
220− auto hints = DeeListModel::data(index, CategoryColumn::HINTS).toHash();
271+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
221272 return hints.contains("progress-source") ? hints["progress-source"] : QVariant();
222273 }
223274 case RoleHints:
224− return DeeListModel::data(index, CategoryColumn::HINTS);
275+ return DeeListModel::data(realIndex, CategoryColumn::HINTS);
225276 case RoleResults:
226277 if (m_overriddenCategories.size() > 0)
227278 {
228− auto id = DeeListModel::data(index, CategoryColumn::ID).toString();
279+ auto id = DeeListModel::data(realIndex, CategoryColumn::ID).toString();
229280 if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
230281 return QVariant::fromValue(m_overriddenCategories[id]);
231282 }
232− return QVariant::fromValue(getResults(index.row()));
283+ return QVariant::fromValue(getResults(realRow));
233284 case RoleCount:
234285 if (m_overriddenCategories.size() > 0)
235286 {
236− auto id = DeeListModel::data(index, CategoryColumn::ID).toString();
287+ auto id = DeeListModel::data(realIndex, CategoryColumn::ID).toString();
237288 if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
289+ {
238290 return QVariant::fromValue(m_overriddenCategories[id]->rowCount());
291+ }
239292 }
240− return QVariant::fromValue(getResults(index.row())->rowCount());
293+ return QVariant::fromValue(getResults(realRow)->rowCount());
241294 default:
242295 return QVariant();
243296 }
plugins/Unity/categories.h+10−1
@@ -32,6 +32,9 @@
3232#include <QSet>
3333#include <QTimer>
3434
35+// local
36+#include "signalslist.h"
37+
3538class Categories : public DeeListModel
3639{
3740 Q_OBJECT
@@ -71,6 +74,7 @@ private Q_SLOTS:
7174
7275private:
7376 void onCategoriesModelChanged(unity::glib::Object<DeeModel> model);
77+ void onCategoryOrderChanged(const std::vector<unsigned int>& cat_order);
7478
7579 DeeListModel* getResults(int index) const;
7680
@@ -80,7 +84,12 @@ private:
8084 QHash<int, QByteArray> m_roles;
8185 QMap<QString, QAbstractItemModel*> m_overriddenCategories;
8286 mutable QMap<int, DeeListModel*> m_results;
83− 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;
8493};
8594
8695#endif // CATEGORIES_H
plugins/Unity/categoryresults.cpp+2−1
@@ -81,8 +81,9 @@ CategoryResults::data(const QModelIndex& index, int role) const
8181 case RoleIconHint: {
8282 QString giconString(DeeListModel::data(index, ResultsColumn::ICON_HINT).toString());
8383 if (giconString.isEmpty()) {
84+ QString mimetype(DeeListModel::data(index, ResultsColumn::MIMETYPE).toString());
8485 QString uri(DeeListModel::data(index, ResultsColumn::URI).toString());
85− QString thumbnailerUri(uriToThumbnailerProviderString(uri));
86+ QString thumbnailerUri(uriToThumbnailerProviderString(uri, mimetype, DeeListModel::data(index, ResultsColumn::METADATA).toHash()));
8687 if (!thumbnailerUri.isNull()) {
8788 return QVariant::fromValue(thumbnailerUri);
8889 }
plugins/Unity/iconutils.cpp+24−3
@@ -25,6 +25,7 @@
2525
2626#define BASE_THEME_ICON_URI "image://theme/"
2727#define BASE_THUMBNAILER_URI "image://thumbnailer/"
28+#define BASE_ALBUMART_URI "image://albumart/"
2829
2930QString gIconToDeclarativeImageProviderString(QString const &giconString)
3031{
@@ -91,11 +92,31 @@ QString gIconToDeclarativeImageProviderString(QString const &giconString)
9192 return result;
9293}
9394
94−QString uriToThumbnailerProviderString(QString const &uri)
95+QString uriToThumbnailerProviderString(QString const &uri, QString const &mimetype, QVariantHash const &metadata)
9596{
9697 if (uri.startsWith(QLatin1String("file:///"))) {
97− QString thumbnailerUri(BASE_THUMBNAILER_URI);
98− thumbnailerUri.append(uri.midRef(7));
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+ }
99120 return thumbnailerUri;
100121 }
101122
plugins/Unity/iconutils.h+2−1
@@ -21,8 +21,9 @@
2121#define ICONUTILS_H
2222
2323#include <QString>
24+#include <QVariant>
2425
2526QString gIconToDeclarativeImageProviderString(QString const &giconString);
26−QString uriToThumbnailerProviderString(QString const &uri);
27+QString uriToThumbnailerProviderString(QString const &uri, QString const &mimetype, QVariantHash const &metadata);
2728
2829#endif
plugins/Unity/preview.cpp+1−1
@@ -113,7 +113,7 @@ QString Preview::image() const
113113 return result;
114114 } else {
115115 QString sourceMedia(QString::fromStdString(m_unityPreview->image_source_uri()));
116− QString thumbnailUri(uriToThumbnailerProviderString(sourceMedia));
116+ QString thumbnailUri(uriToThumbnailerProviderString(sourceMedia, m_result->mimeType(), m_result->metadata().toHash()));
117117 if (!thumbnailUri.isNull()) return thumbnailUri;
118118 }
119119 } else {
plugins/Unity/scope.cpp+44−6
@@ -40,9 +40,12 @@
4040
4141Scope::Scope(QObject *parent) : QObject(parent)
4242 , m_formFactor("phone")
43+ , m_isActive(false)
4344 , m_searchInProgress(false)
4445{
4546 m_categories.reset(new Categories(this));
47+
48+ connect(this, &Scope::isActiveChanged, this, &Scope::scopeIsActiveChanged);
4649}
4750
4851QString Scope::id() const
@@ -110,6 +113,11 @@ QString Scope::formFactor() const
110113 return m_formFactor;
111114}
112115
116+bool Scope::isActive() const
117+{
118+ return m_isActive;
119+}
120+
113121Filters* Scope::filters() const
114122{
115123 return m_filters.get();
@@ -127,10 +135,12 @@ void Scope::setSearchQuery(const QString& search_query)
127135 if (m_searchQuery.isNull() || search_query != m_searchQuery) {
128136 m_searchQuery = search_query;
129137 m_cancellable.Renew();
130− m_searchInProgress = true;
131138 m_unityScope->Search(search_query.toStdString(), std::bind(&Scope::onSearchFinished, this, _1, _2, _3), m_cancellable);
132139 Q_EMIT searchQueryChanged();
133− Q_EMIT searchInProgressChanged();
140+ if (!m_searchInProgress) {
141+ m_searchInProgress = true;
142+ Q_EMIT searchInProgressChanged();
143+ }
134144 }
135145}
136146
@@ -152,6 +162,13 @@ void Scope::setFormFactor(const QString& form_factor) {
152162 }
153163}
154164
165+void Scope::setActive(const bool active) {
166+ if (active != m_isActive) {
167+ m_isActive = active;
168+ Q_EMIT isActiveChanged(m_isActive);
169+ }
170+}
171+
155172unity::dash::LocalResult Scope::createLocalResult(const QVariant &uri, const QVariant &icon_hint,
156173 const QVariant &category, const QVariant &result_type,
157174 const QVariant &mimetype, const QVariant &title,
@@ -308,6 +325,7 @@ void Scope::setUnityScope(const unity::dash::Scope::Ptr& scope)
308325 m_unityScope->visible.changed.connect(sigc::mem_fun(this, &Scope::visibleChanged));
309326 m_unityScope->shortcut.changed.connect(sigc::mem_fun(this, &Scope::shortcutChanged));
310327 m_unityScope->connected.changed.connect(sigc::mem_fun(this, &Scope::connectedChanged));
328+ m_unityScope->results_dirty.changed.connect(sigc::mem_fun(this, &Scope::resultsDirtyToggled));
311329
312330 /* FIXME: signal should be forwarded instead of calling the handler directly */
313331 m_unityScope->activated.connect(sigc::mem_fun(this, &Scope::onActivated));
@@ -334,13 +352,31 @@ void Scope::synchronizeStates()
334352 /* Forward local states to m_unityScope */
335353 if (!m_searchQuery.isNull()) {
336354 m_cancellable.Renew();
337− m_searchInProgress = true;
338355 m_unityScope->Search(m_searchQuery.toStdString(), std::bind(&Scope::onSearchFinished, this, _1, _2, _3), m_cancellable);
339− Q_EMIT searchInProgressChanged();
356+ if (!m_searchInProgress) {
357+ m_searchInProgress = true;
358+ Q_EMIT searchInProgressChanged();
359+ }
340360 }
341361 }
342362}
343363
364+void Scope::scopeIsActiveChanged()
365+{
366+ if (!isActive() || !m_unityScope || !m_unityScope->results_dirty()) return;
367+
368+ // force new search
369+ synchronizeStates();
370+}
371+
372+void Scope::resultsDirtyToggled(bool results_dirty)
373+{
374+ if (!results_dirty || !isActive()) return;
375+
376+ // force new search
377+ synchronizeStates();
378+}
379+
344380void Scope::onSearchFinished(std::string const& /* query */, unity::glib::HintsMap const& hints, unity::glib::Error const& err)
345381{
346382 QString hint;
@@ -348,8 +384,10 @@ void Scope::onSearchFinished(std::string const& /* query */, unity::glib::HintsM
348384 GError* error = const_cast<unity::glib::Error&>(err);
349385
350386 if (!err || !g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
351− m_searchInProgress = false;
352− Q_EMIT searchInProgressChanged();
387+ if (m_searchInProgress) {
388+ m_searchInProgress = false;
389+ Q_EMIT searchInProgressChanged();
390+ }
353391 } else {
354392 // no need to check the results hint, we're still searching
355393 return;
plugins/Unity/scope.h+7
@@ -54,6 +54,7 @@ class Scope : public QObject
5454 Q_PROPERTY(QString searchQuery READ searchQuery WRITE setSearchQuery NOTIFY searchQueryChanged)
5555 Q_PROPERTY(QString noResultsHint READ noResultsHint WRITE setNoResultsHint NOTIFY noResultsHintChanged)
5656 Q_PROPERTY(QString formFactor READ formFactor WRITE setFormFactor NOTIFY formFactorChanged)
57+ Q_PROPERTY(bool isActive READ isActive WRITE setActive NOTIFY isActiveChanged)
5758
5859public:
5960 explicit Scope(QObject *parent = 0);
@@ -73,11 +74,13 @@ public:
7374 QString searchQuery() const;
7475 QString noResultsHint() const;
7576 QString formFactor() const;
77+ bool isActive() const;
7678
7779 /* setters */
7880 void setSearchQuery(const QString& search_query);
7981 void setNoResultsHint(const QString& hint);
8082 void setFormFactor(const QString& form_factor);
83+ void setActive(const bool);
8184
8285 Q_INVOKABLE void activate(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
8386 const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
@@ -106,6 +109,7 @@ Q_SIGNALS:
106109 void searchQueryChanged();
107110 void noResultsHintChanged();
108111 void formFactorChanged();
112+ void isActiveChanged(bool);
109113 void filtersChanged();
110114
111115 // signals triggered by activate(..) or preview(..) requests.
@@ -119,6 +123,7 @@ Q_SIGNALS:
119123
120124private Q_SLOTS:
121125 void synchronizeStates();
126+ void scopeIsActiveChanged();
122127 void onSearchFinished(std::string const &, unity::glib::HintsMap const &, unity::glib::Error const&);
123128
124129private:
@@ -130,6 +135,7 @@ private:
130135 void onActivated(unity::dash::LocalResult const& result, unity::dash::ScopeHandledType type, unity::glib::HintsMap const& hints);
131136 void onPreviewReady(unity::dash::LocalResult const& result, unity::dash::Preview::Ptr const& preview);
132137 void fallbackActivate(const QString& uri);
138+ void resultsDirtyToggled(bool);
133139
134140 unity::dash::Scope::Ptr m_unityScope;
135141 std::unique_ptr<Categories> m_categories;
@@ -137,6 +143,7 @@ private:
137143 QString m_searchQuery;
138144 QString m_noResultsHint;
139145 QString m_formFactor;
146+ bool m_isActive;
140147 bool m_searchInProgress;
141148 unity::glib::Cancellable m_cancellable;
142149 unity::glib::Cancellable m_previewCancellable;
plugins/Utils/CMakeLists.txt+12−1
@@ -1,11 +1,19 @@
1+# Dependencies
2+include(FindPkgConfig)
3+
4+pkg_search_module(GIO REQUIRED gio-2.0)
5+
16include_directories(
27 ${CMAKE_CURRENT_SOURCE_DIR}
38 ${CMAKE_CURRENT_BINARY_DIR}
49 ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
10+ ${GIO_INCLUDE_DIRS}
511)
612
713set(QMLPLUGIN_SRC
14+ albumartprovider.cpp
815 applicationpaths.h
16+ mediaartcache.cpp
917 qlimitproxymodelqml.cpp
1018 qsortfilterproxymodelqml.cpp
1119 ubuntuwindow.cpp
@@ -16,13 +24,16 @@ set(QMLPLUGIN_SRC
1624add_library(Utils-qml SHARED
1725 ${QMLPLUGIN_SRC}
1826 )
27+
28+target_link_libraries(Utils-qml ${GIO_LDFLAGS})
29+
1930# Because this is an internal support library, we want
2031# to expose all symbols in it. Consider changing this
2132# either to a static library or just using the
2233# files directly in targets.
2334set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
2435
25−qt5_use_modules(Utils-qml Qml Quick DBus)
36+qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns)
2637
2738# export the qmldir qmltypes and plugin files
2839export_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+20−1
@@ -19,11 +19,12 @@
1919// Qt
2020#include <QtQml/qqml.h>
2121#include <QtQuick/QQuickWindow>
22−
22+#include <QDebug>
2323// self
2424#include "plugin.h"
2525
2626// local
27+#include "albumartprovider.h"
2728#include "applicationpaths.h"
2829#include "qlimitproxymodelqml.h"
2930#include "qsortfilterproxymodelqml.h"
@@ -46,3 +47,21 @@ void UtilsPlugin::registerTypes(const char *uri)
4647 qmlRegisterExtendedType<QQuickWindow, UbuntuWindow>(uri, 0, 1, "Window");
4748 qmlRegisterSingletonType<ApplicationPaths>(uri, 0, 1, "ApplicationPaths", applicationsPathsSingleton);
4849}
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
2929
3030public:
3131 void registerTypes(const char *uri);
32+ void initializeEngine(QQmlEngine *engine, const char *uri);
3233};
3334
3435#endif
po/ar.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-26 23:26+0000\n"
1212"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
1818"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "ويكيبيديا"
8787msgid "YouTube"
8888msgstr "يوتيوب"
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,44 +133,30 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
137137msgid "Recent searches"
138138msgstr "عمليات البحث الأخيرة"
139139
140140#. TRANSLATORS: Number of persons who rated this app
141−#: Dash/Apps/AppInfo.qml:73
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142143#, qt-format
143144msgid "(%1)"
144145msgstr ""
145146
146147#. TRANSLATORS: Number of persons who wrote reviews for this app
147−#: Dash/Apps/AppInfo.qml:85
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
148150#, qt-format
149151msgid "%1 review"
150152msgid_plural "%1 reviews"
151153msgstr[0] ""
152154msgstr[1] ""
153155
154−#: Dash/Apps/AppPreview.qml:178
156+#: Dash/Apps/AppPreview.qml:126
155157msgid "Rate this"
156158msgstr ""
157159
158−#: Dash/Apps/AppReviews.qml:74
159−msgid "Add a review"
160−msgstr ""
161−
162−#: Dash/Apps/AppReviews.qml:86
163−msgid "Review"
164−msgstr ""
165−
166−#: Dash/Apps/AppReviews.qml:121
167−msgid "Send"
168−msgstr ""
169−
170−#: Dash/Apps/AppReviews.qml:139
171−msgid "Comments:"
172−msgstr ""
173−
174160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
175161msgid "Featured"
176162msgstr "المميز"
@@ -199,17 +185,21 @@ msgstr "الشائع على الإنترنت"
199185msgid "Videos"
200186msgstr "فيديوهات"
201187
202−#: Dash/Video/VideoPreview.qml:130
203−msgid "Directed by:"
204−msgstr "أخرجه:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
194+msgstr ""
205195
206−#: Dash/Video/VideoPreview.qml:153
207−msgid "Starring:"
208−msgstr "النجوم:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
209199
210−#: Dash/Video/VideoPreview.qml:176
211−msgid "Author:"
212−msgstr "المؤلف:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr ""
213203
214204#: Greeter/Lockscreen.qml:142
215205msgid "Emergency Call"
@@ -248,7 +238,7 @@ msgstr "تتكلم الآن..."
248238msgid "Search"
249239msgstr "ابحث"
250240
251−#: plugins/Unity/scope.cpp:336
241+#: plugins/Unity/scope.cpp:361
252242msgid "Sorry, there is nothing that matches your search."
253243msgstr "عذراً، لا يوجد ما يطابق بحثك."
254244
po/ast.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-03 14:02+0000\n"
1212"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
1313"Language-Team: Asturian <ast@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-04 06:11+0000\n"
19−"X-Generator: Launchpad (build 16791)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Omitir la intro"
9292
@@ -136,44 +136,30 @@ msgstr ""
136136"Agora domines los xestos de berbesos y pues usar el teléfonu<br><br>Toca la "
137137"pantalla pa entamar"
138138
139−#: Components/PageHeader.qml:298
139+#: Components/PageHeader.qml:341
140140msgid "Recent searches"
141141msgstr "Busques recientes"
142142
143143#. TRANSLATORS: Number of persons who rated this app
144−#: Dash/Apps/AppInfo.qml:73
144+#. TRANSLATORS: Number of persons who rated this app/video/whatever
145+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
145146#, qt-format
146147msgid "(%1)"
147148msgstr "(%1)"
148149
149150#. TRANSLATORS: Number of persons who wrote reviews for this app
150−#: Dash/Apps/AppInfo.qml:85
151+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
152+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
151153#, qt-format
152154msgid "%1 review"
153155msgid_plural "%1 reviews"
154156msgstr[0] "%1 reseña"
155157msgstr[1] "%1 reseñes"
156158
157−#: Dash/Apps/AppPreview.qml:178
159+#: Dash/Apps/AppPreview.qml:126
158160msgid "Rate this"
159161msgstr "Valorar esto"
160162
161−#: Dash/Apps/AppReviews.qml:74
162−msgid "Add a review"
163−msgstr "Amestar una reseña"
164−
165−#: Dash/Apps/AppReviews.qml:86
166−msgid "Review"
167−msgstr "Revisar"
168−
169−#: Dash/Apps/AppReviews.qml:121
170−msgid "Send"
171−msgstr "Unviar"
172−
173−#: Dash/Apps/AppReviews.qml:139
174−msgid "Comments:"
175−msgstr "Comentarios:"
176−
177163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
178164msgid "Featured"
179165msgstr "Destacaos"
@@ -202,17 +188,21 @@ msgstr "Populares en llinia"
202188msgid "Videos"
203189msgstr "Vídeos"
204190
205−#: Dash/Video/VideoPreview.qml:130
206−msgid "Directed by:"
207−msgstr "Dirixida por:"
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"
208198
209−#: Dash/Video/VideoPreview.qml:153
210−msgid "Starring:"
211−msgstr "Protagonistes:"
199+#: Dash/Previews/Reviews.qml:121
200+msgid "Send"
201+msgstr "Unviar"
212202
213−#: Dash/Video/VideoPreview.qml:176
214−msgid "Author:"
215−msgstr "Autor:"
203+#: Dash/Previews/Reviews.qml:139
204+msgid "Comments:"
205+msgstr "Comentarios:"
216206
217207#: Greeter/Lockscreen.qml:142
218208msgid "Emergency Call"
@@ -251,7 +241,7 @@ msgstr "Falando…"
251241msgid "Search"
252242msgstr "Guetar"
253243
254−#: plugins/Unity/scope.cpp:336
244+#: plugins/Unity/scope.cpp:361
255245msgid "Sorry, there is nothing that matches your search."
256246msgstr "Sentímoslo, nun hai res que concase cola gueta"
257247
po/az.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-26 23:48+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Son axtarışlar"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Videolar"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Söylənilir..."
247237msgid "Search"
248238msgstr "Axtar"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
253243
po/bg.po+22−32
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 00:06+0000\n"
1212"Last-Translator: Miroslav E. Hadzhiev (Хаджиев) "
1313"<miroslav.hadzhiev@gmail.com>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Type: text/plain; charset=UTF-8\n"
1717"Content-Transfer-Encoding: 8bit\n"
1818"Plural-Forms: nplurals=2; plural=n != 1;\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Уикипедия"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,44 +133,30 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
137137msgid "Recent searches"
138138msgstr "Скорошни търсения"
139139
140140#. TRANSLATORS: Number of persons who rated this app
141−#: Dash/Apps/AppInfo.qml:73
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142143#, qt-format
143144msgid "(%1)"
144145msgstr ""
145146
146147#. TRANSLATORS: Number of persons who wrote reviews for this app
147−#: Dash/Apps/AppInfo.qml:85
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
148150#, qt-format
149151msgid "%1 review"
150152msgid_plural "%1 reviews"
151153msgstr[0] ""
152154msgstr[1] ""
153155
154−#: Dash/Apps/AppPreview.qml:178
156+#: Dash/Apps/AppPreview.qml:126
155157msgid "Rate this"
156158msgstr ""
157159
158−#: Dash/Apps/AppReviews.qml:74
159−msgid "Add a review"
160−msgstr ""
161−
162−#: Dash/Apps/AppReviews.qml:86
163−msgid "Review"
164−msgstr ""
165−
166−#: Dash/Apps/AppReviews.qml:121
167−msgid "Send"
168−msgstr ""
169−
170−#: Dash/Apps/AppReviews.qml:139
171−msgid "Comments:"
172−msgstr ""
173−
174160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
175161msgid "Featured"
176162msgstr "Най-отличени"
@@ -199,17 +185,21 @@ msgstr ""
199185msgid "Videos"
200186msgstr "Видеоклипове"
201187
202−#: Dash/Video/VideoPreview.qml:130
203−msgid "Directed by:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
204190msgstr ""
205191
206−#: Dash/Video/VideoPreview.qml:153
207−msgid "Starring:"
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
208194msgstr ""
209195
210−#: Dash/Video/VideoPreview.qml:176
211−msgid "Author:"
212−msgstr "Автор:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
199+
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr ""
213203
214204#: Greeter/Lockscreen.qml:142
215205msgid "Emergency Call"
@@ -248,7 +238,7 @@ msgstr ""
248238msgid "Search"
249239msgstr "Търсене"
250240
251−#: plugins/Unity/scope.cpp:336
241+#: plugins/Unity/scope.cpp:361
252242msgid "Sorry, there is nothing that matches your search."
253243msgstr "Съжаляваме, няма нищо, което да отговаря на вашето търсене."
254244
po/ca.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-09-28 07:38+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Viquipèdia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Omet la introducció"
9292
@@ -138,44 +138,30 @@ msgid ""
138138"phone<br><br>Tap anywhere to start"
139139msgstr ""
140140
141−#: Components/PageHeader.qml:298
141+#: Components/PageHeader.qml:341
142142msgid "Recent searches"
143143msgstr "Cerques recents"
144144
145145#. TRANSLATORS: Number of persons who rated this app
146−#: Dash/Apps/AppInfo.qml:73
146+#. TRANSLATORS: Number of persons who rated this app/video/whatever
147+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
147148#, qt-format
148149msgid "(%1)"
149150msgstr "(%1)"
150151
151152#. TRANSLATORS: Number of persons who wrote reviews for this app
152−#: Dash/Apps/AppInfo.qml:85
153+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
154+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
153155#, qt-format
154156msgid "%1 review"
155157msgid_plural "%1 reviews"
156158msgstr[0] "%1 ressenya"
157159msgstr[1] "%1 ressenyes"
158160
159−#: Dash/Apps/AppPreview.qml:178
161+#: Dash/Apps/AppPreview.qml:126
160162msgid "Rate this"
161163msgstr ""
162164
163−#: Dash/Apps/AppReviews.qml:74
164−msgid "Add a review"
165−msgstr "Afegiu una ressenya"
166−
167−#: Dash/Apps/AppReviews.qml:86
168−msgid "Review"
169−msgstr "Ressenya"
170−
171−#: Dash/Apps/AppReviews.qml:121
172−msgid "Send"
173−msgstr "Envia"
174−
175−#: Dash/Apps/AppReviews.qml:139
176−msgid "Comments:"
177−msgstr "Comentaris:"
178−
179165#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
180166msgid "Featured"
181167msgstr "Destacats"
@@ -204,17 +190,21 @@ msgstr "Popular a la xarxa"
204190msgid "Videos"
205191msgstr "Vídeos"
206192
207−#: Dash/Video/VideoPreview.qml:130
208−msgid "Directed by:"
209−msgstr "Dirigit per:"
193+#: Dash/Previews/Reviews.qml:74
194+msgid "Add a review"
195+msgstr "Afegiu una ressenya"
196+
197+#: Dash/Previews/Reviews.qml:86
198+msgid "Review"
199+msgstr "Ressenya"
210200
211−#: Dash/Video/VideoPreview.qml:153
212−msgid "Starring:"
213−msgstr "Protagonistes:"
201+#: Dash/Previews/Reviews.qml:121
202+msgid "Send"
203+msgstr "Envia"
214204
215−#: Dash/Video/VideoPreview.qml:176
216−msgid "Author:"
217−msgstr "Autor:"
205+#: Dash/Previews/Reviews.qml:139
206+msgid "Comments:"
207+msgstr "Comentaris:"
218208
219209#: Greeter/Lockscreen.qml:142
220210msgid "Emergency Call"
@@ -253,7 +243,7 @@ msgstr "S'està parlant..."
253243msgid "Search"
254244msgstr "Cerca"
255245
256−#: plugins/Unity/scope.cpp:336
246+#: plugins/Unity/scope.cpp:361
257247msgid "Sorry, there is nothing that matches your search."
258248msgstr "No hi ha res que coincideixi amb la cerca"
259249
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+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-06 10:57+0000\n"
1212"Last-Translator: SaGrLand <sg@samuel-greef.de>\n"
1313"Language-Team: German <de@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-07 06:14+0000\n"
19−"X-Generator: Launchpad (build 16791)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Überspringe Einführung"
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Letzte Suchbegriffe"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr "(%1)"
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] "%1 Bewertung"
151153msgstr[1] "%1 Bewertungen"
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr "Bewerten"
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr "Bewertung hinzufügen"
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr "Bewertung"
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr "Senden"
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr "Kommentare:"
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr "Empfehlungen"
@@ -198,17 +184,21 @@ msgstr "Online Beliebt"
198184msgid "Videos"
199185msgstr "Videos"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
203−msgstr "Regie:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
189+msgstr "Bewertung hinzufügen"
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr "Bewertung"
204194
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
207−msgstr "Darsteller:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "Senden"
208198
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr "Autor:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "Kommentare:"
212202
213203#: Greeter/Lockscreen.qml:142
214204msgid "Emergency Call"
@@ -247,7 +237,7 @@ msgstr "Sie sprechen …"
247237msgid "Search"
248238msgstr "Suchen"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Entschuldigung, es wurden keine Treffer erzielt."
253243
po/el.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 00:53+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Greek <el@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Πρόσφατες αναζητήσεις"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Βίντεο"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Ομιλία..."
247237msgid "Search"
248238msgstr "Αναζήτηση"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να ταιριάζει στην αναζήτησή σας."
253243
po/en_AU.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-09-28 07:46+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:02+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Skip intro"
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Recent searches"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr "(%1)"
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] "%1 review"
151153msgstr[1] "%1 reviews"
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr "Rate this"
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr "Add a review"
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr "Review"
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr "Send"
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr "Comments:"
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr "Featured"
@@ -198,17 +184,21 @@ msgstr "Popular Online"
198184msgid "Videos"
199185msgstr "Videos"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
203−msgstr "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
189+msgstr "Add a review"
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr "Review"
204194
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
207−msgstr "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "Send"
208198
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "Comments:"
212202
213203#: Greeter/Lockscreen.qml:142
214204msgid "Emergency Call"
@@ -247,7 +237,7 @@ msgstr "Speaking..."
247237msgid "Search"
248238msgstr "Search"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Sorry, there is nothing that matches your search."
253243
po/en_GB.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 08:53+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:02+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Recent searches"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr "Featured"
@@ -198,17 +184,21 @@ msgstr "Popular Online"
198184msgid "Videos"
199185msgstr "Videos"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
203−msgstr "Directed by:"
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 ""
204194
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
207−msgstr "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
208198
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
214204msgid "Emergency Call"
@@ -247,7 +237,7 @@ msgstr "Speaking..."
247237msgid "Search"
248238msgstr "Search"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Sorry, there is nothing that matches your search."
253243
po/eo.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr ""
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr ""
247237msgid "Search"
248238msgstr ""
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/es.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-02 04:59+0000\n"
1212"Last-Translator: Adolfo Jayme Barrientos <fitoschido@gmail.com>\n"
1313"Language-Team: Spanish <es@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-03 06:08+0000\n"
19−"X-Generator: Launchpad (build 16791)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Omitir la introducción"
9292
@@ -136,44 +136,30 @@ msgstr ""
136136"Ahora domina los gestos de bordes y puede usar el teléfono<br><br>Toque la "
137137"pantalla para comenzar"
138138
139−#: Components/PageHeader.qml:298
139+#: Components/PageHeader.qml:341
140140msgid "Recent searches"
141141msgstr "Búsquedas recientes"
142142
143143#. TRANSLATORS: Number of persons who rated this app
144−#: Dash/Apps/AppInfo.qml:73
144+#. TRANSLATORS: Number of persons who rated this app/video/whatever
145+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
145146#, qt-format
146147msgid "(%1)"
147148msgstr "(%1)"
148149
149150#. TRANSLATORS: Number of persons who wrote reviews for this app
150−#: Dash/Apps/AppInfo.qml:85
151+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
152+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
151153#, qt-format
152154msgid "%1 review"
153155msgid_plural "%1 reviews"
154156msgstr[0] "%1 reseña"
155157msgstr[1] "%1 reseñas"
156158
157−#: Dash/Apps/AppPreview.qml:178
159+#: Dash/Apps/AppPreview.qml:126
158160msgid "Rate this"
159161msgstr "Valorar esto"
160162
161−#: Dash/Apps/AppReviews.qml:74
162−msgid "Add a review"
163−msgstr "Añadir una reseña"
164−
165−#: Dash/Apps/AppReviews.qml:86
166−msgid "Review"
167−msgstr "Reseñar"
168−
169−#: Dash/Apps/AppReviews.qml:121
170−msgid "Send"
171−msgstr "Enviar"
172−
173−#: Dash/Apps/AppReviews.qml:139
174−msgid "Comments:"
175−msgstr "Comentarios:"
176−
177163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
178164msgid "Featured"
179165msgstr "Destacados"
@@ -202,17 +188,21 @@ msgstr "Populares en línea"
202188msgid "Videos"
203189msgstr "Vídeos"
204190
205−#: Dash/Video/VideoPreview.qml:130
206−msgid "Directed by:"
207−msgstr "Dirigida por:"
191+#: Dash/Previews/Reviews.qml:74
192+msgid "Add a review"
193+msgstr "Añadir una reseña"
194+
195+#: Dash/Previews/Reviews.qml:86
196+msgid "Review"
197+msgstr "Reseñar"
208198
209−#: Dash/Video/VideoPreview.qml:153
210−msgid "Starring:"
211−msgstr "Protagonistas:"
199+#: Dash/Previews/Reviews.qml:121
200+msgid "Send"
201+msgstr "Enviar"
212202
213−#: Dash/Video/VideoPreview.qml:176
214−msgid "Author:"
215−msgstr "Autor:"
203+#: Dash/Previews/Reviews.qml:139
204+msgid "Comments:"
205+msgstr "Comentarios:"
216206
217207#: Greeter/Lockscreen.qml:142
218208msgid "Emergency Call"
@@ -251,7 +241,7 @@ msgstr "Hablando…"
251241msgid "Search"
252242msgstr "Buscar"
253243
254−#: plugins/Unity/scope.cpp:336
244+#: plugins/Unity/scope.cpp:361
255245msgid "Sorry, there is nothing that matches your search."
256246msgstr "No hay nada que coincida con su búsqueda."
257247
po/fi.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-03 09:21+0000\n"
1212"Last-Translator: Jiri Grönroos <Unknown>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-04 06:11+0000\n"
19−"X-Generator: Launchpad (build 16791)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Ohita esittely"
9292
@@ -134,44 +134,30 @@ msgstr ""
134134"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
135135"käytön<br><br>Napauta missä tahansa aloittaaksesi"
136136
137−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
138138msgid "Recent searches"
139139msgstr "Viimeisimmät haut"
140140
141141#. TRANSLATORS: Number of persons who rated this app
142−#: Dash/Apps/AppInfo.qml:73
142+#. TRANSLATORS: Number of persons who rated this app/video/whatever
143+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
143144#, qt-format
144145msgid "(%1)"
145146msgstr "(%1)"
146147
147148#. TRANSLATORS: Number of persons who wrote reviews for this app
148−#: Dash/Apps/AppInfo.qml:85
149+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
150+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149151#, qt-format
150152msgid "%1 review"
151153msgid_plural "%1 reviews"
152154msgstr[0] "%1 arvostelu"
153155msgstr[1] "%1 arvostelua"
154156
155−#: Dash/Apps/AppPreview.qml:178
157+#: Dash/Apps/AppPreview.qml:126
156158msgid "Rate this"
157159msgstr "Arvioi tämä"
158160
159−#: Dash/Apps/AppReviews.qml:74
160−msgid "Add a review"
161−msgstr "Lisää arvostelu"
162−
163−#: Dash/Apps/AppReviews.qml:86
164−msgid "Review"
165−msgstr "Arvostelu"
166−
167−#: Dash/Apps/AppReviews.qml:121
168−msgid "Send"
169−msgstr "Lähetä"
170−
171−#: Dash/Apps/AppReviews.qml:139
172−msgid "Comments:"
173−msgstr "Kommentit:"
174−
175161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
176162msgid "Featured"
177163msgstr "Suositellut"
@@ -200,17 +186,21 @@ msgstr "Suosittua verkossa"
200186msgid "Videos"
201187msgstr "Videot"
202188
203−#: Dash/Video/VideoPreview.qml:130
204−msgid "Directed by:"
205−msgstr "Ohjannut:"
189+#: Dash/Previews/Reviews.qml:74
190+msgid "Add a review"
191+msgstr "Lisää arvostelu"
192+
193+#: Dash/Previews/Reviews.qml:86
194+msgid "Review"
195+msgstr "Arvostelu"
206196
207−#: Dash/Video/VideoPreview.qml:153
208−msgid "Starring:"
209−msgstr "Pääosissa:"
197+#: Dash/Previews/Reviews.qml:121
198+msgid "Send"
199+msgstr "Lähetä"
210200
211−#: Dash/Video/VideoPreview.qml:176
212−msgid "Author:"
213−msgstr "Tekijä:"
201+#: Dash/Previews/Reviews.qml:139
202+msgid "Comments:"
203+msgstr "Kommentit:"
214204
215205#: Greeter/Lockscreen.qml:142
216206msgid "Emergency Call"
@@ -249,7 +239,7 @@ msgstr "Puhutaan..."
249239msgid "Search"
250240msgstr "Hae"
251241
252−#: plugins/Unity/scope.cpp:336
242+#: plugins/Unity/scope.cpp:361
253243msgid "Sorry, there is nothing that matches your search."
254244msgstr "Hakuun täsmääviä tuloksia ei löydy."
255245
po/fo.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-01 15:13+0000\n"
1212"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
1313"Language-Team: Faroese <fo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Sjónbond"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Snakkar..."
247237msgid "Search"
248238msgstr "Leita"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
253243
po/fr.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 03:21+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: French <fr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Vidéos"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr ""
247237msgid "Search"
248238msgstr ""
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/gd.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-09-30 10:34+0000\n"
1212"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
1313"Language-Team: Gaelic; Scottish <gd@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
1818"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "An Uicipeid"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr "Gearr leum thairis air an ro-ràdh"
9393
@@ -139,18 +139,20 @@ msgid ""
139139"phone<br><br>Tap anywhere to start"
140140msgstr ""
141141
142−#: Components/PageHeader.qml:298
142+#: Components/PageHeader.qml:341
143143msgid "Recent searches"
144144msgstr "Na lorg thu o chionn goirid"
145145
146146#. TRANSLATORS: Number of persons who rated this app
147−#: Dash/Apps/AppInfo.qml:73
147+#. TRANSLATORS: Number of persons who rated this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
148149#, qt-format
149150msgid "(%1)"
150151msgstr "(%1)"
151152
152153#. TRANSLATORS: Number of persons who wrote reviews for this app
153−#: Dash/Apps/AppInfo.qml:85
154+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
155+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
154156#, qt-format
155157msgid "%1 review"
156158msgid_plural "%1 reviews"
@@ -159,26 +161,10 @@ msgstr[1] "%1 lèirmheas"
159161msgstr[2] "%1 lèirmheasan"
160162msgstr[3] "%1 lèirmheas"
161163
162−#: Dash/Apps/AppPreview.qml:178
164+#: Dash/Apps/AppPreview.qml:126
163165msgid "Rate this"
164166msgstr "Rangaich seo"
165167
166−#: Dash/Apps/AppReviews.qml:74
167−msgid "Add a review"
168−msgstr "Cuir lèirmheas ris"
169−
170−#: Dash/Apps/AppReviews.qml:86
171−msgid "Review"
172−msgstr "Lèirmheas"
173−
174−#: Dash/Apps/AppReviews.qml:121
175−msgid "Send"
176−msgstr "Cuir"
177−
178−#: Dash/Apps/AppReviews.qml:139
179−msgid "Comments:"
180−msgstr "Beachdan"
181−
182168#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
183169msgid "Featured"
184170msgstr "Brosnaichte"
@@ -207,17 +193,21 @@ msgstr "Fèill mhòr air air loidhne"
207193msgid "Videos"
208194msgstr "Videothan"
209195
210−#: Dash/Video/VideoPreview.qml:130
211−msgid "Directed by:"
212−msgstr "Air a stiùireadh le:"
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"
213203
214−#: Dash/Video/VideoPreview.qml:153
215−msgid "Starring:"
216−msgstr "Leis na daoine a leanas:"
204+#: Dash/Previews/Reviews.qml:121
205+msgid "Send"
206+msgstr "Cuir"
217207
218−#: Dash/Video/VideoPreview.qml:176
219−msgid "Author:"
220−msgstr "Ùghdar:"
208+#: Dash/Previews/Reviews.qml:139
209+msgid "Comments:"
210+msgstr "Beachdan"
221211
222212#: Greeter/Lockscreen.qml:142
223213msgid "Emergency Call"
@@ -256,7 +246,7 @@ msgstr "A' bruidhinn..."
256246msgid "Search"
257247msgstr "Lorg"
258248
259−#: plugins/Unity/scope.cpp:336
249+#: plugins/Unity/scope.cpp:361
260250msgid "Sorry, there is nothing that matches your search."
261251msgstr "Tha sinn duilich ach chan eil dad a' freagairt ris na lorg thu."
262252
po/gl.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-03 18:49+0000\n"
1212"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-04 06:11+0000\n"
19−"X-Generator: Launchpad (build 16791)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Saltar introdución"
9292
@@ -134,44 +134,30 @@ msgstr ""
134134"Xa domina os xestos desde os bordos e pode comezar a usar o "
135135"móbil<br><br>Toque en calquera sitio para comezar"
136136
137−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
138138msgid "Recent searches"
139139msgstr "Buscas recentes"
140140
141141#. TRANSLATORS: Number of persons who rated this app
142−#: Dash/Apps/AppInfo.qml:73
142+#. TRANSLATORS: Number of persons who rated this app/video/whatever
143+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
143144#, qt-format
144145msgid "(%1)"
145146msgstr "(%1)"
146147
147148#. TRANSLATORS: Number of persons who wrote reviews for this app
148−#: Dash/Apps/AppInfo.qml:85
149+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
150+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149151#, qt-format
150152msgid "%1 review"
151153msgid_plural "%1 reviews"
152154msgstr[0] "%1 opinión"
153155msgstr[1] "%1 opinións"
154156
155−#: Dash/Apps/AppPreview.qml:178
157+#: Dash/Apps/AppPreview.qml:126
156158msgid "Rate this"
157159msgstr "Valore isto"
158160
159−#: Dash/Apps/AppReviews.qml:74
160−msgid "Add a review"
161−msgstr "Engadir unha opinión"
162−
163−#: Dash/Apps/AppReviews.qml:86
164−msgid "Review"
165−msgstr "Opinión"
166−
167−#: Dash/Apps/AppReviews.qml:121
168−msgid "Send"
169−msgstr "Enviar"
170−
171−#: Dash/Apps/AppReviews.qml:139
172−msgid "Comments:"
173−msgstr "Comentarios:"
174−
175161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
176162msgid "Featured"
177163msgstr "Destacado"
@@ -200,17 +186,21 @@ msgstr "Populares en liña"
200186msgid "Videos"
201187msgstr "Vídeos"
202188
203−#: Dash/Video/VideoPreview.qml:130
204−msgid "Directed by:"
205−msgstr "Dirixido por"
189+#: Dash/Previews/Reviews.qml:74
190+msgid "Add a review"
191+msgstr "Engadir unha opinión"
192+
193+#: Dash/Previews/Reviews.qml:86
194+msgid "Review"
195+msgstr "Opinión"
206196
207−#: Dash/Video/VideoPreview.qml:153
208−msgid "Starring:"
209−msgstr "Favoritos"
197+#: Dash/Previews/Reviews.qml:121
198+msgid "Send"
199+msgstr "Enviar"
210200
211−#: Dash/Video/VideoPreview.qml:176
212−msgid "Author:"
213−msgstr "Autor:"
201+#: Dash/Previews/Reviews.qml:139
202+msgid "Comments:"
203+msgstr "Comentarios:"
214204
215205#: Greeter/Lockscreen.qml:142
216206msgid "Emergency Call"
@@ -249,7 +239,7 @@ msgstr "Falando…"
249239msgid "Search"
250240msgstr "Buscar"
251241
252−#: plugins/Unity/scope.cpp:336
242+#: plugins/Unity/scope.cpp:361
253243msgid "Sorry, there is nothing that matches your search."
254244msgstr "Sentímolo, non hai nada que coincida con esta busca."
255245
po/he.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-01 09:19+0000\n"
1212"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "ויקיפדיה"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "לדלג על הפתיחה"
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "חיפושים אחרונים"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr "(%1)"
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] "סקירה %1"
151153msgstr[1] "%1 סקירות"
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr "דירוג היישום"
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr "הוספת סקירה"
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr "סקירה"
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr "שליחה"
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr "הערות:"
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr "מומלצים"
@@ -198,17 +184,21 @@ msgstr "פופולריים ברחבי הרשת"
198184msgid "Videos"
199185msgstr "סרטונים"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
203−msgstr "בוים ע״י:"
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 "סקירה"
204194
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
207−msgstr "בכיכוב:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "שליחה"
208198
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr "יוצר:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "הערות:"
212202
213203#: Greeter/Lockscreen.qml:142
214204msgid "Emergency Call"
@@ -247,7 +237,7 @@ msgstr "הדיבור מושמע…"
247237msgid "Search"
248238msgstr "חיפוש"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה."
253243
po/hr.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 04:14+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Croatian <hr@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,44 +133,30 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
137137msgid "Recent searches"
138138msgstr "Nedavne pretrage"
139139
140140#. TRANSLATORS: Number of persons who rated this app
141−#: Dash/Apps/AppInfo.qml:73
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142143#, qt-format
143144msgid "(%1)"
144145msgstr ""
145146
146147#. TRANSLATORS: Number of persons who wrote reviews for this app
147−#: Dash/Apps/AppInfo.qml:85
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
148150#, qt-format
149151msgid "%1 review"
150152msgid_plural "%1 reviews"
151153msgstr[0] ""
152154msgstr[1] ""
153155
154−#: Dash/Apps/AppPreview.qml:178
156+#: Dash/Apps/AppPreview.qml:126
155157msgid "Rate this"
156158msgstr ""
157159
158−#: Dash/Apps/AppReviews.qml:74
159−msgid "Add a review"
160−msgstr ""
161−
162−#: Dash/Apps/AppReviews.qml:86
163−msgid "Review"
164−msgstr ""
165−
166−#: Dash/Apps/AppReviews.qml:121
167−msgid "Send"
168−msgstr ""
169−
170−#: Dash/Apps/AppReviews.qml:139
171−msgid "Comments:"
172−msgstr ""
173−
174160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
175161msgid "Featured"
176162msgstr ""
@@ -199,16 +185,20 @@ msgstr ""
199185msgid "Videos"
200186msgstr "Video"
201187
202−#: Dash/Video/VideoPreview.qml:130
203−msgid "Directed by:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
204190msgstr ""
205191
206−#: Dash/Video/VideoPreview.qml:153
207−msgid "Starring:"
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
208194msgstr ""
209195
210−#: Dash/Video/VideoPreview.qml:176
211−msgid "Author:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
199+
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
212202msgstr ""
213203
214204#: Greeter/Lockscreen.qml:142
@@ -248,7 +238,7 @@ msgstr "Govor..."
248238msgid "Search"
249239msgstr "Pretraživanje"
250240
251−#: plugins/Unity/scope.cpp:336
241+#: plugins/Unity/scope.cpp:361
252242msgid "Sorry, there is nothing that matches your search."
253243msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
254244
po/hu.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 04:28+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Legutóbbi keresések"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Videók"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Beszéd…"
247237msgid "Search"
248238msgstr "Keresés"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Elnézést, nincs találat a keresésre."
253243
po/hy.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 04:43+0000\n"
1212"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
1313"Language-Team: Armenian <hy@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Վերջին որոնումներ"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Վիդեոներ"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Խոսում եմ..."
247237msgid "Search"
248238msgstr "Որոնում"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
253243
po/id.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-26 22:35+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Indonesian <id@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr ""
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr ""
247237msgid "Search"
248238msgstr ""
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/is.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-09-18 16:22+0000\n"
1212"Last-Translator: Andri Thorlacius <Unknown>\n"
1313"Language-Team: Icelandic <is@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Hoppa yfir kynningu"
9292
@@ -133,44 +133,30 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
137137msgid "Recent searches"
138138msgstr "Nýlegar leitir"
139139
140140#. TRANSLATORS: Number of persons who rated this app
141−#: Dash/Apps/AppInfo.qml:73
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142143#, qt-format
143144msgid "(%1)"
144145msgstr "(%1)"
145146
146147#. TRANSLATORS: Number of persons who wrote reviews for this app
147−#: Dash/Apps/AppInfo.qml:85
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
148150#, qt-format
149151msgid "%1 review"
150152msgid_plural "%1 reviews"
151153msgstr[0] "%1 ummæli"
152154msgstr[1] "%1 ummæli"
153155
154−#: Dash/Apps/AppPreview.qml:178
156+#: Dash/Apps/AppPreview.qml:126
155157msgid "Rate this"
156158msgstr "Gefa þessu einkunn"
157159
158−#: Dash/Apps/AppReviews.qml:74
159−msgid "Add a review"
160−msgstr "Gefa umsögn"
161−
162−#: Dash/Apps/AppReviews.qml:86
163−msgid "Review"
164−msgstr "Umsögn"
165−
166−#: Dash/Apps/AppReviews.qml:121
167−msgid "Send"
168−msgstr "Senda"
169−
170−#: Dash/Apps/AppReviews.qml:139
171−msgid "Comments:"
172−msgstr "Athugasemdir:"
173−
174160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
175161msgid "Featured"
176162msgstr "Efst á baugi"
@@ -199,17 +185,21 @@ msgstr "Vinsælt á Netinu"
199185msgid "Videos"
200186msgstr "Myndbönd"
201187
202−#: Dash/Video/VideoPreview.qml:130
203−msgid "Directed by:"
204−msgstr "Leikstýrt af:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr "Gefa umsögn"
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
194+msgstr "Umsögn"
205195
206−#: Dash/Video/VideoPreview.qml:153
207−msgid "Starring:"
208−msgstr "Meðal leikara eru:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr "Senda"
209199
210−#: Dash/Video/VideoPreview.qml:176
211−msgid "Author:"
212−msgstr "Höfundur:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr "Athugasemdir:"
213203
214204#: Greeter/Lockscreen.qml:142
215205msgid "Emergency Call"
@@ -248,7 +238,7 @@ msgstr "Tala..."
248238msgid "Search"
249239msgstr "Leita"
250240
251−#: plugins/Unity/scope.cpp:336
241+#: plugins/Unity/scope.cpp:361
252242msgid "Sorry, there is nothing that matches your search."
253243msgstr "Því miður, það var ekkert sem passaði við leitarorðið þitt."
254244
po/it.po+28−36
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
11−"PO-Revision-Date: 2013-09-28 10:05+0000\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-07 09:34+0000\n"
1212"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Salta introduzione"
9292
@@ -136,45 +136,33 @@ msgid ""
136136"You have now mastered the edge gestures and can start using the "
137137"phone<br><br>Tap anywhere to start"
138138msgstr ""
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"
139141
140−#: Components/PageHeader.qml:298
142+#: Components/PageHeader.qml:341
141143msgid "Recent searches"
142144msgstr "Ricerche recenti"
143145
144146#. TRANSLATORS: Number of persons who rated this app
145−#: Dash/Apps/AppInfo.qml:73
147+#. TRANSLATORS: Number of persons who rated this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
146149#, qt-format
147150msgid "(%1)"
148151msgstr "(%1)"
149152
150153#. TRANSLATORS: Number of persons who wrote reviews for this app
151−#: Dash/Apps/AppInfo.qml:85
154+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
155+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
152156#, qt-format
153157msgid "%1 review"
154158msgid_plural "%1 reviews"
155159msgstr[0] "%1 recensione"
156160msgstr[1] "%1 recensioni"
157161
158−#: Dash/Apps/AppPreview.qml:178
162+#: Dash/Apps/AppPreview.qml:126
159163msgid "Rate this"
160164msgstr "Valuta"
161165
162−#: Dash/Apps/AppReviews.qml:74
163−msgid "Add a review"
164−msgstr "Aggiungi una recensione"
165−
166−#: Dash/Apps/AppReviews.qml:86
167−msgid "Review"
168−msgstr "Recensisci"
169−
170−#: Dash/Apps/AppReviews.qml:121
171−msgid "Send"
172−msgstr "Invia"
173−
174−#: Dash/Apps/AppReviews.qml:139
175−msgid "Comments:"
176−msgstr "Commenti:"
177−
178166#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
179167msgid "Featured"
180168msgstr "In evidenza"
@@ -203,17 +191,21 @@ msgstr "Popolari online"
203191msgid "Videos"
204192msgstr "Video"
205193
206−#: Dash/Video/VideoPreview.qml:130
207−msgid "Directed by:"
208−msgstr "Diretto da:"
194+#: Dash/Previews/Reviews.qml:74
195+msgid "Add a review"
196+msgstr "Aggiungi una recensione"
209197
210−#: Dash/Video/VideoPreview.qml:153
211−msgid "Starring:"
212−msgstr "Valutazioni:"
198+#: Dash/Previews/Reviews.qml:86
199+msgid "Review"
200+msgstr "Recensisci"
213201
214−#: Dash/Video/VideoPreview.qml:176
215−msgid "Author:"
216−msgstr "Autore:"
202+#: Dash/Previews/Reviews.qml:121
203+msgid "Send"
204+msgstr "Invia"
205+
206+#: Dash/Previews/Reviews.qml:139
207+msgid "Comments:"
208+msgstr "Commenti:"
217209
218210#: Greeter/Lockscreen.qml:142
219211msgid "Emergency Call"
@@ -252,13 +244,13 @@ msgstr "Sto parlando..."
252244msgid "Search"
253245msgstr "Cerca"
254246
255−#: plugins/Unity/scope.cpp:336
247+#: plugins/Unity/scope.cpp:361
256248msgid "Sorry, there is nothing that matches your search."
257249msgstr "Nessun risultato corrispondente alla ricerca."
258250
259251#: plugins/Unity/showallfilteroption.cpp:41
260252msgid "All"
261−msgstr ""
253+msgstr "Tutto"
262254
263255#: Shell.qml:453
264256#, qt-format
po/ja.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr ""
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr ""
247237msgid "Search"
248238msgstr ""
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/kn.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 05:43+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kannada <kn@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "ವೀಡಿಯೋಗಳು"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "ಮಾತನಾಡುತಿದ್ದೀರಿ"
247237msgid "Search"
248238msgstr "ಹುಡುಕು"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯಾದ ಹೊಂದಾಣಿಕೆಗಳು ದೊರಕುತ್ತಿಲ್ಲ"
253243
po/ko.po+44−54
@@ -7,92 +7,92 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
11−"PO-Revision-Date: 2013-06-27 05:59+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-10 07:04+0000\n"
12+"Last-Translator: Kim Boram <boramism@gmail.com>\n"
1313"Language-Team: Korean <ko@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-11 05:58+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
23−msgstr ""
23+msgstr "전화"
2424
2525#: Applications/applications.js:29
2626msgid "Camera"
27−msgstr ""
27+msgstr "카메라"
2828
2929#: Applications/applications.js:35
3030msgid "Gallery"
31−msgstr ""
31+msgstr "갤러리"
3232
3333#: Applications/applications.js:40
3434msgid "Facebook"
35−msgstr ""
35+msgstr "페이스북"
3636
3737#: Applications/applications.js:46
3838msgid "Browser"
39−msgstr ""
39+msgstr "브라우저"
4040
4141#: Applications/applications.js:51
4242msgid "Twitter"
43−msgstr ""
43+msgstr "트위터"
4444
4545#: Applications/applications.js:57
4646msgid "GMail"
47−msgstr ""
47+msgstr "지메일"
4848
4949#: Applications/applications.js:62
5050msgid "Weather"
51−msgstr ""
51+msgstr "날씨"
5252
5353#: Applications/applications.js:68
5454msgid "Notepad"
55−msgstr ""
55+msgstr "메모장"
5656
5757#: Applications/applications.js:74
5858msgid "Calendar"
59−msgstr ""
59+msgstr "달력"
6060
6161#: Applications/applications.js:80
6262msgid "Media Player"
63−msgstr ""
63+msgstr "미디어 재생기"
6464
6565#: Applications/applications.js:86
6666msgid "Evernote"
67−msgstr ""
67+msgstr "에버노트"
6868
6969#: Applications/applications.js:91
7070msgid "Map"
71−msgstr ""
71+msgstr "지도"
7272
7373#: Applications/applications.js:96
7474msgid "Pinterest"
75−msgstr ""
75+msgstr "핀터레스트"
7676
7777#: Applications/applications.js:101
7878msgid "SoundCloud"
79−msgstr ""
79+msgstr "사운드클라우드"
8080
8181#: Applications/applications.js:106
8282msgid "Wikipedia"
83−msgstr ""
83+msgstr "위키백과"
8484
8585#: Applications/applications.js:111
8686msgid "YouTube"
87−msgstr ""
87+msgstr "유튜브"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "도입부 건너뛰기"
9292
9393#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "오른쪽 끝"
9696
9797#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137−msgstr "요즈음 찿은 것들"
137+msgstr "최근 검색"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr ""
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -245,9 +235,9 @@ msgstr ""
245235
246236#: Panel/SearchIndicator.qml:27
247237msgid "Search"
248−msgstr "찾기"
238+msgstr "검색"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/ky.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 06:17+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Kirghiz <ky@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Соңку издөөлөр"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Видеолор"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Сүйлөнүүдө..."
247237msgid "Search"
248238msgstr "Издөө"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Тилекке каршы, сиздин издөөңүзгө эч нерсе дал келген жок."
253243
po/lo.po+22−32
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-02 10:00+0000\n"
1212"Last-Translator: Anousak <anousak@gmail.com>\n"
1313"Language-Team: Lao <lo@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-03 06:08+0000\n"
19−"X-Generator: Launchpad (build 16791)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr "ິYouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr "(%1)"
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr "ສົ່ງ"
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr "ຄໍ່ເຫັນ"
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,17 +184,21 @@ msgstr ""
198184msgid "Videos"
199185msgstr "ວິດີໂອ"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr ""
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "ສົ່ງ"
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "ຄໍ່ເຫັນ"
212202
213203#: Greeter/Lockscreen.qml:142
214204msgid "Emergency Call"
@@ -247,7 +237,7 @@ msgstr "ກໍາລັງເວົ້າ"
247237msgid "Search"
248238msgstr "ຊອກຫາ"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/lv.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-09-28 16:29+0000\n"
1212"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
1313"Language-Team: Latvian <lv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Vikipēdija"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Nesen veiktās meklēšanas"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Video"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Runa..."
247237msgid "Search"
248238msgstr "Meklēt"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
253243
po/my.po+52−62
@@ -7,92 +7,92 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
11−"PO-Revision-Date: 2013-06-27 06:47+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-09 11:35+0000\n"
12+"Last-Translator: Pyae Sone <Unknown>\n"
1313"Language-Team: Burmese <my@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-10 05:50+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
23−msgstr ""
23+msgstr "ဖုန်း"
2424
2525#: Applications/applications.js:29
2626msgid "Camera"
27−msgstr ""
27+msgstr "ကင်မရာ"
2828
2929#: Applications/applications.js:35
3030msgid "Gallery"
31−msgstr ""
31+msgstr "ဓာတ်ပုံသိမ်းထားသည့်နေရာ"
3232
3333#: Applications/applications.js:40
3434msgid "Facebook"
35−msgstr ""
35+msgstr "Facebook"
3636
3737#: Applications/applications.js:46
3838msgid "Browser"
39−msgstr ""
39+msgstr "Browser"
4040
4141#: Applications/applications.js:51
4242msgid "Twitter"
43−msgstr ""
43+msgstr "Twitter"
4444
4545#: Applications/applications.js:57
4646msgid "GMail"
47−msgstr ""
47+msgstr "ဂျီမေးလ်"
4848
4949#: Applications/applications.js:62
5050msgid "Weather"
51−msgstr ""
51+msgstr "ရာသီဥတု"
5252
5353#: Applications/applications.js:68
5454msgid "Notepad"
55−msgstr ""
55+msgstr "Notepad"
5656
5757#: Applications/applications.js:74
5858msgid "Calendar"
59−msgstr ""
59+msgstr "ပြက္ခဒိန်"
6060
6161#: Applications/applications.js:80
6262msgid "Media Player"
63−msgstr ""
63+msgstr "မီဒီယာဖွင့်စက်"
6464
6565#: Applications/applications.js:86
6666msgid "Evernote"
67−msgstr ""
67+msgstr "Evernote"
6868
6969#: Applications/applications.js:91
7070msgid "Map"
71−msgstr ""
71+msgstr "မြေပုံ"
7272
7373#: Applications/applications.js:96
7474msgid "Pinterest"
75−msgstr ""
75+msgstr "Pinterest"
7676
7777#: Applications/applications.js:101
7878msgid "SoundCloud"
79−msgstr ""
79+msgstr "SoundCloud"
8080
8181#: Applications/applications.js:106
8282msgid "Wikipedia"
83−msgstr ""
83+msgstr "ဝီကီပီဒီးယား"
8484
8585#: Applications/applications.js:111
8686msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "မိတ်ဆက်ကိုကျော်မည်"
9292
9393#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "ညာဖက် အစွန်း"
9696
9797#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
@@ -100,7 +100,7 @@ msgstr ""
100100
101101#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "ထိပ် အစွန်း"
104104
105105#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
@@ -108,7 +108,7 @@ msgstr ""
108108
109109#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "ပိတ်"
112112
113113#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
@@ -116,7 +116,7 @@ msgstr ""
116116
117117#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "ဘယ်​ဖက် အစွန်း"
120120
121121#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
@@ -124,7 +124,7 @@ msgstr ""
124124
125125#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127−msgstr ""
127+msgstr "ကောင်းအောင်ပြုလုပ်ခဲ့သည်"
128128
129129#: Components/EdgeDemo.qml:227
130130msgid ""
@@ -132,43 +132,29 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143−msgstr ""
144+msgstr "(%1)"
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155−msgstr ""
156−
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
157+msgstr "ဒီဟာကိုအမှတ်ပေးမည်"
172158
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
@@ -176,11 +162,11 @@ msgstr ""
176162
177163#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
178164msgid "Recent"
179−msgstr ""
165+msgstr "မကြာသေးခင်က"
180166
181167#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
182168msgid "New Releases"
183−msgstr ""
169+msgstr "အသစ်ထွက်ရှိသော"
184170
185171#: Dash/DashMusic.qml:30
186172msgid "Top Charting"
@@ -192,23 +178,27 @@ msgstr "တေးဂီတ"
192178
193179#: Dash/DashVideos.qml:31
194180msgid "Popular Online"
195−msgstr ""
181+msgstr "အွန်လိုင်းတွင်ပေါ်ပြူလာဖြစ်သော"
196182
197183#: Dash/DashVideos.qml:146
198184msgid "Videos"
199185msgstr "ဗီဒီယိုများ"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr ""
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "ပို့မည်"
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "မှတ်ချက်များ-"
212202
213203#: Greeter/Lockscreen.qml:142
214204msgid "Emergency Call"
@@ -247,7 +237,7 @@ msgstr "ပြောနေသည်"
247237msgid "Search"
248238msgstr "ရှာဖွေ"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့်တူညီတာဘာမှမရှိပါ။"
253243
po/nb.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 07:02+0000\n"
1212"Last-Translator: Joakim Langvand <jlangvand@gmail.com>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Siste søk"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Videoer"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Snakker …"
247237msgid "Search"
248238msgstr "Søk"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Søket ga ingen treff."
253243
po/nl.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 07:19+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "Recente zoekopdrachten"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "Video's"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "Inspreken…"
247237msgid "Search"
248238msgstr "Zoeken"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
253243
po/pl.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 08:52+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Polish <pl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
1818"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Wikipedia"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,44 +133,30 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
137137msgid "Recent searches"
138138msgstr "Ostatnie wyszukiwania"
139139
140140#. TRANSLATORS: Number of persons who rated this app
141−#: Dash/Apps/AppInfo.qml:73
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142143#, qt-format
143144msgid "(%1)"
144145msgstr ""
145146
146147#. TRANSLATORS: Number of persons who wrote reviews for this app
147−#: Dash/Apps/AppInfo.qml:85
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
148150#, qt-format
149151msgid "%1 review"
150152msgid_plural "%1 reviews"
151153msgstr[0] ""
152154msgstr[1] ""
153155
154−#: Dash/Apps/AppPreview.qml:178
156+#: Dash/Apps/AppPreview.qml:126
155157msgid "Rate this"
156158msgstr ""
157159
158−#: Dash/Apps/AppReviews.qml:74
159−msgid "Add a review"
160−msgstr ""
161−
162−#: Dash/Apps/AppReviews.qml:86
163−msgid "Review"
164−msgstr ""
165−
166−#: Dash/Apps/AppReviews.qml:121
167−msgid "Send"
168−msgstr ""
169−
170−#: Dash/Apps/AppReviews.qml:139
171−msgid "Comments:"
172−msgstr ""
173−
174160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
175161msgid "Featured"
176162msgstr "Polecane"
@@ -199,17 +185,21 @@ msgstr "Popularne w sieci"
199185msgid "Videos"
200186msgstr "Filmy"
201187
202−#: Dash/Video/VideoPreview.qml:130
203−msgid "Directed by:"
204−msgstr "Reżyseria:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
194+msgstr ""
205195
206−#: Dash/Video/VideoPreview.qml:153
207−msgid "Starring:"
208−msgstr "Obsada:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
209199
210−#: Dash/Video/VideoPreview.qml:176
211−msgid "Author:"
212−msgstr "Autor:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr ""
213203
214204#: Greeter/Lockscreen.qml:142
215205msgid "Emergency Call"
@@ -248,7 +238,7 @@ msgstr "Rozpoznanie..."
248238msgid "Search"
249239msgstr "Szukaj"
250240
251−#: plugins/Unity/scope.cpp:336
241+#: plugins/Unity/scope.cpp:361
252242msgid "Sorry, there is nothing that matches your search."
253243msgstr "Nie znaleziono pasujących wyników."
254244
po/pt_BR.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-01 13:05+0000\n"
1212"Last-Translator: Rafael Neri <Unknown>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Wikipédia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Pular introdução"
9292
@@ -134,44 +134,30 @@ msgid ""
134134"phone<br><br>Tap anywhere to start"
135135msgstr ""
136136
137−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
138138msgid "Recent searches"
139139msgstr "Pesquisas recentes"
140140
141141#. TRANSLATORS: Number of persons who rated this app
142−#: Dash/Apps/AppInfo.qml:73
142+#. TRANSLATORS: Number of persons who rated this app/video/whatever
143+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
143144#, qt-format
144145msgid "(%1)"
145146msgstr "(%1)"
146147
147148#. TRANSLATORS: Number of persons who wrote reviews for this app
148−#: Dash/Apps/AppInfo.qml:85
149+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
150+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149151#, qt-format
150152msgid "%1 review"
151153msgid_plural "%1 reviews"
152154msgstr[0] "%1 análise"
153155msgstr[1] "%1 análises"
154156
155−#: Dash/Apps/AppPreview.qml:178
157+#: Dash/Apps/AppPreview.qml:126
156158msgid "Rate this"
157159msgstr "Avaliar isto"
158160
159−#: Dash/Apps/AppReviews.qml:74
160−msgid "Add a review"
161−msgstr "Adicionar uma análise"
162−
163−#: Dash/Apps/AppReviews.qml:86
164−msgid "Review"
165−msgstr "Revisão"
166−
167−#: Dash/Apps/AppReviews.qml:121
168−msgid "Send"
169−msgstr "Enviar"
170−
171−#: Dash/Apps/AppReviews.qml:139
172−msgid "Comments:"
173−msgstr "Comentários:"
174−
175161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
176162msgid "Featured"
177163msgstr "Em destaque"
@@ -200,17 +186,21 @@ msgstr "Popular Online"
200186msgid "Videos"
201187msgstr "Vídeos"
202188
203−#: Dash/Video/VideoPreview.qml:130
204−msgid "Directed by:"
205−msgstr "Realizado por:"
189+#: Dash/Previews/Reviews.qml:74
190+msgid "Add a review"
191+msgstr "Adicionar uma análise"
192+
193+#: Dash/Previews/Reviews.qml:86
194+msgid "Review"
195+msgstr "Revisão"
206196
207−#: Dash/Video/VideoPreview.qml:153
208−msgid "Starring:"
209−msgstr "Estrelando:"
197+#: Dash/Previews/Reviews.qml:121
198+msgid "Send"
199+msgstr "Enviar"
210200
211−#: Dash/Video/VideoPreview.qml:176
212−msgid "Author:"
213−msgstr "Autor:"
201+#: Dash/Previews/Reviews.qml:139
202+msgid "Comments:"
203+msgstr "Comentários:"
214204
215205#: Greeter/Lockscreen.qml:142
216206msgid "Emergency Call"
@@ -249,7 +239,7 @@ msgstr "Falando..."
249239msgid "Search"
250240msgstr "Pesquisar"
251241
252−#: plugins/Unity/scope.cpp:336
242+#: plugins/Unity/scope.cpp:361
253243msgid "Sorry, there is nothing that matches your search."
254244msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
255245
po/ro.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 07:53+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
1818"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,44 +133,30 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
137137msgid "Recent searches"
138138msgstr "Căutări recente"
139139
140140#. TRANSLATORS: Number of persons who rated this app
141−#: Dash/Apps/AppInfo.qml:73
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142143#, qt-format
143144msgid "(%1)"
144145msgstr ""
145146
146147#. TRANSLATORS: Number of persons who wrote reviews for this app
147−#: Dash/Apps/AppInfo.qml:85
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
148150#, qt-format
149151msgid "%1 review"
150152msgid_plural "%1 reviews"
151153msgstr[0] ""
152154msgstr[1] ""
153155
154−#: Dash/Apps/AppPreview.qml:178
156+#: Dash/Apps/AppPreview.qml:126
155157msgid "Rate this"
156158msgstr ""
157159
158−#: Dash/Apps/AppReviews.qml:74
159−msgid "Add a review"
160−msgstr ""
161−
162−#: Dash/Apps/AppReviews.qml:86
163−msgid "Review"
164−msgstr ""
165−
166−#: Dash/Apps/AppReviews.qml:121
167−msgid "Send"
168−msgstr ""
169−
170−#: Dash/Apps/AppReviews.qml:139
171−msgid "Comments:"
172−msgstr ""
173−
174160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
175161msgid "Featured"
176162msgstr ""
@@ -199,16 +185,20 @@ msgstr ""
199185msgid "Videos"
200186msgstr "Video"
201187
202−#: Dash/Video/VideoPreview.qml:130
203−msgid "Directed by:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
204190msgstr ""
205191
206−#: Dash/Video/VideoPreview.qml:153
207−msgid "Starring:"
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
208194msgstr ""
209195
210−#: Dash/Video/VideoPreview.qml:176
211−msgid "Author:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
199+
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
212202msgstr ""
213203
214204#: Greeter/Lockscreen.qml:142
@@ -248,7 +238,7 @@ msgstr "Vorbire..."
248238msgid "Search"
249239msgstr "Căutare"
250240
251−#: plugins/Unity/scope.cpp:336
241+#: plugins/Unity/scope.cpp:361
252242msgid "Sorry, there is nothing that matches your search."
253243msgstr ""
254244"Ne pare rău, nu este nimic care se potrivește căutării dumneavoastră."
po/ru.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-01 05:55+0000\n"
1212"Last-Translator: Zonov Roman <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Википедия"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr "Пропустить обучение"
9393
@@ -138,43 +138,29 @@ msgid ""
138138"phone<br><br>Tap anywhere to start"
139139msgstr ""
140140
141−#: Components/PageHeader.qml:298
141+#: Components/PageHeader.qml:341
142142msgid "Recent searches"
143143msgstr "Последние поисковые запросы"
144144
145145#. TRANSLATORS: Number of persons who rated this app
146−#: Dash/Apps/AppInfo.qml:73
146+#. TRANSLATORS: Number of persons who rated this app/video/whatever
147+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
147148#, qt-format
148149msgid "(%1)"
149150msgstr "(%1)"
150151
151152#. TRANSLATORS: Number of persons who wrote reviews for this app
152−#: Dash/Apps/AppInfo.qml:85
153+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
154+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
153155#, qt-format
154156msgid "%1 review"
155157msgid_plural "%1 reviews"
156158msgstr[0] "%1 отзыв"
157159
158−#: Dash/Apps/AppPreview.qml:178
160+#: Dash/Apps/AppPreview.qml:126
159161msgid "Rate this"
160162msgstr "Оцените это"
161163
162−#: Dash/Apps/AppReviews.qml:74
163−msgid "Add a review"
164−msgstr "Добавьте отзыв"
165−
166−#: Dash/Apps/AppReviews.qml:86
167−msgid "Review"
168−msgstr "Отзыв"
169−
170−#: Dash/Apps/AppReviews.qml:121
171−msgid "Send"
172−msgstr "Отправить"
173−
174−#: Dash/Apps/AppReviews.qml:139
175−msgid "Comments:"
176−msgstr "Комментарии:"
177−
178164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
179165msgid "Featured"
180166msgstr "Рекомендованное"
@@ -203,17 +189,21 @@ msgstr "Популярное в Интернете"
203189msgid "Videos"
204190msgstr "Видео"
205191
206−#: Dash/Video/VideoPreview.qml:130
207−msgid "Directed by:"
208−msgstr "Режиссёр"
192+#: Dash/Previews/Reviews.qml:74
193+msgid "Add a review"
194+msgstr "Добавьте отзыв"
195+
196+#: Dash/Previews/Reviews.qml:86
197+msgid "Review"
198+msgstr "Отзыв"
209199
210−#: Dash/Video/VideoPreview.qml:153
211−msgid "Starring:"
212−msgstr "В главных ролях:"
200+#: Dash/Previews/Reviews.qml:121
201+msgid "Send"
202+msgstr "Отправить"
213203
214−#: Dash/Video/VideoPreview.qml:176
215−msgid "Author:"
216−msgstr "Автор:"
204+#: Dash/Previews/Reviews.qml:139
205+msgid "Comments:"
206+msgstr "Комментарии:"
217207
218208#: Greeter/Lockscreen.qml:142
219209msgid "Emergency Call"
@@ -252,7 +242,7 @@ msgstr "Говорите..."
252242msgid "Search"
253243msgstr "Поиск"
254244
255−#: plugins/Unity/scope.cpp:336
245+#: plugins/Unity/scope.cpp:361
256246msgid "Sorry, there is nothing that matches your search."
257247msgstr "Извините, поиск не дал результатов."
258248
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+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Sinhalese <si@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr ""
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr ""
247237msgid "Search"
248238msgstr ""
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/sl.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-02 10:55+0000\n"
1212"Last-Translator: Damir Jerovšek <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
1818"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2013-10-03 06:08+0000\n"
20−"X-Generator: Launchpad (build 16791)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Wikipedija"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr "Preskoči uvod"
9393
@@ -137,18 +137,20 @@ msgstr ""
137137"Sedaj ste osvojili poteze robov ter lahko začnete uporabljati "
138138"telefon<br><br>Tapnite kjerkoli na začetek"
139139
140−#: Components/PageHeader.qml:298
140+#: Components/PageHeader.qml:341
141141msgid "Recent searches"
142142msgstr "Nedavna iskanja"
143143
144144#. TRANSLATORS: Number of persons who rated this app
145−#: Dash/Apps/AppInfo.qml:73
145+#. TRANSLATORS: Number of persons who rated this app/video/whatever
146+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
146147#, qt-format
147148msgid "(%1)"
148149msgstr "(%1)"
149150
150151#. TRANSLATORS: Number of persons who wrote reviews for this app
151−#: Dash/Apps/AppInfo.qml:85
152+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
153+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
152154#, qt-format
153155msgid "%1 review"
154156msgid_plural "%1 reviews"
@@ -157,26 +159,10 @@ msgstr[1] "%1 ocena"
157159msgstr[2] "%1 oceni"
158160msgstr[3] "%1 ocene"
159161
160−#: Dash/Apps/AppPreview.qml:178
162+#: Dash/Apps/AppPreview.qml:126
161163msgid "Rate this"
162164msgstr "Ocenite"
163165
164−#: Dash/Apps/AppReviews.qml:74
165−msgid "Add a review"
166−msgstr "Dodaj oceno"
167−
168−#: Dash/Apps/AppReviews.qml:86
169−msgid "Review"
170−msgstr "Ocena"
171−
172−#: Dash/Apps/AppReviews.qml:121
173−msgid "Send"
174−msgstr "Pošlji"
175−
176−#: Dash/Apps/AppReviews.qml:139
177−msgid "Comments:"
178−msgstr "Opombe:"
179−
180166#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
181167msgid "Featured"
182168msgstr "Predstavljeno"
@@ -205,17 +191,21 @@ msgstr "Priljubljeno na spletu"
205191msgid "Videos"
206192msgstr "Videi"
207193
208−#: Dash/Video/VideoPreview.qml:130
209−msgid "Directed by:"
210−msgstr "Režija:"
194+#: Dash/Previews/Reviews.qml:74
195+msgid "Add a review"
196+msgstr "Dodaj oceno"
197+
198+#: Dash/Previews/Reviews.qml:86
199+msgid "Review"
200+msgstr "Ocena"
211201
212−#: Dash/Video/VideoPreview.qml:153
213−msgid "Starring:"
214−msgstr "Igrajo:"
202+#: Dash/Previews/Reviews.qml:121
203+msgid "Send"
204+msgstr "Pošlji"
215205
216−#: Dash/Video/VideoPreview.qml:176
217−msgid "Author:"
218−msgstr "Avtor:"
206+#: Dash/Previews/Reviews.qml:139
207+msgid "Comments:"
208+msgstr "Opombe:"
219209
220210#: Greeter/Lockscreen.qml:142
221211msgid "Emergency Call"
@@ -254,7 +244,7 @@ msgstr "Govorjenje ..."
254244msgid "Search"
255245msgstr "Iskanje"
256246
257−#: plugins/Unity/scope.cpp:336
247+#: plugins/Unity/scope.cpp:361
258248msgid "Sorry, there is nothing that matches your search."
259249msgstr "Nič se ne ujema z vašim iskalnim nizom."
260250
po/sr.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 09:19+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Serbian <sr@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
@@ -133,44 +133,30 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
137137msgid "Recent searches"
138138msgstr "Скорашње претраге"
139139
140140#. TRANSLATORS: Number of persons who rated this app
141−#: Dash/Apps/AppInfo.qml:73
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142143#, qt-format
143144msgid "(%1)"
144145msgstr ""
145146
146147#. TRANSLATORS: Number of persons who wrote reviews for this app
147−#: Dash/Apps/AppInfo.qml:85
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
148150#, qt-format
149151msgid "%1 review"
150152msgid_plural "%1 reviews"
151153msgstr[0] ""
152154msgstr[1] ""
153155
154−#: Dash/Apps/AppPreview.qml:178
156+#: Dash/Apps/AppPreview.qml:126
155157msgid "Rate this"
156158msgstr ""
157159
158−#: Dash/Apps/AppReviews.qml:74
159−msgid "Add a review"
160−msgstr ""
161−
162−#: Dash/Apps/AppReviews.qml:86
163−msgid "Review"
164−msgstr ""
165−
166−#: Dash/Apps/AppReviews.qml:121
167−msgid "Send"
168−msgstr ""
169−
170−#: Dash/Apps/AppReviews.qml:139
171−msgid "Comments:"
172−msgstr ""
173−
174160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
175161msgid "Featured"
176162msgstr ""
@@ -199,16 +185,20 @@ msgstr ""
199185msgid "Videos"
200186msgstr "Видео"
201187
202−#: Dash/Video/VideoPreview.qml:130
203−msgid "Directed by:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
204190msgstr ""
205191
206−#: Dash/Video/VideoPreview.qml:153
207−msgid "Starring:"
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
208194msgstr ""
209195
210−#: Dash/Video/VideoPreview.qml:176
211−msgid "Author:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
199+
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
212202msgstr ""
213203
214204#: Greeter/Lockscreen.qml:142
@@ -248,7 +238,7 @@ msgstr "Говор..."
248238msgid "Search"
249239msgstr "Претрага"
250240
251−#: plugins/Unity/scope.cpp:336
241+#: plugins/Unity/scope.cpp:361
252242msgid "Sorry, there is nothing that matches your search."
253243msgstr "Нажалост, претрага није наишла на икакво подударање."
254244
po/sv.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-26 22:36+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Swedish <sv@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr ""
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr ""
247237msgid "Search"
248238msgstr ""
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/te.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 09:57+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Telugu <te@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr ""
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr ""
247237msgid "Search"
248238msgstr ""
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/tr.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-10-01 13:21+0000\n"
1212"Last-Translator: Volkan Gezer <Unknown>\n"
1313"Language-Team: Turkish <tr@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "Vikipedi"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "İntro'yu geç"
9292
@@ -133,44 +133,30 @@ msgid ""
133133"phone<br><br>Tap anywhere to start"
134134msgstr ""
135135
136−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
137137msgid "Recent searches"
138138msgstr "Son Arananlar"
139139
140140#. TRANSLATORS: Number of persons who rated this app
141−#: Dash/Apps/AppInfo.qml:73
141+#. TRANSLATORS: Number of persons who rated this app/video/whatever
142+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142143#, qt-format
143144msgid "(%1)"
144145msgstr "(%1)"
145146
146147#. TRANSLATORS: Number of persons who wrote reviews for this app
147−#: Dash/Apps/AppInfo.qml:85
148+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
149+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
148150#, qt-format
149151msgid "%1 review"
150152msgid_plural "%1 reviews"
151153msgstr[0] "%1 inceleme"
152154msgstr[1] "%1 inceleme"
153155
154−#: Dash/Apps/AppPreview.qml:178
156+#: Dash/Apps/AppPreview.qml:126
155157msgid "Rate this"
156158msgstr "Oyla"
157159
158−#: Dash/Apps/AppReviews.qml:74
159−msgid "Add a review"
160−msgstr "Bir inceleme ekle"
161−
162−#: Dash/Apps/AppReviews.qml:86
163−msgid "Review"
164−msgstr "İnceleme"
165−
166−#: Dash/Apps/AppReviews.qml:121
167−msgid "Send"
168−msgstr "Gönder"
169−
170−#: Dash/Apps/AppReviews.qml:139
171−msgid "Comments:"
172−msgstr "Yorumlar:"
173−
174160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
175161msgid "Featured"
176162msgstr "Öne Çıkanlar"
@@ -199,17 +185,21 @@ msgstr "Genellikle Çevrimiçi"
199185msgid "Videos"
200186msgstr "Videolar"
201187
202−#: Dash/Video/VideoPreview.qml:130
203−msgid "Directed by:"
204−msgstr "Yönetmen"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr "Bir inceleme ekle"
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
194+msgstr "İnceleme"
205195
206−#: Dash/Video/VideoPreview.qml:153
207−msgid "Starring:"
208−msgstr "Başroller:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr "Gönder"
209199
210−#: Dash/Video/VideoPreview.qml:176
211−msgid "Author:"
212−msgstr "Yazar:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr "Yorumlar:"
213203
214204#: Greeter/Lockscreen.qml:142
215205msgid "Emergency Call"
@@ -248,7 +238,7 @@ msgstr "Konuşuyor..."
248238msgid "Search"
249239msgstr "Ara"
250240
251−#: plugins/Unity/scope.cpp:336
241+#: plugins/Unity/scope.cpp:361
252242msgid "Sorry, there is nothing that matches your search."
253243msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
254244
po/ug.po+33−44
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
11−"PO-Revision-Date: 2013-06-27 11:02+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-09 22:38+0000\n"
12+"Last-Translator: Gheyret T.Kenji <Unknown>\n"
1313"Language-Team: Uyghur <ug@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-10 05:50+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,13 +86,13 @@ msgstr "ۋىكىپېدىيە"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
9393#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "ئوڭ گىرۋەك"
9696
9797#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
@@ -100,7 +100,7 @@ msgstr ""
100100
101101#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "ئۈستى گىرۋەك"
104104
105105#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
@@ -108,7 +108,7 @@ msgstr ""
108108
109109#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "ياپ"
112112
113113#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
@@ -116,7 +116,7 @@ msgstr ""
116116
117117#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "سول گىرۋەك"
120120
121121#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
@@ -132,44 +132,29 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "يېقىنقى ئىزدەشلەر"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143−msgstr ""
144+msgstr "(%1)"
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150−msgstr[0] ""
151−msgstr[1] ""
152+msgstr[0] "%1 باھا"
152153
153−#: Dash/Apps/AppPreview.qml:178
154+#: Dash/Apps/AppPreview.qml:126
154155msgid "Rate this"
155156msgstr ""
156157
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173158#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174159msgid "Featured"
175160msgstr "داڭلىق"
@@ -198,17 +183,21 @@ msgstr ""
198183msgid "Videos"
199184msgstr "سىنلار"
200185
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
186+#: Dash/Previews/Reviews.qml:74
187+msgid "Add a review"
203188msgstr ""
204189
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
190+#: Dash/Previews/Reviews.qml:86
191+msgid "Review"
207192msgstr ""
208193
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr "ئاپتور:"
194+#: Dash/Previews/Reviews.qml:121
195+msgid "Send"
196+msgstr "ئەۋەت"
197+
198+#: Dash/Previews/Reviews.qml:139
199+msgid "Comments:"
200+msgstr "ئىنكاس:"
212201
213202#: Greeter/Lockscreen.qml:142
214203msgid "Emergency Call"
@@ -217,7 +206,7 @@ msgstr ""
217206#: Greeter/PassphraseLockscreen.qml:59
218207#, qt-format
219208msgid "Hello %1"
220−msgstr ""
209+msgstr "سالام %1"
221210
222211#: Greeter/PassphraseLockscreen.qml:59
223212msgid "Hello"
@@ -247,15 +236,15 @@ msgstr "سۆزلەۋاتىسىز…"
247236msgid "Search"
248237msgstr "ئىزدە"
249238
250−#: plugins/Unity/scope.cpp:336
239+#: plugins/Unity/scope.cpp:361
251240msgid "Sorry, there is nothing that matches your search."
252241msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپىلمىدى."
253242
254243#: plugins/Unity/showallfilteroption.cpp:41
255244msgid "All"
256−msgstr ""
245+msgstr "ھەممىسى"
257246
258247#: Shell.qml:453
259248#, qt-format
260249msgid "Please enter %1"
261−msgstr ""
250+msgstr "%1 نى كىرگۈزۈڭ"
po/uk.po+24−34
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-09-28 07:54+0000\n"
1212"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
20−"X-Generator: Launchpad (build 16774)\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
2121
2222#: Applications/applications.js:23
2323msgid "Phone"
@@ -87,7 +87,7 @@ msgstr "Вікіпедія"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:150
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr "Пропустити вступ"
9393
@@ -136,18 +136,20 @@ msgid ""
136136"phone<br><br>Tap anywhere to start"
137137msgstr ""
138138
139−#: Components/PageHeader.qml:298
139+#: Components/PageHeader.qml:341
140140msgid "Recent searches"
141141msgstr "Нещодавні пошуки"
142142
143143#. TRANSLATORS: Number of persons who rated this app
144−#: Dash/Apps/AppInfo.qml:73
144+#. TRANSLATORS: Number of persons who rated this app/video/whatever
145+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
145146#, qt-format
146147msgid "(%1)"
147148msgstr "(%1)"
148149
149150#. TRANSLATORS: Number of persons who wrote reviews for this app
150−#: Dash/Apps/AppInfo.qml:85
151+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
152+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
151153#, qt-format
152154msgid "%1 review"
153155msgid_plural "%1 reviews"
@@ -155,26 +157,10 @@ msgstr[0] "%1 рецензія"
155157msgstr[1] "%1 рецензії"
156158msgstr[2] "%1 рецензій"
157159
158−#: Dash/Apps/AppPreview.qml:178
160+#: Dash/Apps/AppPreview.qml:126
159161msgid "Rate this"
160162msgstr "Оцінити"
161163
162−#: Dash/Apps/AppReviews.qml:74
163−msgid "Add a review"
164−msgstr "Додати рецензію"
165−
166−#: Dash/Apps/AppReviews.qml:86
167−msgid "Review"
168−msgstr "Рецензія"
169−
170−#: Dash/Apps/AppReviews.qml:121
171−msgid "Send"
172−msgstr "Надіслати"
173−
174−#: Dash/Apps/AppReviews.qml:139
175−msgid "Comments:"
176−msgstr "Коментарі:"
177−
178164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
179165msgid "Featured"
180166msgstr "Рекомендовані"
@@ -203,17 +189,21 @@ msgstr "Популярне у мережі"
203189msgid "Videos"
204190msgstr "Відео"
205191
206−#: Dash/Video/VideoPreview.qml:130
207−msgid "Directed by:"
208−msgstr "Режисер:"
192+#: Dash/Previews/Reviews.qml:74
193+msgid "Add a review"
194+msgstr "Додати рецензію"
195+
196+#: Dash/Previews/Reviews.qml:86
197+msgid "Review"
198+msgstr "Рецензія"
209199
210−#: Dash/Video/VideoPreview.qml:153
211−msgid "Starring:"
212−msgstr "Актори:"
200+#: Dash/Previews/Reviews.qml:121
201+msgid "Send"
202+msgstr "Надіслати"
213203
214−#: Dash/Video/VideoPreview.qml:176
215−msgid "Author:"
216−msgstr "Автор:"
204+#: Dash/Previews/Reviews.qml:139
205+msgid "Comments:"
206+msgstr "Коментарі:"
217207
218208#: Greeter/Lockscreen.qml:142
219209msgid "Emergency Call"
@@ -252,7 +242,7 @@ msgstr "Мовлення…"
252242msgid "Search"
253243msgstr "Пошук"
254244
255−#: plugins/Unity/scope.cpp:336
245+#: plugins/Unity/scope.cpp:361
256246msgid "Sorry, there is nothing that matches your search."
257247msgstr "Вибачте, для вказаних вами ключових слів нічого не знайдено."
258248
po/unity8.pot+3−31
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"POT-Creation-Date: 2013-10-11 12:12+0200\n"
1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -156,34 +156,6 @@ msgstr[1] ""
156156msgid "Rate this"
157157msgstr ""
158158
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−
187159#: Dash/Previews/Reviews.qml:74
188160msgid "Add a review"
189161msgstr ""
@@ -237,7 +209,7 @@ msgstr ""
237209msgid "Search"
238210msgstr ""
239211
240−#: plugins/Unity/scope.cpp:361
212+#: plugins/Unity/scope.cpp:398
241213msgid "Sorry, there is nothing that matches your search."
242214msgstr ""
243215
@@ -245,7 +217,7 @@ msgstr ""
245217msgid "All"
246218msgstr ""
247219
248−#: Shell.qml:453
220+#: Shell.qml:438
249221#, qt-format
250222msgid "Please enter %1"
251223msgstr ""
po/xh.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-09-28 13:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Xhosa <xh@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr ""
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr ""
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr ""
247237msgid "Search"
248238msgstr ""
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr ""
253243
po/zh_CN.po+27−37
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
11−"PO-Revision-Date: 2013-06-27 10:33+0000\n"
12−"Last-Translator: Anthony Wong <anthony.wong@canonical.com>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-09 13:51+0000\n"
12+"Last-Translator: Aron Xu <Unknown>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-10 05:50+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr "维基百科"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,51 +132,37 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "近期搜索"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr "推荐"
176162
177163#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
178164msgid "Recent"
179−msgstr "最近"
165+msgstr "最近使用"
180166
181167#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
182168msgid "New Releases"
@@ -198,17 +184,21 @@ msgstr "经常在线"
198184msgid "Videos"
199185msgstr "视频"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
203−msgstr "导演:"
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 ""
204194
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
207−msgstr "主演:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
208198
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr "作者:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
214204msgid "Emergency Call"
@@ -247,7 +237,7 @@ msgstr "讲话中..."
247237msgid "Search"
248238msgstr "搜索"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "对不起,没有找到您想要的结果。"
253243
po/zh_TW.po+21−31
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-10-01 09:43+0200\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
1111"PO-Revision-Date: 2013-06-27 10:24+0000\n"
1212"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
1313"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2013-10-02 06:03+0000\n"
19−"X-Generator: Launchpad (build 16774)\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:02+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
2020
2121#: Applications/applications.js:23
2222msgid "Phone"
@@ -86,7 +86,7 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:150
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
@@ -132,44 +132,30 @@ msgid ""
132132"phone<br><br>Tap anywhere to start"
133133msgstr ""
134134
135−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
136136msgid "Recent searches"
137137msgstr "最近搜尋"
138138
139139#. TRANSLATORS: Number of persons who rated this app
140−#: Dash/Apps/AppInfo.qml:73
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
141142#, qt-format
142143msgid "(%1)"
143144msgstr ""
144145
145146#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: Dash/Apps/AppInfo.qml:85
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
147149#, qt-format
148150msgid "%1 review"
149151msgid_plural "%1 reviews"
150152msgstr[0] ""
151153msgstr[1] ""
152154
153−#: Dash/Apps/AppPreview.qml:178
155+#: Dash/Apps/AppPreview.qml:126
154156msgid "Rate this"
155157msgstr ""
156158
157−#: Dash/Apps/AppReviews.qml:74
158−msgid "Add a review"
159−msgstr ""
160−
161−#: Dash/Apps/AppReviews.qml:86
162−msgid "Review"
163−msgstr ""
164−
165−#: Dash/Apps/AppReviews.qml:121
166−msgid "Send"
167−msgstr ""
168−
169−#: Dash/Apps/AppReviews.qml:139
170−msgid "Comments:"
171−msgstr ""
172−
173159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174160msgid "Featured"
175161msgstr ""
@@ -198,16 +184,20 @@ msgstr ""
198184msgid "Videos"
199185msgstr "影片"
200186
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
203189msgstr ""
204190
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
207193msgstr ""
208194
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
211201msgstr ""
212202
213203#: Greeter/Lockscreen.qml:142
@@ -247,7 +237,7 @@ msgstr "說話中..."
247237msgid "Search"
248238msgstr "搜尋"
249239
250−#: plugins/Unity/scope.cpp:336
240+#: plugins/Unity/scope.cpp:361
251241msgid "Sorry, there is nothing that matches your search."
252242msgstr "很抱歉,找不到符合您想搜尋的結果。"
253243
tests/autopilot/unity8/shell/tests/__init__.py+17
@@ -87,6 +87,12 @@ class UnityTestCase(AutopilotTestCase):
8787 self._proxy = None
8888 self._lightdm_mock_type = None
8989 self._qml_mock_enabled = True
90+
91+ #### FIXME: This is a work around re: lp:1238417 ####
92+ from autopilot.input import _uinput
93+ _uinput._touch_device = _uinput.create_touch_device()
94+ ####
95+
9096 self.touch = Touch.create()
9197 self._setup_display_details()
9298
@@ -164,6 +170,17 @@ class UnityTestCase(AutopilotTestCase):
164170 if self._qml_mock_enabled:
165171 self._setup_extra_mock_environment_patch()
166172
173+ # FIXME: we shouldn't be doing this
174+ # $MIR_SOCKET, fallback to $XDG_RUNTIME_DIR/mir_socket and /tmp/mir_socket as last resort
175+ try:
176+ os.unlink(os.getenv('MIR_SOCKET', os.path.join(os.getenv('XDG_RUNTIME_DIR', "/tmp"), "mir_socket")))
177+ except OSError:
178+ pass
179+ try:
180+ os.unlink("/tmp/mir_socket")
181+ except OSError:
182+ pass
183+
167184 app_proxy = self.launch_test_application(
168185 binary_path,
169186 *self.unity_geometry_args,
tests/mocks/Unity/fake_scope.cpp+13
@@ -31,6 +31,7 @@ Scope::Scope(QObject* parent)
3131 : QObject(parent)
3232 , m_visible(false)
3333 , m_searching(false)
34+ , m_isActive(false)
3435 , m_categories(new Categories(this))
3536 , m_results(new DeeListModel(this))
3637{
@@ -46,6 +47,7 @@ Scope::Scope(QString const& id, QString const& name, bool visible, QObject* pare
4647 , m_name(name)
4748 , m_visible(visible)
4849 , m_searching(false)
50+ , m_isActive(false)
4951 , m_categories(new Categories(this))
5052 , m_results(new DeeListModel(this))
5153{
@@ -107,6 +109,10 @@ bool Scope::visible() const {
107109 return m_visible;
108110}
109111
112+bool Scope::isActive() const {
113+ return m_isActive;
114+}
115+
110116void Scope::setName(const QString &str) {
111117 if (str != m_name) {
112118 m_name = str;
@@ -128,6 +134,13 @@ void Scope::setFormFactor(const QString &str) {
128134 }
129135}
130136
137+void Scope::setActive(const bool active) {
138+ if (active != m_isActive) {
139+ m_isActive = active;
140+ Q_EMIT isActiveChanged();
141+ }
142+}
143+
131144void Scope::setSearchInProgress(const bool inProg) {
132145 if (inProg != m_searching) {
133146 m_searching = inProg;
tests/mocks/Unity/fake_scope.h+5
@@ -41,6 +41,7 @@ class Scope : public QObject
4141 Q_PROPERTY(QString searchQuery READ searchQuery WRITE setSearchQuery NOTIFY searchQueryChanged)
4242 Q_PROPERTY(QString noResultsHint READ noResultsHint WRITE setNoResultsHint NOTIFY noResultsHintChanged)
4343 Q_PROPERTY(QString formFactor READ formFactor WRITE setFormFactor NOTIFY formFactorChanged)
44+ Q_PROPERTY(bool isActive READ isActive WRITE setActive NOTIFY isActiveChanged)
4445
4546public:
4647 Scope(QObject* parent = 0);
@@ -60,12 +61,14 @@ public:
6061 QString searchQuery() const;
6162 QString noResultsHint() const;
6263 QString formFactor() const;
64+ bool isActive() const;
6365
6466 /* setters */
6567 void setName(const QString& name);
6668 void setSearchQuery(const QString& search_query);
6769 void setNoResultsHint(const QString& hint);
6870 void setFormFactor(const QString& form_factor);
71+ void setActive(const bool);
6972 void setSearchInProgress(const bool inProg);
7073
7174 Q_INVOKABLE void activate(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
@@ -89,6 +92,7 @@ Q_SIGNALS:
8992 void searchQueryChanged();
9093 void noResultsHintChanged();
9194 void formFactorChanged();
95+ void isActiveChanged();
9296
9397 // signals triggered by activate(..) or preview(..) requests.
9498 void previewReady(Preview *preview);
@@ -107,6 +111,7 @@ protected:
107111 QString m_formFactor;
108112 bool m_visible;
109113 bool m_searching;
114+ bool m_isActive;
110115
111116 Categories* m_categories;
112117 DeeListModel* m_results;
tests/plugins/Unity/CMakeLists.txt+1−1
@@ -1,7 +1,7 @@
11add_subdirectory(Indicators)
22add_subdirectory(Launcher)
33
4−pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0)
4+pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0>=7.1.1)
55pkg_check_modules(LIBUNITYPROTO REQUIRED unity-protocol-private)
66pkg_check_modules(LIBUNITY REQUIRED unity)
77pkg_check_modules(LIBSIGCPP REQUIRED sigc++-2.0)
tests/plugins/Unity/Launcher/launcherbackendtest.cpp−21
@@ -43,27 +43,6 @@ private Q_SLOTS:
4343 QCOMPARE(backend.storedApplications(), QStringList() << "rel-icon" << "abs-icon");
4444 }
4545
46− void testPinning()
47− {
48− LauncherBackend backend;
49−
50− backend.setStoredApplications(QStringList() << "rel-icon" << "abs-icon");
51− QCOMPARE(backend.isPinned("rel-icon"), false);
52− QCOMPARE(backend.isPinned("abs-icon"), false);
53−
54− backend.setPinned("rel-icon", true);
55− QCOMPARE(backend.isPinned("rel-icon"), true);
56−
57− backend.setStoredApplications(QStringList() << "rel-icon" << "abs-icon" << "no-name");
58− QCOMPARE(backend.isPinned("rel-icon"), true);
59− QCOMPARE(backend.isPinned("no-name"), false);
60−
61− backend.setPinned("no-name", true);
62− backend.setStoredApplications(QStringList() << "rel-icon" << "abs-icon");
63− QCOMPARE(backend.isPinned("rel-icon"), true);
64− QCOMPARE(backend.isPinned("no-name"), false); // doesn't exist anymore!
65− }
66−
6746 void testIcon_data() {
6847 QTest::addColumn<QString>("appId");
6948 QTest::addColumn<QString>("expectedIcon");
tests/plugins/Unity/resultstest.cpp+87
@@ -19,6 +19,7 @@
1919
2020#include <QTest>
2121#include <dee.h>
22+#include <glib.h>
2223
2324#include "resultstest.h"
2425#include "categoryresults.h"
@@ -106,4 +107,90 @@ void ResultsTest::testIconColumn()
106107 QCOMPARE(transformedIcon, result);
107108}
108109
110+class GVariantWrapper
111+{
112+public:
113+ GVariantWrapper() : variant(NULL) {}
114+ GVariantWrapper(GVariant* v) {
115+ variant = v ? g_variant_ref_sink(v) : NULL;
116+ }
117+ GVariantWrapper(const GVariantWrapper& other) {
118+ variant = other.variant ? g_variant_ref(other.variant) : NULL;
119+ }
120+ ~GVariantWrapper() {
121+ if (variant) g_variant_unref(variant);
122+ }
123+
124+ GVariant* variant;
125+};
126+
127+Q_DECLARE_METATYPE(GVariantWrapper)
128+
129+void ResultsTest::testSpecialIcons_data()
130+{
131+ QTest::addColumn<QString>("uri");
132+ QTest::addColumn<GVariantWrapper>("metadata");
133+ QTest::addColumn<QString>("result");
134+
135+ GVariant *inner;
136+ GVariantBuilder builder, inner_builder;
137+
138+ g_variant_builder_init(&inner_builder, G_VARIANT_TYPE_VARDICT);
139+ g_variant_builder_add(&inner_builder, "{sv}", "artist", g_variant_new_string("U2"));
140+ g_variant_builder_add(&inner_builder, "{sv}", "album", g_variant_new_string("War"));
141+
142+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
143+ g_variant_builder_add(&builder, "{sv}", "content", g_variant_builder_end(&inner_builder));
144+
145+ QTest::newRow("simple") << "file:///foo.mp3" << GVariantWrapper(g_variant_builder_end(&builder)) << "image://albumart/U2/War";
146+
147+ g_variant_builder_init(&inner_builder, G_VARIANT_TYPE_VARDICT);
148+ g_variant_builder_add(&inner_builder, "{sv}", "artist", g_variant_new_string("U2"));
149+ g_variant_builder_add(&inner_builder, "{sv}", "album", g_variant_new_string("War/Joshua tree"));
150+ inner = g_variant_builder_end(&inner_builder);
151+
152+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
153+ g_variant_builder_add(&builder, "{sv}", "content", inner);
154+
155+ QTest::newRow("with-slash") << "file:///foo.mp3" << GVariantWrapper(g_variant_builder_end(&builder)) << "image://albumart/U2/War%2FJoshua%20tree";
156+
157+ g_variant_builder_init(&inner_builder, G_VARIANT_TYPE_VARDICT);
158+ g_variant_builder_add(&inner_builder, "{sv}", "artist", g_variant_new_string("U2"));
159+ g_variant_builder_add(&inner_builder, "{sv}", "album", g_variant_new_string("War"));
160+ inner = g_variant_builder_end(&inner_builder);
161+
162+ g_variant_builder_init(&inner_builder, G_VARIANT_TYPE_VARDICT);
163+ g_variant_builder_add(&inner_builder, "{sv}", "content", inner);
164+
165+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
166+ g_variant_builder_add(&builder, "{sv}", "content", g_variant_builder_end(&inner_builder));
167+
168+ QTest::newRow("nested") << "file:///foo.mp3" << GVariantWrapper(g_variant_builder_end(&builder)) << "image://albumart/U2/War";
169+}
170+
171+void ResultsTest::testSpecialIcons()
172+{
173+ QFETCH(QString, uri);
174+ QFETCH(GVariantWrapper, metadata);
175+ QFETCH(QString, result);
176+ auto deeModel = createBackendModel();
177+ dee_model_append (deeModel,
178+ uri.toLocal8Bit().constData(),
179+ "",
180+ 0,
181+ 0,
182+ "audio/mp3",
183+ "Test",
184+ "",
185+ uri.toLocal8Bit().constData(),
186+ metadata.variant);
187+
188+ CategoryResults* results = new CategoryResults(this);
189+ results->setModel(deeModel);
190+
191+ auto index = results->index(0, 0); // there's just one result
192+ auto transformedIcon = index.data(CategoryResults::Roles::RoleIconHint).toString();
193+ QCOMPARE(transformedIcon, result);
194+}
195+
109196QTEST_MAIN(ResultsTest)
tests/plugins/Unity/resultstest.h+2
@@ -30,6 +30,8 @@ class ResultsTest : public QObject
3030 void testAllColumns();
3131 void testIconColumn_data();
3232 void testIconColumn();
33+ void testSpecialIcons_data();
34+ void testSpecialIcons();
3335};
3436
3537#endif
tests/qmltests/CMakeLists.txt+1−1
@@ -43,7 +43,7 @@ add_qml_test(Components Tile)
4343add_qml_test(Components PageHeader)
4444add_qml_test(Dash Dash IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
4545add_qml_test(Dash DashBar IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${CMAKE_CURRENT_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
46−add_qml_test(Dash DashContent IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS})
46+add_qml_test(Dash DashContent IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
4747add_qml_test(Dash DashPreview)
4848add_qml_test(Dash GenericPreview)
4949add_qml_test(Dash GenericScopeView IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
tests/qmltests/Components/tst_LazyImage.qml+40−15
@@ -73,6 +73,20 @@ Rectangle {
7373 height: units.gu(10)
7474 scaleTo: "height"
7575 }
76+
77+ Label {
78+ height: units.gu(4)
79+ text: "Fit"
80+ color: "white"
81+ verticalAlignment: Text.AlignBottom
82+ }
83+
84+ LazyImage {
85+ id: lazy4
86+ height: units.gu(10)
87+ width: units.gu(10)
88+ scaleTo: "fit"
89+ }
7690 }
7791 }
7892
@@ -94,6 +108,7 @@ Rectangle {
94108 ImageControls { id: controls1; image: lazy1 }
95109 ImageControls { id: controls2; image: lazy2 }
96110 ImageControls { id: controls3; image: lazy3 }
111+ ImageControls { id: controls4; image: lazy4 }
97112 }
98113 }
99114
@@ -112,21 +127,26 @@ Rectangle {
112127
113128 function test_lazyimage_data() {
114129 return [
115− {tag: "Unbound Blank", image: lazy1, func: controls1.blank, width: units.gu(10), height: units.gu(10), placeholder: true},
116− {tag: "Unbound Wide", image: lazy1, func: controls1.wide, transition: "readyTransition", width: 160, height: 80},
117− {tag: "Unbound Square", image: lazy1, func: controls1.square, transition: "readyTransition", width: 160, height: 160},
118− {tag: "Unbound Portrait", image: lazy1, func: controls1.portrait, transition: "readyTransition", width: 80, height: 160},
119− {tag: "Unbound Bad path", image: lazy1, func: controls1.badpath, transition: "genericTransition", width: units.gu(10), height: units.gu(10), placeholder: true, error: true},
120− {tag: "Width-bound Blank", image: lazy2, func: controls2.blank, width: units.gu(30), height: units.gu(10), placeholder: true},
121− {tag: "Width-bound Wide", image: lazy2, func: controls2.wide, transition: "readyTransition", width: units.gu(30), height: units.gu(15)},
122− {tag: "Width-bound Square", image: lazy2, func: controls2.square, transition: "readyTransition", width: units.gu(30), height: units.gu(30)},
123− {tag: "Width-bound Portrait", image: lazy2, func: controls2.portrait, transition: "readyTransition", width: units.gu(30), height: units.gu(60)},
124− {tag: "Width-bound Bad path", image: lazy2, func: controls2.badpath, transition: "genericTransition", width: units.gu(30), height: units.gu(10), placeholder: true, error: true},
125− {tag: "Height-bound Blank", image: lazy3, func: controls3.blank, width: units.gu(10), height: units.gu(10), placeholder: true},
126− {tag: "Height-bound Wide", image: lazy3, func: controls3.wide, transition: "readyTransition", width: units.gu(20), height: units.gu(10)},
127− {tag: "Height-bound Square", image: lazy3, func: controls3.square, transition: "readyTransition", width: units.gu(10), height: units.gu(10)},
128− {tag: "Height-bound Portrait", image: lazy3, func: controls3.portrait, transition: "readyTransition", width: units.gu(5), height: units.gu(10)},
129− {tag: "Height-bound Bad path", image: lazy3, func: controls3.badpath, transition: "genericTransition", width: units.gu(10), height: units.gu(10), placeholder: true, error: true},
130+ {tag: "Unbound Blank", image: lazy1, func: controls1.blank, width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10), placeholder: true},
131+ {tag: "Unbound Wide", image: lazy1, func: controls1.wide, transition: "readyTransition", width: 160, height: 80, imageWidth: 160, imageHeight: 80},
132+ {tag: "Unbound Square", image: lazy1, func: controls1.square, transition: "readyTransition", width: 160, height: 160, imageWidth: 160, imageHeight: 160},
133+ {tag: "Unbound Portrait", image: lazy1, func: controls1.portrait, transition: "readyTransition", width: 80, height: 160, imageWidth: 80, imageHeight: 160},
134+ {tag: "Unbound Bad path", image: lazy1, func: controls1.badpath, transition: "genericTransition", width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10), placeholder: true, error: true},
135+ {tag: "Width-bound Blank", image: lazy2, func: controls2.blank, width: units.gu(30), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10), placeholder: true},
136+ {tag: "Width-bound Wide", image: lazy2, func: controls2.wide, transition: "readyTransition", width: units.gu(30), height: units.gu(15), imageWidth: units.gu(30), imageHeight: units.gu(15)},
137+ {tag: "Width-bound Square", image: lazy2, func: controls2.square, transition: "readyTransition", width: units.gu(30), height: units.gu(30), imageWidth: units.gu(30), imageHeight: units.gu(30)},
138+ {tag: "Width-bound Portrait", image: lazy2, func: controls2.portrait, transition: "readyTransition", width: units.gu(30), height: units.gu(60), imageWidth: units.gu(30), imageHeight: units.gu(60)},
139+ {tag: "Width-bound Bad path", image: lazy2, func: controls2.badpath, transition: "genericTransition", width: units.gu(30), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10), placeholder: true, error: true},
140+ {tag: "Height-bound Blank", image: lazy3, func: controls3.blank, width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10), placeholder: true},
141+ {tag: "Height-bound Wide", image: lazy3, func: controls3.wide, transition: "readyTransition", width: units.gu(20), height: units.gu(10), imageWidth: units.gu(20), imageHeight: units.gu(10)},
142+ {tag: "Height-bound Square", image: lazy3, func: controls3.square, transition: "readyTransition", width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10)},
143+ {tag: "Height-bound Portrait", image: lazy3, func: controls3.portrait, transition: "readyTransition", width: units.gu(5), height: units.gu(10), imageWidth: units.gu(5), imageHeight: units.gu(10)},
144+ {tag: "Height-bound Bad path", image: lazy3, func: controls3.badpath, transition: "genericTransition", width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10), placeholder: true, error: true},
145+ {tag: "Fit Blank", image: lazy4, func: controls4.blank, width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10), placeholder: true},
146+ {tag: "Fit Wide", image: lazy4, func: controls4.wide, transition: "readyTransition", width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(5)},
147+ {tag: "Fit Square", image: lazy4, func: controls4.square, transition: "readyTransition", width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10)},
148+ {tag: "Fit Portrait", image: lazy4, func: controls4.portrait, transition: "readyTransition", width: units.gu(10), height: units.gu(10), imageWidth: units.gu(5), imageHeight: units.gu(10)},
149+ {tag: "Fit Bad path", image: lazy4, func: controls4.badpath, transition: "genericTransition", width: units.gu(10), height: units.gu(10), imageWidth: units.gu(10), imageHeight: units.gu(10), placeholder: true, error: true},
130150 ]
131151 }
132152
@@ -144,6 +164,11 @@ Rectangle {
144164 compare(data.image.width, data.width);
145165 compare(data.image.height, data.height);
146166
167+ // check the shape dimensions
168+ var shape = findChild(data.image, "shape");
169+ compare(shape.width, data.imageWidth);
170+ compare(shape.height, data.imageHeight);
171+
147172 // check the placeholder
148173 var placeholder = findChild(data.image, "placeholder");
149174 compare(placeholder.visible, data.placeholder ? true : false);
tests/qmltests/Dash/qml/FakeScopeView.qml+3−9
@@ -17,16 +17,10 @@
1717import QtQuick 2.0
1818import Unity 0.1
1919
20−FocusScope {
21− id: fakeScopeView
22− property Scope scope : null
23− property bool isCurrent : false
24−
25− property ListModel searchHistory
20+import "../../../../Dash"
2621
27− signal endReached
28− signal movementStarted
29− signal positionedAtBeginning
22+ScopeView {
23+ id: fakeScopeView
3024
3125 property alias backColor : back.color
3226
tests/qmltests/Dash/tst_DashContent.qml+29−5
@@ -101,17 +101,21 @@ Item {
101101 when: windowShown
102102
103103 function init() {
104+ scopesModel.load();
105+ }
106+
107+ function cleanup() {
104108 scopeLoadedSpy.clear();
105109 movementStartedSpy.clear();
106− contentEndReachedSpy.clear()
110+ contentEndReachedSpy.clear();
107111 clear_scope_status();
112+ dashContent.visible = true;
108113
109− // clear, wait for dash to empty and load scopes.
110− var dashContentList = findChild(dashContent, "dashContentList");
111− verify(dashContentList != undefined)
112114 scopesModel.clear();
115+ // wait for dash to empty scopes.
116+ var dashContentList = findChild(dashContent, "dashContentList");
117+ verify(dashContentList != undefined);
113118 tryCompare(dashContentList, "count", 0);
114− scopesModel.load();
115119 }
116120
117121 function test_movement_started_signal() {
@@ -205,5 +209,25 @@ Item {
205209 tryCompareFunction(get_current_item_object_name, data.objectName)
206210 }
207211
212+ function test_is_active_data() {
213+ return [
214+ {tag: "select 0", select: 0, visible: true, active0: true, active1: false, active2: false, active3: false},
215+ {tag: "select 2", select: 2, visible: true, active0: false, active1: false, active2: true, active3: false},
216+ {tag: "invisible", select: 0, visible: false, active0: false, active1: false, active2: false, active3: false},
217+ ]
218+ }
219+
220+ function test_is_active(data) {
221+ var dashContentList = findChild(dashContent, "dashContentList");
222+
223+ tryCompare(scopeLoadedSpy, "count", 5);
224+
225+ dashContent.setCurrentScopeAtIndex(data.select, true, false);
226+ dashContent.visible = data.visible;
227+
228+ tryCompare(scopesModel.get(0), "isActive", data.active0);
229+ tryCompare(scopesModel.get(1), "isActive", data.active1);
230+ tryCompare(scopesModel.get(2), "isActive", data.active2);
231+ }
208232 }
209233}
tests/qmltests/Dash/tst_FilterGrids.qml+1−1
@@ -107,7 +107,7 @@ Rectangle {
107107
108108 function test_clicked_signal_data() {
109109 return [
110− {tag: "VideosFilterGrid", component: "Video/VideosFilterGrid.qml"},
110+ {tag: "VideoFilterGrid", component: "Video/VideoFilterGrid.qml"},
111111 {tag: "MusicFilterGrid", component: "Music/MusicFilterGrid.qml"},
112112 {tag: "ApplicationsFilterGrid", component: "Apps/ApplicationsFilterGrid.qml"}
113113 ]
tests/qmltests/Notifications/tst_Notifications.qml+7−2
@@ -48,7 +48,7 @@ Row {
4848 function addSnapDecisionNotification() {
4949 var n = {
5050 type: Notification.SnapDecision,
51− hints: Notification.ButtonTint,
51+ hints: {"x-canonical-private-button-tint": "true"},
5252 summary: "Tom Ato",
5353 body: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
5454 icon: "../graphics/avatars/funky.png",
@@ -192,7 +192,7 @@ Row {
192192 {
193193 tag: "Snap Decision with secondary icon and button-tint",
194194 type: Notification.SnapDecision,
195− hints: Notification.ButtonTint,
195+ hints: {"x-canonical-private-button-tint": "true"},
196196 summary: "Tom Ato",
197197 body: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
198198 icon: "../graphics/avatars/funky.png",
@@ -213,6 +213,7 @@ Row {
213213 {
214214 tag: "Ephemeral notification - icon-summary layout",
215215 type: Notification.Ephemeral,
216+ hints: {"x-canonical-private-button-tint": "false"},
216217 summary: "Photo upload completed",
217218 body: "",
218219 icon: "",
@@ -229,6 +230,7 @@ Row {
229230 {
230231 tag: "Ephemeral notification - check suppression of secondary icon for icon-summary layout",
231232 type: Notification.Ephemeral,
233+ hints: {"x-canonical-private-button-tint": "false"},
232234 summary: "New comment successfully published",
233235 body: "",
234236 icon: "",
@@ -245,6 +247,7 @@ Row {
245247 {
246248 tag: "Interactive notification",
247249 type: Notification.Interactive,
250+ hints: {"x-canonical-private-button-tint": "false"},
248251 summary: "Interactive notification",
249252 body: "This is a notification that can be clicked",
250253 icon: "../graphics/avatars/amanda.png",
@@ -261,6 +264,7 @@ Row {
261264 {
262265 tag: "Snap Decision without secondary icon and no button-tint",
263266 type: Notification.SnapDecision,
267+ hints: {"x-canonical-private-button-tint": "false"},
264268 summary: "Bro Coly",
265269 body: "At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
266270 icon: "../graphics/avatars/anna_olsson.png",
@@ -278,6 +282,7 @@ Row {
278282 {
279283 tag: "Ephemeral notification",
280284 type: Notification.Ephemeral,
285+ hints: {"x-canonical-private-button-tint": "false"},
281286 summary: "Cole Raby",
282287 body: "I did not expect it to be that late.",
283288 icon: "../graphics/avatars/funky.png",
tests/qmltests/tst_Shell.qml+57−2
@@ -82,6 +82,8 @@ Item {
8282
8383 var dashHome = findChild(shell, "DashHome");
8484 swipeUntilScopeViewIsReached(dashHome);
85+
86+ hideIndicators();
8587 }
8688
8789 function killApps(apps) {
@@ -155,7 +157,7 @@ Item {
155157 waitUntilApplicationWindowIsFullyVisible();
156158
157159 var mainApp = ApplicationManager.focusedApplicationId;
158− tryCompareFunction(function() { return mainApp != ""; }, true);
160+ verify(mainApp != "");
159161
160162 // Try to suspend while proximity is engaged...
161163 Powerd.displayPowerStateChange(Powerd.Off, Powerd.UseProximity);
@@ -168,8 +170,12 @@ Item {
168170
169171 // And wake up
170172 Powerd.displayPowerStateChange(Powerd.On, 0);
171− tryCompare(ApplicationManager, "focusedApplicationId", mainApp);
173+ tryCompare(ApplicationManager, "focusedApplicationId", "");
172174 tryCompare(greeter, "showProgress", 1);
175+
176+ // Swipe away greeter to focus app
177+ swipeAwayGreeter();
178+ tryCompare(ApplicationManager, "focusedApplicationId", mainApp);
173179 }
174180
175181 function swipeAwayGreeter() {
@@ -336,6 +342,19 @@ Item {
336342 mouseClick(appIcon, appIcon.width / 2, appIcon.height / 2);
337343 }
338344
345+ function showIndicators() {
346+ var indicators = findChild(shell, "indicators");
347+ indicators.show();
348+ tryCompare(indicators, "fullyOpened", true);
349+ }
350+
351+ function hideIndicators() {
352+ var indicators = findChild(shell, "indicators");
353+ if (indicators.fullyOpened) {
354+ indicators.hide();
355+ }
356+ }
357+
339358 function waitUntilApplicationWindowIsFullyVisible() {
340359 var underlay = findChild(shell, "underlay");
341360 tryCompare(underlay, "visible", false);
@@ -428,5 +447,41 @@ Item {
428447 tryCompareFunction(function() { return backgroundImage.source.toString().indexOf(data.expectedUrl) !== -1; }, true)
429448 tryCompare(backgroundImage, "status", Image.Ready)
430449 }
450+
451+ function test_DashShown_data() {
452+ return [
453+ {tag: "in focus", greeter: false, app: false, launcher: false, indicators: false, expectedShown: true},
454+ {tag: "under greeter", greeter: true, app: false, launcher: false, indicators: false, expectedShown: false},
455+ {tag: "under app", greeter: false, app: true, launcher: false, indicators: false, expectedShown: false},
456+ {tag: "under launcher", greeter: false, app: false, launcher: true, indicators: false, expectedShown: true},
457+ {tag: "under indicators", greeter: false, app: false, launcher: false, indicators: true, expectedShown: true},
458+ ]
459+ }
460+
461+ function test_DashShown(data) {
462+
463+ if (data.greeter) {
464+ // Swipe the greeter in
465+ var greeter = findChild(shell, "greeter");
466+ Powerd.displayPowerStateChange(Powerd.Off, 0);
467+ tryCompare(greeter, "showProgress", 1);
468+ }
469+
470+ if (data.app) {
471+ dragLauncherIntoView();
472+ tapOnAppIconInLauncher();
473+ }
474+
475+ if (data.launcher) {
476+ dragLauncherIntoView();
477+ }
478+
479+ if (data.indicators) {
480+ showIndicators();
481+ }
482+
483+ var dash = findChild(shell, "dash");
484+ tryCompare(dash, "shown", data.expectedShown);
485+ }
431486 }
432487}