on xenial help sign in
merged with trunk
commit7c68bd9c705772b1b3d04714bbdfd0f0793d8c3d authorNick Dedekind <nicholas.dedekind@gmail.com> dateFri 11 Oct 2013, 09:21 (13 years ago) parent70a7d39cd10182
257 files changed+7675−8545
Bottombar/Bottombar.qml+82−17 CMakeLists.txt−1 Components/ApplicationManagerWrapper.qml−29 Components/EdgeDemoOverlay.qml+9−2 Components/LazyImage.qml+22−9 Components/PageHeader.qml+44−1 Greeter/PinPadButton.qml → Components/PinPadButton.qml Components/Showable.qml+11 Components/Stage.qml+4−1 Components/Tile.qml+6−63 Components/TileStyle.qml+81 Components/VolumeControl.qml+1−1 Dash/Apps/AppPreview.qml+70−123 Dash/Apps/AppsAvailableForDownloadModel.qml−81 Dash/Apps/DashPluginFilterGrid.qml+49 Dash/Apps/FrequentlyUsedAppsModel.qml+4−4 Dash/Apps/RunningApplicationsGrid.qml+20−1 Dash/Dash.qml+3 Dash/DashApps.qml+2 Dash/DashContent.qml+2−1 Dash/DashPreview.qml+91−93 Dash/Generic/FlatTileStyle.qml+79 Dash/Generic/GenericFilterGrid.qml−3 Dash/Generic/GenericPreview.qml+158−70 Dash/Generic/WeatherFilterGrid.qml+49 Dash/GenericScopeView.qml+32−4 Dash/Movie/MoviePreview.qml+71 Dash/Music/MusicFilterGrid.qml+21−22 Dash/Music/MusicTileStyle.qml+101 Dash/PreviewDelegateMapper.qml+1 Dash/Previews/Header.qml+109 Dash/Apps/AppReviews.qml → Dash/Previews/Reviews.qml Dash/ScopeView.qml+11−3 Dash/Video/VideosFilterGrid.qml → Dash/Video/VideoFilterGrid.qml+17−13 Dash/Video/VideoPreview.qml−210 Dash/Video/VideoTileStyle.qml+86 Dash/Video/graphics/movie_icon_holder@27.png Greeter/Gradient.js+7−3 Greeter/GreeterContent.qml+11−7 Greeter/Infographics.qml+10−1 Greeter/PinLockscreen.qml+5 Notifications/Notification.qml+49−5 Notifications/NotificationMenuItemFactory.qml+96 Panel/IndicatorRow.qml+51−12 Panel/Indicators.qml+6−1 Panel/Indicators/DatetimeIndicatorPage.qml−97 Panel/Indicators/DatetimeIndicatorWidget.qml−67 Panel/Indicators/DefaultIndicatorPage.qml+1−1 Panel/Indicators/DefaultIndicatorPage2.qml−25 Panel/Indicators/DefaultIndicatorWidget.qml+47−21 Panel/Indicators/DefaultIndicatorWidget2.qml−103 Panel/Indicators/MessagingIndicatorPage.qml−35 Panel/Indicators/MessagingIndicatorWidget.qml−25 Panel/Indicators/NetworkIndicatorPage.qml−83 Panel/Indicators/NetworkIndicatorPage2.qml−82 Panel/Indicators/NetworkIndicatorWidget.qml−112 Panel/Indicators/SoundIndicatorWidget.qml−26 Panel/Indicators/client/IndicatorsList.qml+14−9 Panel/Indicators/client/IndicatorsTree.qml+4 Panel/IndicatorsDataModel.qml−79 Panel/MenuContent.qml+9−2 Panel/Panel.qml+3−2 Panel/SearchIndicator.qml+9−8 Shell.qml+64−47 debian/changelog+212 debian/control+5−8 main.cpp+4−4 plugins/AccountsService/AccountsService.cpp+19 plugins/AccountsService/AccountsService.h+7 plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+3 plugins/Unity/CMakeLists.txt+1−2 plugins/Unity/Indicators/Messaging/qml/QuickReply.qml+1−1 plugins/Unity/Indicators/Network/CMakeLists.txt−44 plugins/Unity/Indicators/Network/networkagent.cpp−146 plugins/Unity/Indicators/Network/networkagent.h−65 plugins/Unity/Indicators/Network/plugin.h−32 plugins/Unity/Indicators/Network/qml/PasswordPage.qml−88 plugins/Unity/Indicators/Network/qml/PasswordTextField.qml−68 plugins/Unity/Indicators/Network/qml/qmldir−5 plugins/Unity/Indicators/Network/secret-agent.c−382 plugins/Unity/Indicators/Network/secret-agent.h−102 plugins/Unity/Indicators/indicators.h−2 plugins/Unity/Indicators/indicatorsmanager.cpp+20−24 plugins/Unity/Indicators/indicatorsmanager.h−1 plugins/Unity/Indicators/indicatorsmodel.cpp+2−55 plugins/Unity/Indicators/indicatorsmodel.h−8 plugins/Unity/Indicators/qml/IndicatorBase.qml+8−5 plugins/Unity/Indicators/qml/IndicatorPage.qml+7−5 plugins/Unity/Indicators/qml/IndicatorWidget.qml−6 plugins/Unity/Indicators/qml/MenuItemFactory.qml+1 plugins/Unity/Indicators/qml/SliderMenuItem.qml+1−1 plugins/Unity/Indicators/rootactionstate.cpp+7−1 plugins/Unity/Indicators/rootactionstate.h+3 plugins/Unity/Indicators/visibleindicatorsmodel.cpp−2 plugins/Unity/IndicatorsLegacy/CMakeLists.txt−48 plugins/Unity/IndicatorsLegacy/Network/CMakeLists.txt−45 plugins/Unity/IndicatorsLegacy/Network/networkagent.cpp−146 plugins/Unity/IndicatorsLegacy/Network/networkagent.h−65 plugins/Unity/IndicatorsLegacy/Network/plugin.cpp−31 plugins/Unity/IndicatorsLegacy/Network/plugin.h−32 plugins/Unity/IndicatorsLegacy/Network/qml/AccessPoint.qml−68 plugins/Unity/IndicatorsLegacy/Network/qml/CMakeLists.txt−5 plugins/Unity/IndicatorsLegacy/Network/qml/PasswordPage.qml−88 plugins/Unity/IndicatorsLegacy/Network/qml/PasswordTextField.qml−68 plugins/Unity/IndicatorsLegacy/Network/qml/WifiSection.qml−34 plugins/Unity/IndicatorsLegacy/Network/qml/qmldir−9 plugins/Unity/IndicatorsLegacy/Network/secret-agent.c−382 plugins/Unity/IndicatorsLegacy/Network/secret-agent.h−102 plugins/Unity/IndicatorsLegacy/flatmenuproxymodel.cpp−288 plugins/Unity/IndicatorsLegacy/flatmenuproxymodel.h−93 plugins/Unity/IndicatorsLegacy/modelprinter.cpp−114 plugins/Unity/IndicatorsLegacy/modelprinter.h−50 plugins/Unity/IndicatorsLegacy/plugin.cpp−42 plugins/Unity/IndicatorsLegacy/plugin.h−32 plugins/Unity/IndicatorsLegacy/qml/BasicMenuItem.qml−48 plugins/Unity/IndicatorsLegacy/qml/ButtonMenuItem.qml−47 plugins/Unity/IndicatorsLegacy/qml/CMakeLists.txt−5 plugins/Unity/IndicatorsLegacy/qml/DivMenuItem.qml−26 plugins/Unity/IndicatorsLegacy/qml/HLine.qml−29 plugins/Unity/IndicatorsLegacy/qml/IndicatorBase.qml−59 plugins/Unity/IndicatorsLegacy/qml/IndicatorPage.qml−191 plugins/Unity/IndicatorsLegacy/qml/IndicatorWidget.qml−68 plugins/Unity/IndicatorsLegacy/qml/MenuAction.qml−86 plugins/Unity/IndicatorsLegacy/qml/MenuActionBinding.qml−106 plugins/Unity/IndicatorsLegacy/qml/MenuItem.qml−40 plugins/Unity/IndicatorsLegacy/qml/MenuItemFactory.qml−102 plugins/Unity/IndicatorsLegacy/qml/ProgressMenuItem.qml−65 plugins/Unity/IndicatorsLegacy/qml/RemoveBackground.qml−55 plugins/Unity/IndicatorsLegacy/qml/SectionMenuItem.qml−57 plugins/Unity/IndicatorsLegacy/qml/SliderMenuItem.qml−64 plugins/Unity/IndicatorsLegacy/qml/SwitchMenuItem.qml−43 plugins/Unity/IndicatorsLegacy/qml/qmldir−21 plugins/Unity/IndicatorsLegacy/resources/indicators.qrc−4 plugins/Unity/Launcher/backend/launcherbackend.cpp+4−37 plugins/Unity/Launcher/backend/launcherbackend.h+1−16 plugins/Unity/Launcher/launchermodel.cpp+4−8 plugins/Unity/Launcher/quicklistmodel.cpp+1−1 plugins/Unity/bottombarvisibilitycommunicatorshell.cpp+15−1 plugins/Unity/bottombarvisibilitycommunicatorshell.h+6 plugins/Unity/categories.cpp+75−16 plugins/Unity/categories.h+11−1 plugins/Unity/categoryresults.cpp+22 plugins/Unity/categoryresults.h+2−1 plugins/Unity/iconutils.cpp+33 plugins/Unity/iconutils.h+2 plugins/Unity/preview.cpp+10−14 plugins/Unity/preview.h−2 plugins/Unity/scope.cpp+67−5 plugins/Unity/scope.h+14−2 plugins/Utils/CMakeLists.txt+13−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+22−1 plugins/Utils/plugin.h+1 plugins/Utils/unitymenumodelpaths.cpp+182 plugins/Utils/unitymenumodelpaths.h+82 po/ar.po+43−47 po/ast.po+255 po/az.po+40−44 po/bg.po+41−45 po/ca.po+60−58 po/cs.po+252 po/de.po+57−61 po/el.po+40−44 po/en_AU.po+63−67 po/en_GB.po+43−47 po/eo.po+40−44 po/es.po+48−50 po/fi.po+47−49 po/fo.po+52−56 po/fr.po+40−44 po/gd.po+260 po/gl.po+86−88 po/he.po+86−90 po/hr.po+40−44 po/hu.po+40−44 po/hy.po+40−44 po/id.po+40−44 po/is.po+43−47 po/it.po+89−86 po/ja.po+40−44 po/kn.po+40−44 po/ko.po+63−67 po/ky.po+40−44 po/lo.po+251 po/lv.po+59−63 po/my.po+71−75 po/nb.po+40−44 po/nl.po+40−44 po/pl.po+43−47 po/pt_BR.po+86−88 po/ro.po+40−44 po/ru.po+68−68 po/shn.po+251 po/si.po+40−44 po/sl.po+46−49 po/sr.po+40−44 po/sv.po+40−44 po/te.po+40−44 po/tr.po+67−70 po/ug.po+51−56 po/uk.po+62−62 po/unity8.pot+38−42 po/xh.po+251 po/zh_CN.po+46−50 po/zh_TW.po+40−44 run_on_device+1−1 tests/autopilot/unity8/indicators_client/__init__.py−8 tests/autopilot/unity8/indicators_client/emulators/__init__.py−31 tests/autopilot/unity8/indicators_client/emulators/common.py−14 tests/autopilot/unity8/indicators_client/emulators/main_window.py−27 tests/autopilot/unity8/indicators_client/tests/__init__.py−91 tests/autopilot/unity8/indicators_client/tests/test_battery.py−114 tests/autopilot/unity8/shell/__init__.py+14 tests/autopilot/unity8/shell/emulators/dash.py+15−6 tests/autopilot/unity8/shell/emulators/hud.py+8−9 tests/autopilot/unity8/shell/emulators/main_window.py+3 tests/autopilot/unity8/shell/tests/__init__.py+26−7 tests/autopilot/unity8/shell/tests/test_hud.py+43−9 tests/mocks/AccountsService/AccountsService.cpp+13−1 tests/mocks/AccountsService/AccountsService.h+8 plugins/Unity/Indicators/Network/plugin.cpp → tests/mocks/QMenuModel/UnityMenuModel.qml+9−14 tests/mocks/QMenuModel/qmldir+1 tests/mocks/Unity/Indicators/IndicatorsModel.qml+5−15 tests/mocks/Unity/fake_applications_scope.cpp+7 tests/mocks/Unity/fake_categories.cpp+6 tests/mocks/Unity/fake_categories.h+1 tests/mocks/Unity/fake_preview.cpp−5 tests/mocks/Unity/fake_preview.h−2 tests/mocks/Unity/fake_scope.cpp+26 tests/mocks/Unity/fake_scope.h+10−1 tests/mocks/libusermetrics/UserMetrics.cpp+6−2 tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+8 tests/plugins/Unity/CMakeLists.txt+1−1 tests/plugins/Unity/Indicators/indicatorsmodeltest.cpp−15 tests/plugins/Unity/Launcher/launcherbackendtest.cpp+2−23 tests/plugins/Unity/resultstest.cpp+100−9 tests/plugins/Unity/resultstest.h+2 tests/qmltests/CMakeLists.txt+4−3 tests/qmltests/Components/tst_LazyImage.qml+40−15 tests/qmltests/Components/tst_PageHeader.qml+28 tests/qmltests/Components/tst_Showable.qml+27 tests/qmltests/Dash/Apps/tst_AppPreview.qml+60−24 tests/qmltests/Dash/Movie/tst_MoviePreview.qml+85 tests/qmltests/Dash/Video/tst_VideoPreview.qml−63 tests/qmltests/Dash/qml/FakeScopeView.qml+3−9 tests/qmltests/Dash/tst_DashContent.qml+29−5 tests/qmltests/Dash/tst_DashPreview.qml+66−19 tests/qmltests/Dash/tst_FilterGrids.qml+1−1 tests/qmltests/Dash/tst_GenericPreview.qml+116 tests/qmltests/Greeter/tst_Infographics.qml+4−4 tests/qmltests/Greeter/tst_Phone.qml+15 tests/qmltests/Notifications/tst_Notifications.qml+7−2 tests/qmltests/Panel/tst_IndicatorRow.qml+3−3 tests/qmltests/tst_Shell.qml+125−2
Bottombar/Bottombar.qml+82−17
@@ -34,15 +34,32 @@ Item {
3434
3535 state: "hidden"
3636
37+ function hide() {
38+ dismissTimer.stop()
39+ bottombar.state = "hidden"
40+ }
41+
42+ onApplicationIsOnForegroundChanged: {
43+ if (!applicationIsOnForeground) {
44+ hide()
45+ }
46+ }
47+
3748 onStateChanged: {
3849 if (state == "hidden") {
3950 dismissTimer.stop()
51+ bottomBarVisibilityCommunicatorShell.forceHidden = false
4052 } else {
4153 dismissTimer.restart()
4254 }
4355 }
4456
4557 onPreventHidingChanged: {
58+ if (!preventHiding) {
59+ if (state == "hint" || state == "reveal")
60+ hide()
61+ }
62+
4663 if (dismissTimer.running) {
4764 dismissTimer.restart();
4865 }
@@ -50,7 +67,7 @@ Item {
5067
5168 Timer {
5269 id: dismissTimer
53− interval: 5000
70+ interval: 1000
5471 onTriggered: {
5572 if (!bottombar.preventHiding) {
5673 bottombar.state = "hidden"
@@ -103,24 +120,29 @@ Item {
103120
104121 EdgeDragArea {
105122 id: dragArea
123+ objectName: "hudDragArea"
106124 width: parent.width
107− height: distanceThreshold
125+ height: shell.edgeSize
108126 anchors.bottom: parent.bottom
109127
110− distanceThreshold: units.gu(1)
128+ distanceThreshold: units.gu(8)
111129 enabled: !theHud.shown && bottombar.enabled && applicationIsOnForeground
112130 direction: Direction.Upwards
131+ maxSilenceTime: 2000
113132
114133 property int previousStatus: -1
115134 property real touchStartX: -1
116135
136+ readonly property real distanceFromThreshold: (-distance) - distanceThreshold // distance is negative
137+ readonly property real revealDistance: units.gu(2)
138+ readonly property real commitDistance: units.gu(6)
139+ readonly property real commitProgress: MathLocal.clamp(distanceFromThreshold / commitDistance, 0, 1)
140+
117141 onStatusChanged: {
118142 if (status === DirectionalDragArea.WaitingForTouch) {
119143 if (previousStatus == DirectionalDragArea.Recognized) {
120144 if (hudButton.mouseOver) {
121145 hudButton.clicked()
122− } else {
123− bottombar.state = "hidden"
124146 }
125147 }
126148 } else if (status === DirectionalDragArea.Undecided) {
@@ -128,35 +150,78 @@ Item {
128150 touchStartX = touchX
129151 }
130152 } else if (status === DirectionalDragArea.Recognized) {
131− bottombar.state = "shown"
153+ bottombar.state = "hint"
132154 }
133155 previousStatus = status
134156 }
157+
158+ onDistanceChanged: {
159+ if (status === DirectionalDragArea.Recognized) {
160+ if (distanceFromThreshold > commitDistance)
161+ bottombar.state = "shown"
162+ else if (distanceFromThreshold > revealDistance)
163+ bottombar.state = "reveal"
164+ }
165+ }
166+ }
167+
168+ Item {
169+ id: dismissArea
170+ anchors {
171+ top: parent.top
172+ left: parent.left
173+ right: parent.right
174+ }
175+ height: parent.height - bottomBarVisibilityCommunicatorShell.position
176+
177+ MouseArea {
178+ anchors.fill: parent
179+ enabled: bottombar.state == "shown"
180+ onPressed: {
181+ bottomBarVisibilityCommunicatorShell.forceHidden = true
182+ bottombar.state = "hidden"
183+ }
184+ }
185+
186+ InputFilterArea {
187+ anchors.fill: parent
188+ blockInput: (hudButton.opacity == 1)
189+ }
135190 }
136191
137192 MouseArea {
138− anchors.fill: parent
139− enabled: bottombar.state == "shown"
193+ anchors {
194+ top: dismissArea.bottom
195+ left: parent.left
196+ right: parent.right
197+ bottom: parent.bottom
198+ }
199+ enabled: bottombar.state == "shown" && bottomBarVisibilityCommunicatorShell.position > 0
140200 onPressed: {
141201 bottombar.state = "hidden"
142202 }
143203 }
144204
145− InputFilterArea {
146− anchors.fill: parent
147− blockInput: (hudButton.opacity == 1)
148− }
149−
150205 states: [
151206 State {
152207 name: "hidden"
153− PropertyChanges { target: hudButton; opacity: 0}
154− PropertyChanges { target: hudButton; bottomMargin: units.gu(-1)}
208+ PropertyChanges { target: hudButton; opacity: 0 }
209+ PropertyChanges { target: hudButton; bottomMargin: units.gu(-2) }
210+ },
211+ State {
212+ name: "hint"
213+ extend: "hidden"
214+ PropertyChanges { target: hudButton; opacity: 0.5 }
215+ },
216+ State {
217+ name: "reveal"
218+ extend: "hint"
219+ PropertyChanges { target: hudButton; bottomMargin: units.gu(-2) + units.gu(2) * dragArea.commitProgress }
155220 },
156221 State {
157222 name: "shown"
158− PropertyChanges { target: hudButton; opacity: 1}
159− PropertyChanges { target: hudButton; bottomMargin: units.gu(0)}
223+ PropertyChanges { target: hudButton; opacity: 1 }
224+ PropertyChanges { target: hudButton; bottomMargin: units.gu(0) }
160225 }
161226 ]
162227}
CMakeLists.txt−1
@@ -96,7 +96,6 @@ enable_testing()
9696# Autopilot tests
9797include(autopilot)
9898declare_autopilot_test(shell unity8.shell ${CMAKE_SOURCE_DIR}/tests/autopilot/)
99−declare_autopilot_test(indicators_client unity8.indicators_client ${CMAKE_SOURCE_DIR}/tests/autopilot/)
10099
101100set(SHELL_APP unity8)
102101
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/EdgeDemoOverlay.qml+9−2
@@ -121,7 +121,6 @@ Showable {
121121
122122 Column {
123123 id: labelGroup
124− layer.enabled: true // otherwise the underlining on "Skip intro" jumps
125124 spacing: units.gu(3)
126125
127126 anchors {
@@ -150,7 +149,15 @@ Showable {
150149 text: i18n.tr("Skip intro")
151150 color: UbuntuColors.orange
152151 fontSize: "small"
153− font.underline: true
152+
153+ Icon {
154+ anchors.left: parent.right
155+ anchors.verticalCenter: parent.verticalCenter
156+ height: units.dp(12)
157+ width: units.dp(12)
158+ name: "chevron"
159+ color: UbuntuColors.orange
160+ }
154161
155162 MouseArea {
156163 // Make clickable area bigger than just the link because
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/PageHeader.qml+44−1
@@ -18,6 +18,7 @@ import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import Ubuntu.Components.Popups 0.1
2020import Ubuntu.Components.ListItems 0.1 as ListItem
21+import Unity 0.1
2122
2223Item {
2324 /*!
@@ -30,6 +31,7 @@ Item {
3031 property bool searchEntryEnabled: false
3132 property alias searchQuery: searchField.text
3233 property ListModel searchHistory: SearchHistoryModel {}
34+ property Scope scope
3335
3436 height: units.gu(8.5)
3537 implicitHeight: units.gu(8.5)
@@ -148,7 +150,7 @@ Item {
148150 hasClearButton: false
149151
150152 primaryItem: AbstractButton {
151− enabled: searchField.text != ""
153+ enabled: searchField.text != "" && !searchIndicator.running
152154 onClicked: {
153155 if (searchField.text != "") {
154156 searchHistory.addQuery(searchField.text)
@@ -158,8 +160,22 @@ Item {
158160 height: parent.height
159161 width: height
160162
163+ ActivityIndicator {
164+ id: searchIndicator
165+ objectName: "searchIndicator"
166+
167+ anchors {
168+ verticalCenter: parent.verticalCenter
169+ left: parent.left
170+ leftMargin: units.gu(0.5)
171+ }
172+
173+ running: opacity > 0
174+ }
175+
161176 Image {
162177 id: primaryImage
178+ objectName: "primaryImage"
163179 anchors {
164180 verticalCenter: parent.verticalCenter
165181 left: parent.left
@@ -167,6 +183,7 @@ Item {
167183 }
168184 width: units.gu(3)
169185 height: units.gu(3)
186+ visible: opacity > 0
170187 }
171188
172189 Item {
@@ -185,6 +202,32 @@ Item {
185202 onActiveFocusChanged: {
186203 if (!activeFocus) searchContainer.closePopover()
187204 }
205+
206+ states: [
207+ State {
208+ name: "searching"
209+ when: scope && scope.searchInProgress
210+ PropertyChanges { target: searchIndicator; running: true; opacity: 1 }
211+ PropertyChanges { target: primaryImage; opacity: 0 }
212+ },
213+ State {
214+ name: "idle"
215+ when: !scope || !scope.searchInProgress
216+ PropertyChanges { target: searchIndicator; opacity: 0 }
217+ PropertyChanges { target: primaryImage; opacity: 1 }
218+ }
219+ ]
220+
221+ transitions: [
222+ Transition {
223+ to: "searching"
224+ reversible: true
225+ SequentialAnimation {
226+ NumberAnimation { target: primaryImage; property: "opacity"; duration: UbuntuAnimation.FastDuration; easing.type: Easing.Linear }
227+ NumberAnimation { target: searchIndicator; property: "opacity"; duration: UbuntuAnimation.FastDuration; easing.type: Easing.Linear }
228+ }
229+ }
230+ ]
188231 }
189232
190233 states: [
Greeter/PinPadButton.qml → Components/PinPadButton.qmlrenamed

The content is the same.

Components/Showable.qml+11
@@ -30,6 +30,7 @@ Item {
3030 property bool created: true
3131 property bool required
3232 property bool __shouldShow: false
33+ property bool __skipShowAnimation: false
3334
3435 property list<QtObject> hides
3536 property var showAnimation
@@ -58,6 +59,11 @@ Item {
5859 }
5960 }
6061
62+ function showNow() {
63+ __skipShowAnimation = true;
64+ show();
65+ }
66+
6167 onCreatedChanged: {
6268 if (created && __shouldShow) {
6369 __reallyShow();
@@ -67,6 +73,7 @@ Item {
6773
6874 function __reallyShow() {
6975 if (!available) {
76+ __skipShowAnimation = false;
7077 return false;
7178 }
7279
@@ -80,11 +87,15 @@ Item {
8087 if (!showAnimation.running) {
8188 showAnimation.restart()
8289 }
90+ if (__skipShowAnimation) {
91+ showAnimation.complete();
92+ }
8393 } else {
8494 visible = true;
8595 }
8696
8797 shown = true;
98+ __skipShowAnimation = false;
8899 return true;
89100 }
90101
Components/Stage.qml+4−1
@@ -97,7 +97,9 @@ Showable {
9797 if (shouldUseScreenshots) {
9898 stage.__focusApplicationUsingScreenshots(stage.focusedApplication);
9999 } else {
100− stage.__focusActualApplication(stage.focusedApplicationWhenUsingScreenshots);
100+ if (stage.focusedApplicationWhenUsingScreenshots) {
101+ stage.__focusActualApplication(stage.focusedApplicationWhenUsingScreenshots);
102+ }
101103 }
102104 }
103105
@@ -244,6 +246,7 @@ Showable {
244246 */
245247 delayedHideScreenshots.start();
246248 } else {
249+ stage.focusedApplicationWhenUsingScreenshots = null;
247250 stage.__hideScreenshots();
248251 }
249252 }
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/AppPreview.qml+70−123
@@ -16,153 +16,101 @@
1616
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
19−import Ubuntu.Components.ListItems 0.1 as ListItem
20−import Ubuntu.DownloadDaemonListener 0.1
19+import Ubuntu.Components.ListItems 0.1 as ListItems
2120import ".."
21+import "../Generic"
22+import "../Previews"
2223import "../../Components"
2324
24−DashPreview {
25+GenericPreview {
2526 id: root
2627
2728 signal sendUserReview(string review)
2829
29− title: root.previewData.title
30+ previewImages: previewImagesComponent
31+ description: descriptionComponent
32+ header: headerComponent
3033
31− header: ListView {
32− spacing: units.gu(1)
33− orientation: ListView.Horizontal
34− height: units.gu(22)
35− anchors {
36− left: parent.left
37− right: parent.right
38− margins: units.gu(1)
39− }
40− model: previewData.infoMap["more-screenshots"] != null ? previewData.infoMap["more-screenshots"].value : [previewData.image]
34+ // TODO: Ratings are not yet complete... enable this once they work
35+ //ratings: ratingsComponent
4136
42− delegate: UbuntuShape {
43− id: shape
44− anchors {
45− top: parent.top
46− bottom: parent.bottom
37+ Component {
38+ id: previewImagesComponent
39+ ListView {
40+ id: previewImageListView
41+ spacing: units.gu(1)
42+ orientation: ListView.Horizontal
43+ height: units.gu(22)
44+ model: previewData.infoMap["more-screenshots"] != null ? previewData.infoMap["more-screenshots"].value : [previewData.image]
45+ cacheBuffer: width * 3
46+
47+ LazyImage {
48+ objectName: "placeholderScreenshot"
49+ anchors {
50+ top: parent.top
51+ bottom: parent.bottom
52+ }
53+ scaleTo: "height"
54+ source: "broken_image"
55+ initialWidth: units.gu(13)
56+ visible: previewImageListView.count == 0
4757 }
48− width: units.gu(12)
49− radius: "medium"
50− borderSource: ""
51− image: Image {
52− asynchronous: true
53− sourceSize { width: shape.width; height: shape.height }
58+
59+ delegate: LazyImage {
60+ id: shape
61+ anchors {
62+ top: parent.top
63+ bottom: parent.bottom
64+ }
5465 source: modelData ? modelData : ""
55− fillMode: Image.PreserveAspectCrop
66+ scaleTo: "height"
67+ initialWidth: units.gu(13)
5668 }
5769 }
5870 }
5971
6072 Component {
61− id: buttonsComponent
62−
63− GridView {
64− id: buttonsGrid
65− objectName: "gridButtons"
66−
67− property int numOfRows: (count + 1) / 2
68− property int spacing: units.gu(1)
69− height: Math.max(units.gu(5), units.gu(5)*numOfRows + spacing*(numOfRows - 1))
70−
71− interactive: false
72− cellWidth: Math.max(units.gu(9), width / 2)
73− cellHeight: buttonHeight + spacing
74− property int buttonWidth: count > 1 ? Math.max(0, width / 2 - spacing) : width
75− property int buttonHeight: units.gu(5)
76−
77− delegate: Button {
78− width: Math.max(units.gu(4), buttonsGrid.buttonWidth)
79− height: buttonsGrid.buttonHeight
80− color: Theme.palette.selected.foreground
81− text: modelData.displayName
82− iconSource: modelData.iconHint
83− iconPosition: "right"
84− onClicked: root.previewData.execute(modelData.id, { })
85− }
73+ id: headerComponent
74+ Header {
75+ objectName: "previewHeader"
76+ title: previewData.title
77+ icon: previewData.appIcon
78+ subtitle: root.previewData.infoMap["publisher"] ? root.previewData.infoMap["publisher"].value : ""
79+ rating: Math.round(root.previewData.rating * 10)
80+ reviews: root.previewData.numRatings
81+ rated: root.previewData.infoMap["rated"] ? root.previewData.infoMap["rated"].value : 0
8682 }
8783 }
8884
8985 Component {
90− id: progressComponent
91−
92− ProgressBar {
93− id: progressBar
94− objectName: "progressBar"
95− value: 0
96− maximumValue: 100
97− height: units.gu(5)
98−
99− property var model
100−
101− DownloadTracker {
102− service: "com.canonical.applications.Downloader"
103− dbusPath: root.previewData.infoMap["progressbar_source"] ? root.previewData.infoMap["progressbar_source"].value : ""
104−
105− onProgress: {
106− var percentage = parseInt(received * 100 / total);
107− progressBar.value = percentage;
108− }
109−
110− onFinished: {
111− root.previewData.execute(progressBar.model[0].id, { })
112− }
86+ id: descriptionComponent
87+ Column {
88+ spacing: units.gu(1)
11389
114− onError: {
115− root.previewData.execute(progressBar.model[1].id, { "error": error });
116− }
90+ Label {
91+ anchors { left: parent.left; right: parent.right }
92+ text: root.previewData.description
93+ fontSize: "medium"
94+ color: Theme.palette.selected.backgroundText
95+ opacity: .6
96+ wrapMode: Text.WordWrap
97+ style: Text.Raised
98+ styleColor: "black"
11799 }
118−
119− }
120− }
121−
122− buttons: Loader {
123− anchors {
124− left: parent.left
125− right: parent.right
126− }
127−
128− sourceComponent: root.previewData.infoMap["show_progressbar"] ? progressComponent : buttonsComponent
129−
130− onLoaded: {
131− item.model = root.previewData.actions;
132100 }
133101 }
134102
135− body: Column {
136− spacing: units.gu(1)
137−
138− AppInfo {
139− objectName: "appInfo"
140− anchors { left: parent.left; right: parent.right }
141−
142− appName: root.previewData.title
143− icon: root.previewData.appIcon
144− rating: Math.round(root.previewData.rating * 10)
145− reviews: root.previewData.numRatings
146− rated: root.previewData.infoMap["rated"] ? root.previewData.infoMap["rated"].value : 0
147− }
148−
149− Label {
150− anchors { left: parent.left; right: parent.right }
151− text: root.previewData.description
152− fontSize: "medium"
153− color: Theme.palette.selected.backgroundText
154− opacity: .6
155− wrapMode: Text.WordWrap
156− style: Text.Raised
157− styleColor: "black"
158− }
159−
103+ Component {
104+ id: ratingsComponent
160105 Column {
106+ id: columnReviewRating
107+ objectName: "columnReviewRating"
161108 visible: root.previewData.rating >= 0
162− anchors { left: parent.left; right: parent.right }
163− spacing: parent.spacing
164109
165− ListItem.ThinDivider { }
110+ spacing: units.gu(1)
111+ height: childrenRect.height
112+
113+ ListItems.ThinDivider { }
166114
167115 Item {
168116 anchors { left: parent.left; right: parent.right }
@@ -188,13 +136,12 @@ DashPreview {
188136 }
189137 }
190138
191− ListItem.ThinDivider { }
139+ ListItems.ThinDivider { }
192140
193− AppReviews {
141+ Reviews {
194142 id: appReviews
195143 objectName: "appReviews"
196− // TODO: This should make this visible when the feature for reviews/comments is complete.
197− visible: false
144+
198145 anchors { left: parent.left; right: parent.right }
199146
200147 model: root.previewData.infoMap["comments"] ? root.previewData.infoMap["comments"].value : undefined
Dash/Apps/AppsAvailableForDownloadModel.qmldeleted−81
@@ -1,81 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import "../../Applications"
19−
20−ListModel {
21− ListElement {
22− uri: "application://evernote.desktop"
23− icon: "../../graphics/applicationIcons/evernote.png"
24− category: 0
25− mimetype: "application/x-desktop"
26− title: "Evernote"
27− comment: ""
28− dndUri: "file:///usr/share/applications/evernote.desktop"
29− metadata: ""
30− }
31− ListElement {
32− uri: "application://map.desktop"
33− icon: "../../graphics/applicationIcons/map.png"
34− category: 0
35− mimetype: "application/x-desktop"
36− title: "Map"
37− comment: ""
38− dndUri: "file:///usr/share/applications/map.desktop"
39− metadata: ""
40− }
41− ListElement {
42− uri: "application://pinterest.desktop"
43− icon: "../../graphics/applicationIcons/pinterest.png"
44− category: 0
45− mimetype: "application/x-desktop"
46− title: "Pinterest"
47− comment: ""
48− dndUri: "file:///usr/share/applications/pinterest.desktop"
49− metadata: ""
50− }
51− ListElement {
52− uri: "application://soundcloud.desktop"
53− icon: "../../graphics/applicationIcons/soundcloud.png"
54− category: 0
55− mimetype: "application/x-desktop"
56− title: "Soundcloud"
57− comment: ""
58− dndUri: "file:///usr/share/applications/soundcloud.desktop"
59− metadata: ""
60− }
61− ListElement {
62− uri: "application://wikipedia.desktop"
63− icon: "../../graphics/applicationIcons/wikipedia.png"
64− category: 0
65− mimetype: "application/x-desktop"
66− title: "Wikipedia"
67− comment: ""
68− dndUri: "file:///usr/share/applications/wikipedia.desktop"
69− metadata: ""
70− }
71− ListElement {
72− uri: "application://youtube.desktop"
73− icon: "../../graphics/applicationIcons/youtube.png"
74− category: 0
75− mimetype: "application/x-desktop"
76− title: "Youtube"
77− comment: ""
78− dndUri: "file:///usr/share/applications/youtube.desktop"
79− metadata: ""
80− }
81−}
Dash/Apps/DashPluginFilterGrid.qmlnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import "../../Components"
20+import "../Generic"
21+
22+GenericFilterGrid {
23+ id: filtergrid
24+
25+ delegate: Tile {
26+ id: tile
27+ objectName: "delegate" + index
28+ width: filtergrid.cellWidth
29+ height: filtergrid.cellHeight
30+ text: model.title
31+ imageWidth: filtergrid.iconWidth
32+ imageHeight: filtergrid.iconHeight
33+ source: model.icon
34+
35+ style: FlatTileStyle {
36+ disabled: model.rendererHints['scope_disabled'] === 1;
37+ }
38+
39+ onClicked: {
40+ var data = { model: model }
41+ filtergrid.clicked(index, data, tile.y)
42+ }
43+
44+ onPressAndHold: {
45+ var data = { model: model }
46+ filtergrid.pressAndHold(index, data, tile.y)
47+ }
48+ }
49+}
Dash/Apps/FrequentlyUsedAppsModel.qml+4−4
@@ -68,13 +68,13 @@ ListModel {
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/RunningApplicationsGrid.qml+20−1
@@ -22,6 +22,8 @@ ResponsiveFlowView {
2222 clip: true
2323
2424 signal updateScreenshots
25+ property alias enableHeightBehavior: heightBehaviour.enabled
26+ property bool enableHeightBehaviorOnNextCreation: firstModel.count + secondModel.count == 0
2527
2628 Connections {
2729 target: shell
@@ -29,7 +31,24 @@ ResponsiveFlowView {
2931 onStageScreenshotsReadyChanged: if (shell.dashShown && shell.stageScreenshotsReady) updateScreenshots();
3032 }
3133
32− Behavior on height { NumberAnimation { duration: 200; easing.type: Easing.InOutQuad } }
34+ Behavior on height {
35+ id: heightBehaviour
36+ enabled: false
37+ NumberAnimation { duration: 200; easing.type: Easing.InOutQuad }
38+ }
39+
40+ Connections {
41+ target: root.firstModel
42+ onCountChanged: {
43+ heightBehaviour.enabled = true;
44+ }
45+ }
46+ Connections {
47+ target: root.secondModel
48+ onCountChanged: {
49+ heightBehaviour.enabled = true;
50+ }
51+ }
3352
3453 property bool canEnableTerminationMode: true
3554
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/DashApps.qml+2
@@ -24,6 +24,7 @@ import "Apps"
2424
2525GenericScopeView {
2626 id: scopeView
27+ objectName: "DashApps"
2728
2829 // FIXME: a way to aggregate these models would be ideal
2930 property var mainStageApplicationsModel: shell.applicationManager.mainStageApplications
@@ -51,5 +52,6 @@ GenericScopeView {
5152
5253 onScopeChanged: {
5354 scopeView.scope.categories.overrideResults("recent", runningApplicationsModel);
55+ enableHeightBehaviorOnNextCreation = (mainStageApplicationsModel.count + sideStageApplicationModel.count == 0)
5456 }
5557}
Dash/DashContent.qml+2−1
@@ -114,6 +114,7 @@ Item {
114114 height: ListView.view.height
115115 asynchronous: true
116116 source: scopeMapper.map(scope.id)
117+ objectName: scope.id + " loader"
117118
118119 // these are needed for autopilot tests
119120 readonly property string scopeId: scope.id
@@ -122,7 +123,7 @@ Item {
122123
123124 onLoaded: {
124125 item.scope = Qt.binding(function() { return scope })
125− item.isCurrent = Qt.binding(function() { return ListView.isCurrentItem })
126+ item.isCurrent = Qt.binding(function() { return visible && ListView.isCurrentItem })
126127 item.searchHistory = Qt.binding(function() { return shell.searchHistory })
127128 dashContentList.movementStarted.connect(item.movementStarted)
128129 dashContent.positionedAtBeginning.connect(item.positionedAtBeginning)
Dash/DashPreview.qml+91−93
@@ -23,19 +23,18 @@ Rectangle {
2323 property int keyboardSize: Qt.inputMethod.visible ? Qt.inputMethod.keyboardRectangle.height : 0
2424 property var previewData
2525
26− property string title: ""
2726 property real previewWidthRatio: 0.5
2827
28+ property Component previewImages
2929 property Component header
30− property Component buttons
31− property Component body
30+ property Component actions
31+ property Component description
32+ property Component ratings
3233
33− readonly property bool narrowMode: width <= height
34+ readonly property bool narrowMode: width <= height * 1.5
35+ readonly property int columnWidth: narrowMode ? contentRow.width : (contentRow.width / 3) - contentRow.spacing
3436 readonly property int contentSpacing: units.gu(3)
3537
36− signal close()
37− signal previewImageClicked()
38−
3938 color: Qt.rgba(0, 0, 0, .3)
4039 clip: true
4140
@@ -61,87 +60,32 @@ Rectangle {
6160 anchors.fill: parent
6261 }
6362
64− Item {
65− id: headerRow
66− height: units.gu(4)
67− anchors {
68− top: parent.top
69− left: parent.left
70− right: parent.right
71− margins: root.contentSpacing
72− }
73−
74− MouseArea {
75− anchors {
76− fill: parent
77− leftMargin: -root.contentSpacing
78− rightMargin: -root.contentSpacing
79− topMargin: -root.contentSpacing
80− }
81−
82− onClicked: root.close();
83− }
84−
85− Item {
86− id: labelItem
87− anchors {
88− fill: parent
89− rightMargin: closePreviewImage.width + spacing
90− }
91−
92− property int spacing: units.gu(2)
93−
94− Label {
95− id: title
96− objectName: "titleLabel"
97− anchors {
98− left: parent.left
99− right: parent.right
100− }
101−
102− elide: Text.ElideRight
103− fontSize: "x-large"
104− font.weight: Font.Light
105− color: Theme.palette.selected.backgroundText
106− opacity: 0.9
107− text: root.title
108− style: Text.Raised
109− styleColor: "black"
110− }
111− Image {
112− id: closePreviewImage
113− source: "graphics/tablet/icon_close_preview.png"
114− width: units.gu(4)
115− height: units.gu(1.5)
116− anchors {
117− bottom: title.bottom
118− bottomMargin: units.dp(7)
119− left: parent.left
120− leftMargin: title.paintedWidth + labelItem.spacing
121− }
122− }
123− }
124− }
12563
12664 Row {
12765 id: contentRow
12866 anchors {
12967 left: parent.left
68+ top: parent.top
13069 right: parent.right
131− top: headerRow.bottom
13270 bottom: parent.bottom
133− margins: root.contentSpacing
71+ topMargin: root.contentSpacing
72+ leftMargin: root.contentSpacing
73+ rightMargin: root.contentSpacing
13474 }
75+ height: childrenRect.height
13576
13677 spacing: units.gu(2)
13778
79+
13880 Flickable {
13981 id: leftFlickable
14082 objectName: "leftFlickable"
141− anchors.top: parent.top
142− anchors.bottom: parent.bottom
143− width: root.narrowMode ? contentRow.width : contentRow.width * root.previewWidthRatio
144− contentHeight: leftColumn.height
83+ anchors {
84+ top: parent.top
85+ bottom: parent.bottom
86+ }
87+ width: root.columnWidth
88+ contentHeight: leftColumn.height + root.contentSpacing
14589 anchors.bottomMargin: root.keyboardSize
14690 clip: true
14791
@@ -150,33 +94,44 @@ Rectangle {
15094 Column {
15195 id: leftColumn
15296 objectName: "leftColumn"
97+ height: childrenRect.height
98+ spacing: root.contentSpacing
15399 anchors {
154100 left: parent.left
155101 right: parent.right
156102 }
157− height: childrenRect.height
158− spacing: units.gu(1)
103+ }
104+ }
159105
160− Loader {
161− id: headerLoader
162− anchors.left: parent.left
163− anchors.right: parent.right
164− sourceComponent: root.header
165− }
166− Loader {
167− id: buttonLoader
168− anchors.left: parent.left
169− anchors.right: parent.right
170− sourceComponent: root.buttons
106+ Flickable {
107+ id: centerFlickable
108+ anchors {
109+ top: parent.top
110+ bottom: parent.bottom
111+ }
112+ width: root.columnWidth
113+ contentHeight: centerColumn.height
114+ clip: true
115+
116+ Column {
117+ id: centerColumn
118+ objectName: "centerColumn"
119+ height: childrenRect.height
120+ anchors {
121+ left: parent.left
122+ right: parent.right
171123 }
124+ spacing: root.contentSpacing
172125 }
173126 }
174127
175128 Flickable {
176129 id: rightFlickable
177− anchors.top: parent.top
178− anchors.bottom: parent.bottom
179− width: narrowMode ? 0 : (contentRow.width - leftColumn.width - contentRow.spacing)
130+ anchors {
131+ top: parent.top
132+ bottom: parent.bottom
133+ }
134+ width: root.columnWidth
180135 contentHeight: rightColumn.height
181136 clip: true
182137
@@ -193,9 +148,52 @@ Rectangle {
193148 }
194149
195150 Loader {
151+ id: previewImageLoader
152+ parent: leftColumn
153+ sourceComponent: root.previewImages
154+ anchors {
155+ left: parent.left
156+ right: parent.right
157+ }
158+ }
159+
160+ Loader {
161+ id: ratingsLoader
196162 parent: root.narrowMode ? leftColumn : rightColumn
197− anchors.left: parent.left
198− anchors.right: parent.right
199− sourceComponent: root.body
163+ anchors {
164+ left: parent.left
165+ right: parent.right
166+ }
167+ sourceComponent: root.ratings
168+ }
169+
170+ Loader {
171+ id: descriptionLoader
172+ parent: root.narrowMode ? leftColumn : centerColumn
173+ anchors {
174+ left: parent.left
175+ right: parent.right
176+ }
177+ sourceComponent: root.description
178+ }
179+
180+ Loader {
181+ id: actionsLoader
182+ parent: root.narrowMode ? leftColumn : centerColumn
183+ anchors {
184+ left: parent.left
185+ right: parent.right
186+ }
187+ sourceComponent: root.actions
188+ }
189+
190+ Loader {
191+ id: headerLoader
192+ parent: root.narrowMode ? leftColumn : centerColumn
193+ anchors {
194+ left: parent.left
195+ right: parent.right
196+ }
197+ sourceComponent: root.header
200198 }
201199}
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+158−70
@@ -16,90 +16,178 @@
1616
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
19+import Ubuntu.Components.ListItems 0.1 as ListItems
20+import Ubuntu.DownloadDaemonListener 0.1
1921import "../../Components"
20−import "../../Components/ListItems" as ListItems
2122import ".."
23+import "../Previews"
2224
2325DashPreview {
2426 id: genericPreview
2527
26− title: previewData.title
27− previewWidthRatio: 0.6
28−
29− property url url: previewData.image
30−
31− header: UbuntuShape {
32− id: urlLoader
33− anchors.left: parent.left
34− anchors.right: parent.right
35− height: width * previewImage.sourceSize.height / previewImage.sourceSize.width
36− radius: "medium"
37− image: Image {
38− id: previewImage
39− asynchronous: true
40− source: genericPreview.url
41− fillMode: Image.PreserveAspectCrop
28+ previewImages: previewImagesComponent
29+ header: headerComponent
30+ actions: (previewData.infoMap !== undefined && previewData.infoMap["show_progressbar"]) ? progressComponent : actionsComponent
31+ description: descriptionComponent
32+
33+ Component {
34+ id: previewImagesComponent
35+
36+ LazyImage {
37+ objectName: "genericPreviewImage"
38+ anchors {
39+ left: parent.left
40+ right: parent.right
41+ }
42+ scaleTo: "width"
43+ source: genericPreview.previewData.image
44+ initialHeight: width
45+ }
46+ }
47+
48+ Component {
49+ id: headerComponent
50+ Header {
51+ title: previewData.title
52+ subtitle: previewData.subtitle
4253 }
4354 }
4455
45− buttons: GridView {
46− id: buttons
47− model: genericPreview.previewData.actions
48−
49− property int numOfRows: (count + 1) / 2
50− property int spacing: units.gu(1)
51− height: Math.max(units.gu(4), units.gu(4)*numOfRows + spacing*(numOfRows - 1))
52−
53− cellWidth: Math.max(units.gu(9), width / 2)
54− cellHeight: buttonHeight + spacing
55− property int buttonWidth: Math.max(0, width / 2 - spacing)
56− property int buttonHeight: units.gu(4)
57−
58− delegate: Button {
59− width: Math.max(units.gu(4), buttons.buttonWidth)
60− height: buttons.buttonHeight
61− color: "#dd4814"
62− text: modelData.displayName
63− iconSource: modelData.iconHint
64− iconPosition: "right"
65− visible: true
66− onClicked: {
67− genericPreview.previewData.execute(modelData.id, { })
56+ Component {
57+ id: actionsComponent
58+
59+ Column {
60+ id: buttonList
61+ spacing: units.gu(1)
62+ Repeater {
63+ objectName: "buttonList"
64+ model: previewData.actions
65+
66+ delegate: Button {
67+ objectName: "button" + index
68+ width: parent.width
69+ height: buttonList.buttonHeight
70+ color: Theme.palette.selected.foreground
71+ text: modelData.displayName
72+ iconSource: modelData.iconHint
73+ iconPosition: "right"
74+ onClicked: previewData.execute(modelData.id, { })
75+ }
6876 }
6977 }
70− focus: false
7178 }
72− body: Column {
73− spacing: units.gu(2)
74−
75− Label {
76− anchors { left: parent.left; right: parent.right }
77− visible: text != ""
78− fontSize: "medium"
79− opacity: 0.6
80− color: "white"
81− text: previewData.subtitle.replace(/[\r\n]+/g, "<br />")
82− style: Text.Raised
83− styleColor: "black"
84− wrapMode: Text.WordWrap
85− textFormat: Text.RichText
86− // FIXME: workaround for https://bugreports.qt-project.org/browse/QTBUG-33020
87− onWidthChanged: { wrapMode = Text.NoWrap; wrapMode = Text.WordWrap }
79+
80+ Component {
81+ id: progressComponent
82+
83+ ProgressBar {
84+ id: progressBar
85+ objectName: "progressBar"
86+ value: 0
87+ maximumValue: 100
88+ height: units.gu(5)
89+
90+ property var model: previewData.actions
91+
92+ DownloadTracker {
93+ service: "com.canonical.applications.Downloader"
94+ dbusPath: previewData.infoMap["progressbar_source"] ? previewData.infoMap["progressbar_source"].value : ""
95+
96+ onProgress: {
97+ var percentage = parseInt(received * 100 / total);
98+ progressBar.value = percentage;
99+ }
100+
101+ onFinished: {
102+ previewData.execute(progressBar.model[0].id, { })
103+ }
104+
105+ onError: {
106+ previewData.execute(progressBar.model[1].id, { "error": error });
107+ }
108+ }
109+
88110 }
111+ }
89112
90− Label {
91− anchors { left: parent.left; right: parent.right }
92− visible: text != ""
93− fontSize: "small"
94− opacity: 0.6
95− color: "white"
96− text: previewData.description.replace(/[\r\n]+/g, "<br />")
97− style: Text.Raised
98− styleColor: "black"
99− wrapMode: Text.WordWrap
100− textFormat: Text.RichText
101− // FIXME: workaround for https://bugreports.qt-project.org/browse/QTBUG-33020
102− onWidthChanged: { wrapMode = Text.NoWrap; wrapMode = Text.WordWrap }
113+ Component {
114+ id: descriptionComponent
115+ Column {
116+ spacing: units.gu(2)
117+
118+ Label {
119+ id: descriptionLabel
120+ anchors { left: parent.left; right: parent.right }
121+ visible: text != ""
122+ fontSize: "small"
123+ opacity: 0.6
124+ color: "white"
125+ text: previewData.description.replace(/[\r\n]/g, "<br />")
126+ style: Text.Raised
127+ styleColor: "black"
128+ wrapMode: Text.WordWrap
129+ textFormat: Text.RichText
130+ // FIXME: workaround for https://bugreports.qt-project.org/browse/QTBUG-33020
131+ onWidthChanged: { wrapMode = Text.NoWrap; wrapMode = Text.WordWrap }
132+ }
133+
134+ Column {
135+ objectName: "infoHintColumn"
136+ anchors {
137+ left: parent.left
138+ right: parent.right
139+ }
140+ Repeater {
141+ objectName: "infoHintRepeater"
142+ model: previewData.infoHints
143+
144+ delegate: Item {
145+ objectName: "infoHintItem" + index
146+ width: parent.width
147+ height: units.gu(5)
148+ Row {
149+ width: parent.width
150+ spacing: units.gu(1)
151+ property int columnWidth: (width - spacing) / 2
152+ anchors.verticalCenter: parent.verticalCenter
153+
154+ Label {
155+ objectName: "displayNameLabel"
156+ visible: valueLabel.visible
157+ fontSize: "small"
158+ opacity: 0.9
159+ color: "white"
160+ horizontalAlignment: Text.AlignLeft
161+ width: parent.columnWidth
162+ text: modelData.displayName
163+ style: Text.Raised
164+ styleColor: "black"
165+ }
166+ Label {
167+ id: valueLabel
168+ objectName: "valueLabel"
169+ visible: modelData.value != ""
170+ fontSize: "small"
171+ opacity: 0.6
172+ color: "white"
173+ horizontalAlignment: Text.AlignRight
174+ width: parent.columnWidth
175+ text: modelData.value ? modelData.value : ""
176+ style: Text.Raised
177+ styleColor: "black"
178+ wrapMode: Text.WordWrap
179+ }
180+ }
181+ ListItems.ThinDivider {
182+ anchors {
183+ left: parent.left
184+ bottom: parent.bottom
185+ right: parent.right
186+ }
187+ }
188+ }
189+ }
190+ }
103191 }
104192 }
105193}
Dash/Generic/WeatherFilterGrid.qmlnew file+49
@@ -0,0 +1,49 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import "../../Components"
20+
21+GenericFilterGrid {
22+ id: filtergrid
23+
24+ delegateHeight: units.gu(11.5)
25+
26+ delegate: Tile {
27+ id: tile
28+ objectName: "delegate" + index
29+ width: filtergrid.cellWidth
30+ height: filtergrid.cellHeight
31+ text: model.title
32+ imageWidth: filtergrid.iconWidth
33+ imageHeight: filtergrid.iconHeight
34+ source: model.icon
35+ maximumLineCount: 2
36+
37+ style: FlatTileStyle {}
38+
39+ onClicked: {
40+ var data = { model: model }
41+ filtergrid.clicked(index, data, tile.y)
42+ }
43+
44+ onPressAndHold: {
45+ var data = { model: model }
46+ filtergrid.pressAndHold(index, data, tile.y)
47+ }
48+ }
49+}
Dash/GenericScopeView.qml+32−4
@@ -22,6 +22,7 @@ import "../Components/ListItems" as ListItems
2222ScopeView {
2323 id: scopeView
2424 readonly property alias previewShown: previewLoader.onScreen
25+ property bool enableHeightBehaviorOnNextCreation: false
2526
2627 onIsCurrentChanged: {
2728 pageHeader.resetSearch();
@@ -30,6 +31,8 @@ ScopeView {
3031
3132 onMovementStarted: categoryView.showHeader()
3233
34+ onPositionedAtBeginning: categoryView.positionAtBeginning()
35+
3336 Binding {
3437 target: scopeView.scope
3538 property: "searchQuery"
@@ -58,6 +61,7 @@ ScopeView {
5861
5962 ScopeListView {
6063 id: categoryView
64+ objectName: "categoryListView"
6165 anchors.fill: parent
6266 model: scopeView.categories
6367 forceNoClip: previewLoader.onScreen
@@ -82,13 +86,18 @@ ScopeView {
8286 right: parent.right
8387 }
8488
85− source: getRenderer(model.renderer, model.contentType)
89+ source: getRenderer(model.renderer, model.contentType, model.rendererHint)
8690
8791 onLoaded: {
92+ if (item.enableHeightBehavior !== undefined && item.enableHeightBehaviorOnNextCreation !== undefined) {
93+ item.enableHeightBehavior = scopeView.enableHeightBehaviorOnNextCreation;
94+ scopeView.enableHeightBehaviorOnNextCreation = false;
95+ }
8896 if (source.toString().indexOf("Apps/RunningApplicationsGrid.qml") != -1) {
8997 // TODO: the running apps grid doesn't support standard scope results model yet
9098 item.firstModel = Qt.binding(function() { return results.firstModel })
9199 item.secondModel = Qt.binding(function() { return results.secondModel })
100+ item.canEnableTerminationMode = Qt.binding(function() { return scopeView.isCurrent })
92101 } else {
93102 item.model = Qt.binding(function() { return results })
94103 }
@@ -101,6 +110,12 @@ ScopeView {
101110 }
102111 }
103112
113+ Component.onDestruction: {
114+ if (item.enableHeightBehavior !== undefined && item.enableHeightBehaviorOnNextCreation !== undefined) {
115+ scopeView.enableHeightBehaviorOnNextCreation = item.enableHeightBehaviorOnNextCreation;
116+ }
117+ }
118+
104119 Connections {
105120 target: rendererLoader.item
106121 onClicked: {
@@ -176,6 +191,7 @@ ScopeView {
176191 width: categoryView.width
177192 text: scopeView.scope.name
178193 searchEntryEnabled: true
194+ scope: scopeView.scope
179195 }
180196 }
181197
@@ -185,19 +201,31 @@ ScopeView {
185201 }
186202 }
187203
188− function getRenderer(rendererId, contentType) {
204+ function getRenderer(rendererId, contentType, rendererHint) {
189205 if (rendererId == "default") {
190206 rendererId = getDefaultRendererId(contentType);
191207 }
192208 switch (rendererId) {
193209 case "grid": {
194210 switch (contentType) {
195− case "video": return "Generic/GenericFilterGridPotrait.qml";
211+ case "video": return "Video/VideoFilterGrid.qml";
196212 case "music": return "Music/MusicFilterGrid.qml";
213+ case "apps": {
214+ if (rendererHint == "toggled")
215+ return "Apps/DashPluginFilterGrid.qml";
216+ else
217+ return "Generic/GenericFilterGrid.qml";
218+ }
219+ case "weather": return "Generic/WeatherFilterGrid.qml";
197220 default: return "Generic/GenericFilterGrid.qml";
198221 }
199222 }
200− case "carousel": return "Generic/GenericCarousel.qml";
223+ case "carousel": {
224+ switch (contentType) {
225+ case "music": return "Music/MusicCarousel.qml";
226+ default: return "Generic/GenericCarousel.qml";
227+ }
228+ }
201229 case "special": {
202230 switch (contentType) {
203231 case "apps": return "Apps/RunningApplicationsGrid.qml";
Dash/Movie/MoviePreview.qmlnew file+71
@@ -0,0 +1,71 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import ".."
20+import "../Generic"
21+import "../../Components"
22+import "../Previews"
23+
24+GenericPreview {
25+ id: root
26+
27+ property bool ready: previewData ? true : false
28+ property url url: ready ? previewData.image : ""
29+
30+ previewImages: previewImageComponent
31+ header: headerComponent
32+
33+ Component {
34+ id: previewImageComponent
35+ LazyImage {
36+ anchors.left: parent.left
37+ anchors.right: parent.right
38+ scaleTo: "width"
39+ visible: height > 0
40+ source: root.url
41+ initialHeight: width * 10 / 16
42+
43+ Image {
44+ objectName: "playButton"
45+ anchors.centerIn: parent
46+ readonly property bool bigButton: parent.width > units.gu(40)
47+ width: bigButton ? units.gu(8) : units.gu(4.5)
48+ height: width
49+ source: "../graphics/play_button%1%2.png".arg(previewImageMouseArea.pressed ? "_active" : "").arg(bigButton ? "_big" : "")
50+ }
51+
52+ MouseArea {
53+ id: previewImageMouseArea
54+ anchors.fill: parent
55+ onClicked: {
56+ Qt.openUrlExternally(previewData.result.uri);
57+ }
58+ }
59+ }
60+ }
61+
62+ Component {
63+ id: headerComponent
64+ Header {
65+ title: previewData.title
66+ rating: Math.round(previewData.rating * 10)
67+ reviews: previewData.numRatings
68+ rated: previewData.infoMap["rated"] ? previewData.infoMap["rated"].value : 0
69+ }
70+ }
71+}
Dash/Music/MusicFilterGrid.qml+21−22
@@ -16,42 +16,41 @@
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/PreviewDelegateMapper.qml+1
@@ -22,6 +22,7 @@ QtObject {
2222 readonly property string appPreview: "Apps/AppPreview.qml"
2323 property var previewDelegateMapping: {"preview-generic": genericPreview,
2424 "preview-application": appPreview,
25+ "preview-movie": "Movie/MoviePreview.qml",
2526 }
2627 }
2728
Dash/Previews/Header.qmlnew file+109
@@ -0,0 +1,109 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import Ubuntu.Components 0.1
19+import "../../Components"
20+
21+Row {
22+ id: root
23+ property alias icon: image.source
24+ property alias title: titleLabel.text
25+ property alias subtitle: subtitleLabel.text
26+ property alias rating: ratingStars.rating
27+ property int rated: 0
28+ property int reviews: 0
29+
30+ spacing: units.gu(2)
31+ height: imageShape.visible ? imageShape.height : contentColumn.height
32+
33+ UbuntuShape {
34+ id: imageShape
35+ width: height
36+ height: Math.max(units.gu(6), contentColumn.height)
37+ visible: image.source.toString().length > 0
38+ image: Image {
39+ id: image
40+ sourceSize { width: imageShape.width; height: imageShape.height }
41+ asynchronous: true
42+ fillMode: Image.PreserveAspectFit
43+ }
44+ }
45+
46+ Column {
47+ id: contentColumn
48+ spacing: units.gu(1)
49+ width: parent.width - x
50+
51+ Label {
52+ id: titleLabel
53+ objectName: "titleLabel"
54+ fontSize: "large"
55+ color: "white"
56+ style: Text.Raised
57+ styleColor: "black"
58+ opacity: .9
59+ width: parent.width
60+ elide: Text.ElideRight
61+ }
62+
63+ Label {
64+ id: subtitleLabel
65+ objectName: "subtitleLabel"
66+ fontSize: "medium"
67+ color: "white"
68+ style: Text.Raised
69+ styleColor: "black"
70+ opacity: .6
71+ visible: text.length > 0
72+ }
73+
74+ Row {
75+ visible: root.rating >= 0
76+ spacing: units.gu(1)
77+
78+ RatingStars {
79+ id: ratingStars
80+ maximumRating: 10
81+ rating: -1
82+ }
83+
84+ Label {
85+ id: ratedLabel
86+ objectName: "ratedLabel"
87+ fontSize: "medium"
88+ color: "white"
89+ style: Text.Raised
90+ styleColor: "black"
91+ opacity: .6
92+ //TRANSLATORS: Number of persons who rated this app/video/whatever
93+ text: i18n.tr("(%1)").arg(root.rated)
94+ }
95+
96+ Label {
97+ id: reviewsLabel
98+ objectName: "reviewsLabel"
99+ fontSize: "medium"
100+ color: "white"
101+ style: Text.Raised
102+ styleColor: "black"
103+ opacity: .6
104+ //TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
105+ text: i18n.tr("%1 review", "%1 reviews", root.reviews).arg(root.reviews)
106+ }
107+ }
108+ }
109+}
Dash/Apps/AppReviews.qml → Dash/Previews/Reviews.qmlrenamed

The content is the same.

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

Binary file not shown.

Greeter/Gradient.js+7−3
@@ -15,8 +15,12 @@
1515 */
1616
1717function threeColorByIndex(index, total, colors) {
18− var red, green, blue
19− var p = index / total
18+ var red, green, blue;
19+ var p = 0.0;
20+
21+ if(total > 0) {
22+ p = index / total;
23+ }
2024
2125 if (p < 0.5) {
2226 red = (colors.main.r * p * 2.0) + colors.start.r * (0.5 - p) * 2.0;
@@ -28,5 +32,5 @@ function threeColorByIndex(index, total, colors) {
2832 blue = colors.end.b * (p - 0.5) * 2.0 + colors.main.b * (1.0 - p) * 2.0;
2933 }
3034
31− return Qt.rgba(red, green, blue, 1)
35+ return Qt.rgba(red, green, blue, 1);
3236}
Greeter/GreeterContent.qml+11−7
@@ -135,19 +135,23 @@ MouseArea {
135135
136136 Infographics {
137137 id: infographics
138+ objectName: "infographics"
138139 height: narrowMode ? parent.height : 0.75 * parent.height
139140 model: greeterContentLoader.infographicModel
140141
141− Component.onCompleted: infographics.updateUsername(greeterContentLoader.currentIndex)
142+ property string selectedUser
143+ property string infographicUser: AccountsService.statsWelcomeScreen ? selectedUser : ""
144+ onInfographicUserChanged: greeterContentLoader.infographicModel.username = infographicUser
142145
143− Connections {
144− target: root
145− onSelected: infographics.updateUsername(uid)
146+ Component.onCompleted: {
147+ selectedUser = greeterContentLoader.model.data(greeterContentLoader.currentIndex, LightDM.UserRoles.NameRole)
148+ greeterContentLoader.infographicModel.username = infographicUser
149+ greeterContentLoader.infographicModel.readyForDataChange()
146150 }
147151
148− function updateUsername(uid) {
149− greeterContentLoader.infographicModel.username = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
150− greeterContentLoader.infographicModel.readyForDataChangeSlot();
152+ Connections {
153+ target: root
154+ onSelected: infographics.selectedUser = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
151155 }
152156
153157 anchors {
Greeter/Infographics.qml+10−1
@@ -29,21 +29,30 @@ Item {
2929 Connections {
3030 target: model
3131
32+ onDataAboutToAppear: startHideAnimation() // hide "no data" label
3233 onDataAppeared: startShowAnimation()
3334
3435 onDataAboutToChange: startHideAnimation()
35−
3636 onDataChanged: startShowAnimation()
3737
3838 onDataAboutToDisappear: startHideAnimation()
39+ onDataDisappeared: startShowAnimation() // show "no data" label
3940 }
4041
4142 function startShowAnimation() {
43+ dotHideAnimTimer.stop()
44+ circleShrinkAnimTimer.stop()
45+ notification.hideAnim.stop()
46+
4247 dotShowAnimTimer.startFromBeginning()
4348 notification.showAnim.start()
4449 }
4550
4651 function startHideAnimation() {
52+ dotShowAnimTimer.stop()
53+ circleGrowAnimTimer.stop()
54+ notification.showAnim.stop()
55+
4756 dotHideAnimTimer.startFromBeginning()
4857 notification.hideAnim.start()
4958 }
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+49−5
@@ -17,6 +17,8 @@
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import Unity.Notifications 1.0
20+import QMenuModel 0.1
21+import Utils 0.1
2022
2123UbuntuShape {
2224 id: notification
@@ -33,11 +35,30 @@ UbuntuShape {
3335
3436 objectName: "background"
3537 implicitHeight: contentColumn.height + contentColumn.spacing * 2
36− color: Qt.rgba(0, 0, 0, 0.85)
38+ color: Qt.rgba(0.132, 0.117, 0.109, 0.97)
3739 opacity: 0
40+ radius: "medium"
3841
3942 clip: true
4043
44+ UnityMenuModelPaths {
45+ id: paths
46+
47+ source: hints["x-canonical-private-menu-model"]
48+
49+ busNameHint: "busName"
50+ actionsHint: "actions"
51+ menuObjectPathHint: "menuPath"
52+ }
53+
54+ UnityMenuModel {
55+ id: unityMenuModel
56+
57+ busName: paths.busName
58+ actions: paths.actions
59+ menuObjectPath: paths.menuObjectPath
60+ }
61+
4162 Behavior on implicitHeight {
4263 id: heightBehavior
4364
@@ -108,6 +129,8 @@ UbuntuShape {
108129 id: labelColumn
109130 width: parent.width - x
110131
132+ anchors.verticalCenter: (icon.visible && !bodyLabel.visible) ? icon.verticalCenter : undefined
133+
111134 Label {
112135 id: summaryLabel
113136
@@ -141,6 +164,27 @@ UbuntuShape {
141164 }
142165 }
143166
167+ Column {
168+ objectName: "dialogListView"
169+ spacing: units.gu(2)
170+
171+ visible: count > 0
172+
173+ anchors.left: parent.left; anchors.right: parent.right
174+
175+ Repeater {
176+ model: unityMenuModel
177+
178+ NotificationMenuItemFactory {
179+ anchors.left: parent.left; anchors.right: parent.right
180+
181+ menuModel: unityMenuModel
182+ menuData: model
183+ menuIndex: index
184+ }
185+ }
186+ }
187+
144188 Item {
145189 id: buttonRow
146190
@@ -149,8 +193,8 @@ UbuntuShape {
149193 left: parent.left
150194 right: parent.right
151195 }
152− visible: notification.type == Notification.SnapDecision
153− height: units.gu(4)
196+ visible: notification.type == Notification.SnapDecision && actionRepeater.count > 0
197+ height: units.gu(5)
154198
155199 property real buttonWidth: (width - contentColumn.spacing) / 2
156200 property bool expanded
@@ -195,7 +239,7 @@ UbuntuShape {
195239 top: parent.top
196240 bottom: parent.bottom
197241 }
198− gradient: notification.hints == Notification.ButtonTint ? UbuntuColors.orangeGradient : UbuntuColors.greyGradient
242+ gradient: notification.hints["x-canonical-private-button-tint"] == "true" ? UbuntuColors.orangeGradient : UbuntuColors.greyGradient
199243 visible: width > 0
200244 onClicked: notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
201245 }
@@ -241,7 +285,7 @@ UbuntuShape {
241285 }
242286
243287 text: loader.actionLabel
244− height: units.gu(4)
288+ height: units.gu(5)
245289 gradient: UbuntuColors.greyGradient
246290 onClicked: notification.notification.invokeAction(loader.actionId)
247291 }
Notifications/NotificationMenuItemFactory.qmlnew file+96
@@ -0,0 +1,96 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors:
17+ * Nick Dedekind <nick.dedekind@canonical.com>
18+ */
19+
20+import QtQuick 2.0
21+import Ubuntu.Components 0.1
22+import "../Components"
23+import "../Greeter"
24+
25+Loader {
26+ id: menuFactory
27+
28+ property QtObject menuModel: null
29+ property QtObject menuData: null
30+ property int menuIndex
31+ property var notification
32+
33+ property var _map: {
34+ "com.canonical.snapdecision.textfield": textfield,
35+ "com.canonical.snapdecision.pinlock" : pinLock,
36+ }
37+
38+ sourceComponent: {
39+ if (menuData.type !== undefined) {
40+ var component = _map[menuData.type];
41+ if (component !== undefined) {
42+ return component;
43+ }
44+ }
45+ }
46+
47+ Component {
48+ id: textfield
49+
50+ Column {
51+ spacing: units.gu(2)
52+
53+ anchors.left: parent.left; anchors.right: parent.right
54+
55+ Component.onCompleted: {
56+ menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
57+ textfield.echoMode = menuData.ext.xEchoModePassword ? TextInput.Password : TextInput.Normal
58+ }
59+
60+ Label {
61+ text: menuData.label
62+ }
63+
64+ TextField {
65+ id: textfield
66+
67+ anchors.left: parent.left; anchors.right: parent.right
68+ height: units.gu(5)
69+ onTextChanged: {
70+ menuModel.changeState(menuIndex, text);
71+ }
72+ }
73+ }
74+ }
75+
76+ Component {
77+ id: pinLock
78+ PinLockscreen {
79+ anchors.left: parent.left; anchors.right: parent.right
80+
81+ Component.onCompleted: {
82+ menuModel.loadExtendedAttributes(menuIndex, {'x-canonical-pin-length': 'int'});
83+ pinLength = menuData.ext.xCanonicalPinLength;
84+ }
85+
86+ onEntered: {
87+ menuModel.changeState(menuIndex, passphrase);
88+ entryEnabled = false;
89+ }
90+
91+ onCancel: {
92+ menuModel.activate(menuIndex, false);
93+ }
94+ }
95+ }
96+}
Panel/IndicatorRow.qml+51−12
@@ -27,6 +27,8 @@ Item {
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+6−1
@@ -17,6 +17,7 @@
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import Ubuntu.Gestures 0.1
20+import Unity.Indicators 0.1 as Indicators
2021
2122import "../Components"
2223import "../Components/ListItems"
@@ -28,6 +29,8 @@ Showable {
2829 property real openedHeight: units.gu(71)
2930 property int panelHeight: units.gu(3)
3031 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
3134
3235 property int hintValue
3336 readonly property int lockThreshold: openedHeight / 2
@@ -249,8 +252,10 @@ Showable {
249252 anchors.fill: indicatorRow
250253 }
251254
252− IndicatorsDataModel {
255+ Indicators.IndicatorsModel {
253256 id: indicatorsModel
257+
258+ Component.onCompleted: load()
254259 }
255260
256261 IndicatorRow {
Panel/Indicators/DatetimeIndicatorPage.qmldeleted−97
@@ -1,97 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− * Ubo Riboni <ugo.riboni@canonical.com>
19− */
20−
21−import QtQuick 2.0
22−import Ubuntu.Components 0.1
23−
24−Flickable {
25− id: page
26−
27− contentHeight: image.height
28−
29− Image {
30− id: image
31− anchors {
32− left: parent.left
33− right: parent.right
34− }
35− source: "../graphics/time_and_date@18.png"
36− fillMode: Image.PreserveAspectFit
37− }
38−
39− Item {
40− anchors {
41− top: parent.top
42− topMargin: units.gu(5)
43− left: parent.left
44− right: parent.right
45− }
46−
47− height: units.gu(30)
48−
49− Label {
50− id: timeLabel
51− anchors {
52− horizontalCenter: parent.horizontalCenter
53− verticalCenter: parent.verticalCenter
54− }
55−
56− text: ""
57− color: Theme.palette.selected.backgroundText
58− font.weight: Font.Light
59− font.pixelSize: units.gu(6)
60− }
61−
62− Label {
63− id: dateLabel
64−
65− anchors {
66− left: parent.left
67− leftMargin: units.gu(2)
68− bottom: parent.bottom
69− bottomMargin: units.gu(1.5)
70− }
71− text: ""
72− color: Theme.palette.selected.backgroundText
73− fontSize: "small"
74− }
75− }
76−
77− Timer {
78− interval: 1000 * 10 // 10 seconds
79− running: true
80− repeat: true
81− triggeredOnStart: true
82− onTriggered: updateTime();
83− }
84−
85− function updateTime() {
86− var dt = new Date();
87− var time = Qt.formatTime(dt);
88− var space = time.indexOf(" ");
89− timeLabel.text = time.substr(0, space > 0 ? space : 5);
90− dateLabel.text = Qt.formatDateTime(dt, "dddd,\ndd MMMM");
91− }
92−
93− // Make it compatible with the PluginItem interface
94− function start() {}
95− function stop() {}
96− function reset() {}
97−}
Panel/Indicators/DatetimeIndicatorWidget.qmldeleted−67
@@ -1,67 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
23−
24−Indicators.IndicatorWidget {
25− id: indicatorWidget
26−
27− width: timeLabel.width + units.gu(1)
28− rootMenuType: "com.canonical.indicator.root.time"
29−
30− property alias label: timeLabel.text
31−
32− Label {
33− id: timeLabel
34− objectName: "timeLabel"
35− color: Theme.palette.selected.backgroundText
36− opacity: 0.8
37− font.family: "Ubuntu"
38− fontSize: "medium"
39− anchors.centerIn: parent
40− text: Qt.formatTime(timer.dateNow)
41− }
42−
43− Timer {
44− id: timer
45− interval: 1000 * 10
46− running: indicatorWidget.visible
47− repeat: true
48− triggeredOnStart: true
49− property date dateNow
50−
51− onTriggered: dateNow = new Date
52− }
53−
54− onActionStateChanged: {
55− if (action == undefined || !action.valid) {
56− enabled = false;
57− return;
58− }
59−
60− if (action.state == undefined) {
61− enabled = false;
62− return;
63− }
64−
65− enabled = action.state[3];
66− }
67−}
Panel/Indicators/DefaultIndicatorPage.qml+1−1
@@ -18,7 +18,7 @@
1818 */
1919
2020import QtQuick 2.0
21−import Unity.IndicatorsLegacy 0.1 as Indicators
21+import Unity.Indicators 0.1 as Indicators
2222
2323Indicators.IndicatorPage {
2424 anchors.fill: parent
Panel/Indicators/DefaultIndicatorPage2.qmldeleted−25
@@ -1,25 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.Indicators 0.1 as Indicators
22−
23−Indicators.IndicatorPage {
24− anchors.fill: parent
25−}
Panel/Indicators/DefaultIndicatorWidget.qml+47−21
@@ -19,16 +19,16 @@
1919
2020import QtQuick 2.0
2121import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
22+import Unity.Indicators 0.1 as Indicators
2323
2424Indicators.IndicatorWidget {
2525 id: indicatorWidget
2626
27− enabled:true
2827 width: itemRow.width + units.gu(0.5)
2928
30− property alias label: itemLabel.text
31− property alias iconSource: itemImage.source
29+ property alias leftLabel: itemLeftLabel.text
30+ property alias rightLabel: itemRightLabel.text
31+ property var icons: undefined
3232
3333 Row {
3434 id: itemRow
@@ -40,19 +40,43 @@ Indicators.IndicatorWidget {
4040 }
4141 spacing: units.gu(0.5)
4242
43− // FIXME : Should us Ubuntu.Icon . results in low res images
44− Image {
45− id: itemImage
46− objectName: "itemImage"
47− visible: source != ""
48− height: indicatorWidget.iconSize
49− width: indicatorWidget.iconSize
43+ Label {
44+ id: itemLeftLabel
45+ objectName: "leftLabel"
46+ color: Theme.palette.selected.backgroundText
47+ opacity: 0.8
48+ font.family: "Ubuntu"
49+ fontSize: "medium"
5050 anchors.verticalCenter: parent.verticalCenter
51+ visible: text != ""
52+ }
53+
54+ Row {
55+ width: childrenRect.width
56+ anchors {
57+ top: parent.top
58+ bottom: parent.bottom
59+ }
60+ spacing: units.gu(0.5)
61+
62+ Repeater {
63+ model: indicatorWidget.icons
64+
65+ Image {
66+ id: itemImage
67+ objectName: "itemImage"
68+ visible: source != ""
69+ source: modelData
70+ height: indicatorWidget.iconSize
71+ width: indicatorWidget.iconSize
72+ anchors.verticalCenter: parent.verticalCenter
73+ }
74+ }
5175 }
5276
5377 Label {
54− id: itemLabel
55− objectName: "itemLabel"
78+ id: itemRightLabel
79+ objectName: "rightLabel"
5680 color: Theme.palette.selected.backgroundText
5781 opacity: 0.8
5882 font.family: "Ubuntu"
@@ -62,16 +86,18 @@ Indicators.IndicatorWidget {
6286 }
6387 }
6488
65− onActionStateChanged: {
66− if (action == undefined || !action.valid) {
67− return;
68− }
69−
70− if (action.state == undefined) {
89+ onRootActionStateChanged: {
90+ if (rootActionState == undefined) {
91+ leftLabel = "";
92+ rightLabel = "";
93+ icons = undefined;
94+ enabled = false;
7195 return;
7296 }
7397
74− label = action.state[Indicators.ActionState.Label];
75− iconSource = "image://theme/" + action.state[Indicators.ActionState.IconSource];
98+ leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
99+ rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
100+ icons = rootActionState.icons;
101+ enabled = rootActionState.visible;
76102 }
77103}
Panel/Indicators/DefaultIndicatorWidget2.qmldeleted−103
@@ -1,103 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.Indicators 0.1 as Indicators
23−
24−Indicators.IndicatorWidget {
25− id: indicatorWidget
26−
27− width: itemRow.width + units.gu(0.5)
28−
29− property alias leftLabel: itemLeftLabel.text
30− property alias rightLabel: itemRightLabel.text
31− property var icons: undefined
32−
33− Row {
34− id: itemRow
35− objectName: "itemRow"
36− anchors {
37− top: parent.top
38− bottom: parent.bottom
39− horizontalCenter: parent.horizontalCenter
40− }
41− spacing: units.gu(0.5)
42−
43− Label {
44− id: itemLeftLabel
45− objectName: "leftLabel"
46− color: Theme.palette.selected.backgroundText
47− opacity: 0.8
48− font.family: "Ubuntu"
49− fontSize: "medium"
50− anchors.verticalCenter: parent.verticalCenter
51− visible: text != ""
52− }
53−
54− Row {
55− width: childrenRect.width
56− anchors {
57− top: parent.top
58− bottom: parent.bottom
59− }
60− spacing: units.gu(0.5)
61−
62− Repeater {
63− model: indicatorWidget.icons
64−
65− Image {
66− id: itemImage
67− objectName: "itemImage"
68− visible: source != ""
69− source: modelData
70− height: indicatorWidget.iconSize
71− width: indicatorWidget.iconSize
72− anchors.verticalCenter: parent.verticalCenter
73− }
74− }
75− }
76−
77− Label {
78− id: itemRightLabel
79− objectName: "rightLabel"
80− color: Theme.palette.selected.backgroundText
81− opacity: 0.8
82− font.family: "Ubuntu"
83− fontSize: "medium"
84− anchors.verticalCenter: parent.verticalCenter
85− visible: text != ""
86− }
87− }
88−
89− onActionStateChanged: {
90− if (actionState == undefined) {
91− leftLabel = "";
92− rightLabel = "";
93− icons = undefined;
94− enabled = false;
95− return;
96− }
97−
98− leftLabel = actionState.leftLabel ? actionState.leftLabel : "";
99− rightLabel = actionState.rightLabel ? actionState.rightLabel : "";
100− icons = actionState.icons;
101− enabled = actionState.visible;
102− }
103−}
Panel/Indicators/MessagingIndicatorPage.qmldeleted−35
@@ -1,35 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
23−
24−Indicators.IndicatorPage {
25− anchors.fill: parent
26−
27− highlightFollowsCurrentItem: false
28− emptyText: "You have no more outstanding messages."
29−
30− function stop() {
31− // never stops the service
32− // this will keep all objects in memory, consume more memory
33− // but will optimize the menu contruction on the screen
34− }
35−}
Panel/Indicators/MessagingIndicatorWidget.qmldeleted−25
@@ -1,25 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−
22−DefaultIndicatorWidget {
23− // default the icon so we have something to show when we don't have the bus.
24− iconSource: "image://theme/indicator-messages"
25−}
Panel/Indicators/NetworkIndicatorPage.qmldeleted−83
@@ -1,83 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.IndicatorsLegacy 0.1 as Indicators
22−import Unity.IndicatorsLegacy.Network 0.1 as ICNetwork
23−import Ubuntu.Components 0.1
24−
25−PageStack {
26− id: networkPage
27− // Stops the search for a parent tree node.
28− // We don't want it going up to the indicator tabs.
29− // FIXME: need a better way of doing this.
30− // https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1211704
31− __propagated: null
32−
33− property alias title: _mainPage.title
34− property alias emptyText: pluginItem.emptyText
35− property alias busType: pluginItem.busType
36− property alias busName: pluginItem.busName
37− property alias actionsObjectPath : pluginItem.actionsObjectPath
38− property alias menuObjectPaths : pluginItem.menuObjectPaths
39−
40− anchors.fill: parent
41−
42− Page {
43− id: _mainPage
44−
45− Indicators.IndicatorPage {
46− id: pluginItem
47− anchors.fill: parent
48− }
49− }
50−
51− Component {
52− id: passwordPageComponent
53−
54− ICNetwork.PasswordPage {
55− agent: networkAgent
56− }
57− }
58−
59− ICNetwork.NetworkAgent {
60− id: networkAgent
61−
62− onSecretRequested: {
63− networkPage.push(passwordPageComponent, {"token": token});
64− }
65− }
66−
67− function start()
68− {
69− push(_mainPage);
70− pluginItem.start();
71− }
72−
73− function stop()
74− {
75− clear();
76− pluginItem.stop();
77− }
78−
79− function reset()
80− {
81− pluginItem.reset();
82− }
83−}
Panel/Indicators/NetworkIndicatorPage2.qmldeleted−82
@@ -1,82 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.Indicators 0.1 as Indicators
22−import Unity.Indicators.Network 0.1 as ICNetwork
23−import Ubuntu.Components 0.1
24−
25−PageStack {
26− id: networkPage
27− // Stops the search for a parent tree node.
28− // We don't want it going up to the indicator tabs.
29− // FIXME: need a better way of doing this.
30− // https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1211704
31− __propagated: null
32−
33− property alias title: _mainPage.title
34− property alias emptyText: pluginItem.emptyText
35− property alias busName: pluginItem.busName
36− property alias actionsObjectPath : pluginItem.actionsObjectPath
37− property alias menuObjectPaths : pluginItem.menuObjectPaths
38−
39− anchors.fill: parent
40−
41− Page {
42− id: _mainPage
43−
44− Indicators.IndicatorPage {
45− id: pluginItem
46− anchors.fill: parent
47− }
48− }
49−
50− Component {
51− id: passwordPageComponent
52−
53− ICNetwork.PasswordPage {
54− agent: networkAgent
55− }
56− }
57−
58− ICNetwork.NetworkAgent {
59− id: networkAgent
60−
61− onSecretRequested: {
62− networkPage.push(passwordPageComponent, {"token": token});
63− }
64− }
65−
66− function start()
67− {
68− push(_mainPage);
69− pluginItem.start();
70− }
71−
72− function stop()
73− {
74− clear();
75− pluginItem.stop();
76− }
77−
78− function reset()
79− {
80− pluginItem.reset();
81− }
82−}
Panel/Indicators/NetworkIndicatorWidget.qmldeleted−112
@@ -1,112 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
23−
24−Indicators.IndicatorWidget {
25− id: indicatorWidget
26−
27− width: networkIcon.width + units.gu(0.5)
28−
29− property int signalStrength: 0
30− property int connectionState: Indicators.NetworkConnection.Initial
31− rootMenuType: "com.canonical.indicator.root.network"
32−
33− // FIXME : Should us Ubuntu.Icon . results in low res images
34− Image {
35− id: networkIcon
36− objectName: "itemImage"
37− source: get_icon_for_signal(connectionState, signalStrength)
38− visible: source != ""
39− height: indicatorWidget.iconSize
40− width: indicatorWidget.iconSize
41− anchors.centerIn: parent
42− }
43−
44− onActionStateChanged: {
45− if (action == undefined || !action.valid) {
46− enabled = false;
47− return;
48− }
49−
50− if (action.state == undefined) {
51− enabled = false;
52− connectionState = 0;
53− return;
54− }
55−
56− enabled = true;
57− connectionState = action.state[Indicators.NetworkActionState.Connection];
58− if (connectionState == Indicators.NetworkConnection.Activated) {
59− signalStrength = action.state[Indicators.NetworkActionState.SignalStrength];
60− }
61− }
62−
63− NumberAnimation {
64− id: activation_animation
65− target: indicatorWidget
66− property: "signalStrength"
67− from: 0
68− to: 100
69− duration: 2500 // 5 states in 2.5 seconds
70− loops: Animation.Infinite
71− }
72−
73− states: [
74− State {
75− name: "unknown"
76− when: connectionState < Indicators.NetworkConnection.Activating || connectionState > Indicators.NetworkConnection.Deactivating
77− PropertyChanges { target: activation_animation; running: false }
78− },
79− State {
80− name: "activating"
81− when: connectionState == Indicators.NetworkConnection.Activating
82− PropertyChanges { target: activation_animation; running: true }
83− },
84− State {
85− name: "activated"
86− when: connectionState == Indicators.NetworkConnection.Activated
87− PropertyChanges { target: activation_animation; running: false }
88− },
89− State {
90− name: "deactivating"
91− when: connectionState == Indicators.NetworkConnection.Deactivating
92− PropertyChanges { target: activation_animation; running: true }
93− }
94− ]
95−
96−
97− function get_icon_for_signal(con_state, value) {
98− if (con_state >= Indicators.NetworkConnection.Activating && con_state <= Indicators.NetworkConnection.Deactivating) {
99− if (value == 0) {
100− return "image://theme/nm-signal-00";
101− } else if (value <= 25) {
102− return "image://theme/nm-signal-25";
103− } else if (value <= 50) {
104− return "image://theme/nm-signal-50";
105− } else if (value <= 75) {
106− return "image://theme/nm-signal-75";
107− }
108− return "image://theme/nm-signal-100";
109− }
110− return "image://theme/wifi-none";
111− }
112−}
Panel/Indicators/SoundIndicatorWidget.qmldeleted−26
@@ -1,26 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−
22−DefaultIndicatorWidget {
23− // default the icon so we have something to show when we don't have the bus.
24− iconSource: "image://theme/audio-volume-high"
25− enabled: true
26−}
Panel/Indicators/client/IndicatorsList.qml+14−9
@@ -20,7 +20,7 @@
2020import QtQuick 2.0
2121import Ubuntu.Components 0.1
2222import Ubuntu.Components.ListItems 0.1 as ListItem
23−import Unity.IndicatorsLegacy 0.1 as Indicators
23+import Unity.Indicators 0.1 as Indicators
2424import "../.."
2525
2626Page {
@@ -28,8 +28,10 @@ Page {
2828 anchors.fill: parent
2929 title: "Plugin list"
3030
31− IndicatorsDataModel {
31+ Indicators.IndicatorsModel {
3232 id: indicatorsModel
33+
34+ Component.onCompleted: load()
3335 }
3436
3537 ListView {
@@ -38,22 +40,25 @@ Page {
3840 anchors.fill: parent
3941 model: indicatorsModel
4042
41− delegate: Indicators.MenuItem {
43+ delegate: Indicators.FramedMenuItem {
4244 anchors.left: parent.left
4345 anchors.right: parent.right
4446 objectName: identifier
4547
46− Label {
47− anchors.left: parent.left
48− anchors.leftMargin: units.gu(0.5)
49− anchors.verticalCenter: parent.verticalCenter
50− text: title
51− }
48+ text: identifier
5249
5350 onClicked: {
5451 var new_page = Qt.createComponent("IndicatorsPage.qml");
5552 page.pageStack.push(new_page.createObject(pages), {"indicatorProperties" : model.indicatorProperties, "pageSource" : model.pageSource});
5653 }
54+
55+ Rectangle {
56+ id: background
57+
58+ anchors.fill: parent
59+ color: "#221e1c"
60+ z: -1
61+ }
5762 }
5863 }
5964}
Panel/Indicators/client/IndicatorsTree.qml+4
@@ -44,6 +44,10 @@ Page {
4444 menuObjectPath: page.deviceMenuObjectPath
4545 }
4646
47+ Indicators.RootActionState {
48+ menu: unityModel
49+ }
50+
4751 Indicators.ModelPrinter {
4852 id: printer
4953 model: unityModel
Panel/IndicatorsDataModel.qmldeleted−79
@@ -1,79 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.Indicators 0.1 as Indicators
22−import Utils 0.1
23−
24−Indicators.IndicatorsModel {
25− id: ic_model
26−
27− Component.onCompleted: load()
28−
29− indicatorData : {
30− 'indicator-location' : {
31− 'title': 'Location',
32− 'description' : '',
33− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
34− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
35− },
36− 'indicator-bluetooth' : {
37− 'title': 'Bluetooth',
38− 'description' : '',
39− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
40− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
41− },
42− 'indicator-messages' : {
43− 'title': 'Messaging',
44− 'description' : '',
45− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
46− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
47− },
48− 'indicator-sound' : {
49− 'title': 'Sound',
50− 'description' : '',
51− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
52− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
53− },
54− 'indicator-network' : {
55− 'title': 'Networks',
56− 'description' : '',
57− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
58− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorPage2.qml'
59− },
60− 'indicator-power' : {
61− 'title': 'Battery',
62− 'description' : '',
63− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
64− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
65− },
66− 'indicator-session' : {
67− 'title': 'Session',
68− 'description' : '',
69− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
70− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
71− },
72− 'indicator-datetime' : {
73− 'title': 'Date and Time',
74− 'description' : '',
75− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget2.qml',
76− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage2.qml'
77− }
78− }
79−}
Panel/MenuContent.qml+9−2
@@ -100,16 +100,17 @@ MainView {
100100 Tab {
101101 id: tab
102102 objectName: model.identifier
103− title: model.title
104103
105104 page: Page {
106105 Loader {
106+ id: loader
107107 clip: true
108108 anchors.fill: parent
109109 source: pageSource
110110 asynchronous: true
111111
112− property bool contentActive: content.__contentActive && menuActivator.content[index].active
112+ readonly property bool indexActive: index >= 0 && index < menuActivator.count && menuActivator.content[index].active
113+ readonly property bool contentActive: content.__contentActive && indexActive
113114
114115 onContentActiveChanged: {
115116 if (contentActive && item) {
@@ -136,6 +137,12 @@ MainView {
136137 item.start()
137138 }
138139 }
140+
141+ Binding {
142+ target: tab
143+ property: "title"
144+ value: loader.item && loader.item.hasOwnProperty("title") && loader.item.title !== "" ? loader.item.title : model.identifier
145+ }
139146 }
140147 }
141148 }
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+64−47
@@ -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);
538− greeter.show();
539− } else if (status == Powerd.On) {
540− powerConnection.setFocused(true);
548+ greeter.showNow();
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
@@ -623,6 +627,7 @@ FocusScope {
623627 }
624628
625629 Bottombar {
630+ id: bottombar
626631 theHud: hud
627632 anchors.fill: parent
628633 enabled: hud.available
@@ -650,7 +655,7 @@ FocusScope {
650655 onDashItemSelected: showHome()
651656 onDash: {
652657 if (stages.shown) {
653− dash.setCurrentScope("applications.scope", true, false)
658+ dash.setCurrentScope("applications.scope", true /* animate */, true /* reset */)
654659 stages.hide();
655660 launcher.hide();
656661 }
@@ -663,6 +668,7 @@ FocusScope {
663668 if (shown) {
664669 panel.indicators.hide()
665670 hud.hide()
671+ bottombar.hide()
666672 }
667673 }
668674 }
@@ -692,10 +698,17 @@ FocusScope {
692698 PropertyChanges { target: notifications; width: units.gu(38) }
693699 }
694700 ]
701+
702+ InputFilterArea {
703+ anchors { left: parent.left; right: parent.right }
704+ height: parent.contentHeight
705+ blockInput: height > 0
706+ }
695707 }
696708 }
697709
698710 focus: true
711+ onFocusChanged: if (!focus) forceActiveFocus();
699712
700713 InputFilterArea {
701714 anchors {
@@ -723,6 +736,10 @@ FocusScope {
723736 value: "unity8"
724737 }
725738
739+ OSKController {
740+ anchors.fill: parent // as needs to know the geometry of the shell
741+ }
742+
726743 //FIXME: This should be handled in the input stack, keyboard shouldnt propagate
727744 MouseArea {
728745 anchors.bottom: parent.bottom
debian/changelog+212
@@ -1,3 +1,215 @@
1+unity8 (7.82+13.10.20131010-0ubuntu1) saucy; urgency=low
2+
3+ [ David Callé ]
4+ * Small logic change in preview descriptions line breaks. Multiple new
5+ lines are now replaced by multiple br tags.
6+
7+ [ Nick Dedekind ]
8+ * Use indicator identifier for indicators-client list item label.
9+ * Make sure overflow indicators are hidden and not the search label.
10+
11+ [ Mirco Müller ]
12+ * Tweaks to notifications to improve spec-compliance. - updated
13+ notifications-qmltest to reflect the use of a variant-map for the
14+ hints - made text-fields as heigh as buttons - made the summary
15+ align horizontally to the icon - updated button-height and bubble-
16+ background.
17+
18+ [ Pawel Stolowski ]
19+ * Handle category_order_changes signal from scopes (used in Home only)
20+ and reorder categories accordingly.
21+ * Implementation of albumart image provider for audio content.
22+
23+ [ Michael Terry ]
24+ * Hide the greeter when an app is focused, fixing snap decisions
25+ launching an app in the greeter (like receiving a call).
26+
27+ [ Michael Zanetti ]
28+ * Launcher - remove support for pinning items in the backend After the
29+ latest design changes, recent apps is everything that is contained
30+ in the ApplicationManager. So no need for storing anything else than
31+ pinned apps in the config.
32+
33+ [ Michał Sawicz ]
34+ * Remove the mir socket before starting unity8 during autopilot tests.
35+
36+ [ Ubuntu daily release ]
37+ * Automatic snapshot from revision 420
38+
39+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 10 Oct 2013 04:15:13 +0000
40+
41+unity8 (7.82+13.10.20131008.1-0ubuntu1) saucy; urgency=low
42+
43+ [ Michal Hruby ]
44+ * Add Scope::isActive property and corresponding tests. (LP: #1230352)
45+
46+ [ Daniel d'Andrada ]
47+ * Move OSKController to the front as it will now also block input
48+ meant to the OSK That's in the unity-mir implementation. The
49+ SurfaceFlinger one is still an empty noop. Currently, when the OSK
50+ is up, both shell and OSK get user input, thus we need the
51+ OSKController to shield our shell components from them. (LP:
52+ #1236773)
53+
54+ [ Michał Sawicz ]
55+ * Add Scope::isActive property and corresponding tests. (LP: #1230352)
56+ * Force focus back on shell in case it loses it for some reason.
57+
58+ [ Ubuntu daily release ]
59+ * Automatic snapshot from revision 409
60+
61+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 08 Oct 2013 19:14:20 +0000
62+
63+unity8 (7.82+13.10.20131008-0ubuntu1) saucy; urgency=low
64+
65+ [ Michał Sawicz ]
66+ * update previews to match design. (LP: #1224555)
67+ * Add an InputFilterArea in Notifications. (LP: #1233411, #1235215)
68+
69+ [ Ying-Chun Liu ]
70+ * update previews to match design. (LP: #1224555)
71+
72+ [ Albert Astals ]
73+ * Unrevert 376 by reverting r395 and a small fix to fix the cpu
74+ hogging issue . (LP: #1124567)
75+
76+ [ Michael Terry ]
77+ * Add Showable.showNow() method and use it in Shell to immediately
78+ show greeter when we blank the screen rather than animating it. (LP:
79+ #1233564)
80+
81+ [ Michael Zanetti ]
82+ * update previews to match design. (LP: #1224555)
83+
84+ [ Diego Sarmentero ]
85+ * update previews to match design. (LP: #1224555)
86+
87+ [ Ubuntu daily release ]
88+ * Automatic snapshot from revision 404
89+
90+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 08 Oct 2013 02:57:55 +0000
91+
92+unity8 (7.82+13.10.20131007-0ubuntu1) saucy; urgency=low
93+
94+ [ Michał Sawicz ]
95+ * Respect pre-set import and library paths and prevent segfault in
96+ startShell.
97+
98+ [ Ubuntu daily release ]
99+ * Automatic snapshot from revision 399
100+
101+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 07 Oct 2013 07:10:46 +0000
102+
103+unity8 (7.82+13.10.20131005-0ubuntu1) saucy; urgency=low
104+
105+ [ Michał Sawicz ]
106+ * Revert r376 that caused constant CPU usage due to the
107+ ActivityIndicator.
108+
109+ [ Nick Dedekind ]
110+ * Removed indicators-client autopilot tests. (LP: #1234736)
111+
112+ [ Albert Astals ]
113+ * Revert r388. (LP: #1235268)
114+
115+ [ Christopher Lee ]
116+ * Removes passing -fullscreen to unity8 when on the device (as per bug
117+ #1235065). (LP: #1235065)
118+
119+ [ Ubuntu daily release ]
120+ * Automatic snapshot from revision 396
121+
122+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Sat, 05 Oct 2013 11:45:14 +0000
123+
124+unity8 (7.82+13.10.20131004.2-0ubuntu1) saucy; urgency=low
125+
126+ * Revert 7.82+13.10.20131004.1-0ubuntu1 back to
127+ 7.81.3+13.10.20130927.3-0ubuntu1 due to CPU hogging issue with
128+ 7.82+13.10.20131004.1-0ubuntu1.
129+
130+ -- Loïc Minier <loic.minier@ubuntu.com> Fri, 04 Oct 2013 21:22:29 +0200
131+
132+unity8 (7.82+13.10.20131004.1-0ubuntu1) saucy; urgency=low
133+
134+ [ Michał Sawicz ]
135+ * Bump to indicate support for extended snap decisions.
136+ * Make Tile themeable, add renderers for Dash Plugins and weather.
137+ (LP: #1231948)
138+ * Drop network agents now that they're in indicator-network instead.
139+
140+ [ Michal Hruby ]
141+ * Differentiate generic and music carousels.
142+ * Use the thumbnailer image provider for scope results that don't
143+ specify icon as well as for previews.
144+ * Added an indicator which is displayed in the search bar whenever a
145+ search is in progress. Added accompanying test in tst_PageHeader.
146+ * Expose rendererHint to shell.
147+
148+ [ Albert Astals ]
149+ * Update pot file. (LP: #1232374)
150+ * Only enable the animation when the item is on screen (i.e. !culled)
151+ . (LP: #1200374)
152+ * Do not crash on positionAtBeginning if the list is empty .
153+ * Enable/disable running apps height animation in a less error prone
154+ way.
155+
156+ [ Michael Terry ]
157+ * Use a chevron after 'Skip intro' and drop the underlining.
158+ * Load testability driver when QT_LOAD_TESTABILITY is set. (LP:
159+ #1226234)
160+ * Listen to the system setting StatsWelcomeScreen, which tells us
161+ whether to show user-specific infographic data in the greeter. (LP:
162+ #1207857)
163+
164+ [ Gerry Boland ]
165+ * WM: ensure focusedApplicationWhenUsingScreenshots reset when unused,
166+ and only used when set. Fixes window focus conflict between shell
167+ and ApplicationManager.
168+
169+ [ Nick Dedekind ]
170+ * Removed deprecated Unity.IndicatorsLegacy plugin.
171+ * Added actionState parser to the indicators-client text printer so
172+ that we get the icon.
173+ * Moved indicator page titles to the root action state of menu model.
174+ (LP: #1223635)
175+
176+ [ Mirco Müller ]
177+ * Added rendering- and interaction-support for the first three
178+ extended snap-decision dialog-cases password-entry, user-
179+ authentication and simunlock.
180+
181+ [ Daniel d'Andrada ]
182+ * Revert the reversion of r304 since it doesn't seem to crash anymore
183+ Original commit was Reset apps scope when returning from app to dash
184+ (LP #1193419) If an app is on foreground and you perform a long
185+ left-edge swipe to minimize it, and therefore return to the dash,
186+ the dash should be in the Applications scope and showing the
187+ running/recents applications. (LP: #1193419)
188+
189+ [ Andrea Cimitan ]
190+ * Add behaviours to the hud reveal. (LP: #1224480, #1224633)
191+ * Make Tile themeable, add renderers for Dash Plugins and weather.
192+ (LP: #1231948)
193+
194+ [ Michael Zanetti ]
195+ * fix inserting into quicklistmodel.
196+ * Drop useStorage argument and use exising LAUNCHER_TESTING define for
197+ this decision.
198+
199+ [ Omer Akram ]
200+ * Make the volume/brightness slider changes realtime. (LP: #1227595)
201+
202+ [ Nicolas d'Offay ]
203+ * Fixed black colour on the first of the month due to division. (LP:
204+ #1233657)
205+ * Added an indicator which is displayed in the search bar whenever a
206+ search is in progress. Added accompanying test in tst_PageHeader.
207+
208+ [ Ubuntu daily release ]
209+ * Automatic snapshot from revision 390
210+
211+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 04 Oct 2013 06:55:16 +0000
212+
1213unity8 (7.81.3+13.10.20130927.3-0ubuntu1) saucy; urgency=low
2214
3215 [ Michal Hruby ]
debian/control+5−8
@@ -14,8 +14,6 @@ Build-Depends: cmake,
1414 libjson-perl,
1515 libnih-dbus-dev,
1616 libnih-dev,
17− libnm-glib-dev,
18− libnm-util-dev,
1917 libpulse-dev,
2018 libqmenumodel-dev (>= 0.2.7),
2119 libqt5v8-5-private-dev,
@@ -28,6 +26,7 @@ Build-Depends: cmake,
2826 libupstart-dev,
2927 libusermetricsoutput1-dev,
3028 libxcb1-dev,
29+ libglib2.0-dev,
3130 pkg-config,
3231 python:any (>= 2.7),
3332 python-setuptools,
@@ -43,6 +42,7 @@ Build-Depends: cmake,
4342 qtdeclarative5-test-plugin,
4443 qtdeclarative5-ubuntu-ui-toolkit-plugin,
4544 qtdeclarative5-xmllistmodel-plugin,
45+ libqt5xmlpatterns5-dev,
4646 ttf-ubuntu-font-family,
4747Standards-Version: 3.9.4
4848Homepage: http://launchpad.net/unity
@@ -74,23 +74,20 @@ Depends: gsettings-desktop-schemas,
7474 qtdeclarative5-unity-notifications-plugin | unity-notifications-impl,
7575 qtdeclarative5-xmllistmodel-plugin,
7676 unity-launcher-impl-3,
77− unity-notifications-impl-1,
77+ unity-notifications-impl-2,
7878 unity8-fake-env | qtubuntu-shell,
7979 unity8-private (= ${binary:Version}),
8080 unity8-private | unity-launcher-impl,
8181 ${misc:Depends},
8282 ${shlibs:Depends},
83−Recommends: indicator-battery,
84− indicator-messages,
85− indicator-time,
86− ${unity-default-masterscopes},
83+Recommends: ${unity-default-masterscopes},
84+Breaks: indicator-network (<< 0.5.1)
8785Description: Unity 8 shell
8886 The Unity 8 shell is the primary user interface for Ubuntu devices.
8987
9088Package: unity8-autopilot
9189Architecture: all
9290Depends: gir1.2-glib-2.0,
93− indicators-client (>= ${source:Version}),
9491 libautopilot-qt,
9592 libqt5test5,
9693 libqt5widgets5,
main.cpp+4−4
@@ -113,7 +113,7 @@ int startShell(int argc, const char** argv, void* server)
113113
114114 // The testability driver is only loaded by QApplication but not by QGuiApplication.
115115 // However, QApplication depends on QWidget which would add some unneeded overhead => Let's load the testability driver on our own.
116− if (args.contains(QLatin1String("-testability"))) {
116+ if (args.contains(QLatin1String("-testability")) || getenv("QT_LOAD_TESTABILITY")) {
117117 QLibrary testLib(QLatin1String("qttestability"));
118118 if (testLib.load()) {
119119 typedef void (*TasInitialize)(void);
@@ -160,10 +160,10 @@ int startShell(int argc, const char** argv, void* server)
160160 prependImportPaths(view->engine(), ::overrideImportPaths());
161161 appendImportPaths(view->engine(), ::fallbackImportPaths());
162162
163− QStringList importPath = view->engine()->importPathList().filter("qt5/imports");
164163 if (isUbuntuMirServer) {
165− importPath.first().append("/Unity-Mir");
166− view->engine()->addImportPath(importPath.first());
164+ QStringList importPaths = view->engine()->importPathList();
165+ importPaths.replaceInStrings(QRegExp("qt5/imports$"), "qt5/imports/Unity-Mir");
166+ view->engine()->setImportPathList(importPaths);
167167 }
168168
169169 view->setSource(source);
plugins/AccountsService/AccountsService.cpp+19
@@ -44,6 +44,7 @@ void AccountsService::setUser(const QString &user)
4444
4545 updateDemoEdges();
4646 updateBackgroundFile();
47+ updateStatsWelcomeScreen();
4748}
4849
4950bool AccountsService::demoEdges() const
@@ -62,6 +63,11 @@ QString AccountsService::backgroundFile() const
6263 return m_backgroundFile;
6364}
6465
66+bool AccountsService::statsWelcomeScreen() const
67+{
68+ return m_statsWelcomeScreen;
69+}
70+
6571void AccountsService::updateDemoEdges()
6672{
6773 auto demoEdges = m_service->getUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges").toBool();
@@ -80,6 +86,15 @@ void AccountsService::updateBackgroundFile()
8086 }
8187}
8288
89+void AccountsService::updateStatsWelcomeScreen()
90+{
91+ bool statsWelcomeScreen = m_service->getUserProperty(m_user, "com.ubuntu.touch.AccountsService.SecurityPrivacy", "StatsWelcomeScreen").toBool();
92+ if (m_statsWelcomeScreen != statsWelcomeScreen) {
93+ m_statsWelcomeScreen = statsWelcomeScreen;
94+ Q_EMIT statsWelcomeScreenChanged();
95+ }
96+}
97+
8398void AccountsService::propertiesChanged(const QString &user, const QString &interface, const QStringList &changed)
8499{
85100 if (m_user != user) {
@@ -90,6 +105,10 @@ void AccountsService::propertiesChanged(const QString &user, const QString &inte
90105 if (changed.contains("demo-edges")) {
91106 updateDemoEdges();
92107 }
108+ } else if (interface == "com.ubuntu.touch.AccountsService.SecurityPrivacy") {
109+ if (changed.contains("StatsWelcomeScreen")) {
110+ updateStatsWelcomeScreen();
111+ }
93112 }
94113}
95114
plugins/AccountsService/AccountsService.h+7
@@ -38,6 +38,9 @@ class AccountsService: public QObject
3838 Q_PROPERTY (QString backgroundFile
3939 READ backgroundFile
4040 NOTIFY backgroundFileChanged)
41+ Q_PROPERTY (bool statsWelcomeScreen
42+ READ statsWelcomeScreen
43+ NOTIFY statsWelcomeScreenChanged)
4144
4245public:
4346 explicit AccountsService(QObject *parent = 0);
@@ -47,11 +50,13 @@ public:
4750 bool demoEdges() const;
4851 void setDemoEdges(bool demoEdges);
4952 QString backgroundFile() const;
53+ bool statsWelcomeScreen() const;
5054
5155Q_SIGNALS:
5256 void userChanged();
5357 void demoEdgesChanged();
5458 void backgroundFileChanged();
59+ void statsWelcomeScreenChanged();
5560
5661private Q_SLOTS:
5762 void propertiesChanged(const QString &user, const QString &interface, const QStringList &changed);
@@ -60,11 +65,13 @@ private Q_SLOTS:
6065private:
6166 void updateDemoEdges();
6267 void updateBackgroundFile();
68+ void updateStatsWelcomeScreen();
6369
6470 AccountsServiceDBusAdaptor *m_service;
6571 QString m_user;
6672 bool m_demoEdges;
6773 QString m_backgroundFile;
74+ bool m_statsWelcomeScreen;
6875};
6976
7077#endif
plugins/ListViewWithPageHeader/listviewwithpageheader.cpp+3
@@ -327,6 +327,9 @@ void ListViewWithPageHeader::setForceNoClip(bool noClip)
327327
328328void ListViewWithPageHeader::positionAtBeginning()
329329{
330+ if (m_delegateModel->count() <= 0)
331+ return;
332+
330333 qreal headerHeight = (m_headerItem ? m_headerItem->height() : 0);
331334 if (m_firstVisibleIndex != 0) {
332335 // TODO This could be optimized by trying to reuse the interesection
plugins/Unity/CMakeLists.txt+1−2
@@ -2,12 +2,11 @@
22include(Plugins)
33
44add_subdirectory(Indicators)
5−add_subdirectory(IndicatorsLegacy)
65
76# Dependencies
87include(FindPkgConfig)
98pkg_check_modules(QTDEE REQUIRED libdee-qt5>=3.2)
10−pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0)
9+pkg_check_modules(UNITYCORE REQUIRED unity-core-6.0>=7.1.1)
1110
1211include_directories(
1312 ${CMAKE_CURRENT_SOURCE_DIR}
plugins/Unity/Indicators/Messaging/qml/QuickReply.qml+1−1
@@ -20,7 +20,7 @@
2020
2121import QtQuick 2.0
2222import Ubuntu.Components 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
23+import Unity.Indicators 0.1 as Indicators
2424
2525Item {
2626 id: quickReply
plugins/Unity/Indicators/Network/CMakeLists.txt−44
@@ -1,45 +1 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−project(IndicatorsNetworkQml)
5−
6−pkg_check_modules(GLIB glib-2.0>=2.32)
7−pkg_check_modules(LIBNM_GLIB libnm-glib>=0.9.6)
8−pkg_check_modules(LIBNM_UTIL libnm-util>=0.9.6)
9−
10−if(LIBNM_GLIB_FOUND AND LIBNM_UTIL_FOUND AND GLIB_FOUND)
11− set(INDICATORS_NETWORK_SRC
12− networkagent.cpp
13− plugin.cpp
14− secret-agent.c
15− )
16−
17− add_library(IndicatorsNetworkQml MODULE
18− ${INDICATORS_NETWORK_SRC}
19− )
20−
21− qt5_use_modules(IndicatorsNetworkQml Core Qml Widgets)
22−
23− set_target_properties(IndicatorsNetworkQml PROPERTIES COMPILE_FLAGS -fPIC)
24−
25− include_directories(
26− ${CMAKE_CURRENT_SOURCE_DIR}
27− ${GLIB_INCLUDE_DIRS}
28− ${LIBNM_GLIB_INCLUDE_DIRS}
29− ${LIBNM_UTIL_INCLUDE_DIRS}
30− )
31−
32− target_link_libraries(IndicatorsNetworkQml
33− ${GLIB_LIBRARIES}
34− ${LIBNM_GLIB_LIBRARIES}
35− ${LIBNM_UTIL_LIBRARIES}
36− )
37−
38− # export the qmltypes and plugin files
39− export_qmlplugin(Unity.Indicators.Network 0.1 Unity/Indicators/Network TARGETS IndicatorsNetworkQml)
40−
41−else()
42− message(WARNING "Missing glib or libnm dependency for the network plugin, not building")
43−endif()
44−
451add_subdirectory(qml)
plugins/Unity/Indicators/Network/networkagent.cppdeleted−146
@@ -1,146 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#include "networkagent.h"
22−
23−#include <QVariant>
24−#include <QApplication>
25−#include <QDebug>
26−
27−class NetworkAgentToken
28−{
29−public:
30− NMConnection *connection;
31− NMSettingWirelessSecurity *wisec;
32− guint id;
33− QByteArray keyMgmt;
34−
35− NetworkAgentToken(NMConnection *connection,
36− NMSettingWirelessSecurity *wisec,
37− guint id,
38− QByteArray keyMgmt)
39− : connection(connection),
40− wisec(wisec),
41− id(id),
42− keyMgmt(keyMgmt)
43− {
44− if (connection) {
45− g_object_ref(connection);
46− } else {
47− qWarning() << "invalid connection object";
48− }
49− }
50−
51− ~NetworkAgentToken()
52− {
53− if (connection) {
54− g_object_unref(connection);
55− }
56− }
57−};
58−
59−NetworkAgent::NetworkAgent(QObject *parent)
60− : QObject(parent)
61−{
62− m_agent = unity_settings_secret_agent_new();
63− g_signal_connect(G_OBJECT(m_agent),
64− UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
65− G_CALLBACK(onSecretRequested),
66− this);
67−
68− g_signal_connect(G_OBJECT(m_agent),
69− UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
70− G_CALLBACK(onSecretRequestCancelled),
71− this);
72−}
73−
74−NetworkAgent::~NetworkAgent()
75−{
76− nm_secret_agent_unregister(NM_SECRET_AGENT(m_agent));
77− g_object_unref(m_agent);
78−}
79−
80−void NetworkAgent::authenticate(const QVariant &token, const QString &key)
81−{
82− NetworkAgentToken *pToken = (NetworkAgentToken *) token.value<void *>();
83− if (pToken == NULL) {
84− return;
85− }
86−
87− if ((pToken->keyMgmt == "wpa-none") || (pToken->keyMgmt == "wpa-psk")) {
88− g_object_set(G_OBJECT(pToken->wisec),
89− NM_SETTING_WIRELESS_SECURITY_PSK, qPrintable(key),
90− NULL);
91− } else if (pToken->keyMgmt == "none") {
92− g_object_set(G_OBJECT(pToken->wisec),
93− NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, qPrintable(key),
94− NULL);
95− }
96−
97− GHashTable *settings = nm_connection_to_hash(pToken->connection,
98− NM_SETTING_HASH_FLAG_ALL);
99−
100− unity_settings_secret_agent_provide_secret(m_agent,
101− pToken->id, settings);
102− g_hash_table_unref(settings);
103− delete pToken;
104−}
105−
106−void NetworkAgent::cancel(const QVariant &token)
107−{
108− NetworkAgentToken *pToken = (NetworkAgentToken *) token.value<void *>();
109− if (pToken != NULL) {
110− unity_settings_secret_agent_cancel_request(m_agent, pToken->id);
111− delete pToken;
112− }
113−}
114−
115−void NetworkAgent::onSecretRequested(UnitySettingsSecretAgent* /*agent*/,
116− guint id,
117− NMConnection* connection,
118− const char* /*setting_name*/,
119− const char** /*hints*/,
120− NMSecretAgentGetSecretsFlags /*flags*/,
121− NetworkAgent* self)
122−{
123− NetworkAgentToken *token = new NetworkAgentToken(connection,
124− NULL,
125− id,
126− NULL);
127−
128− token->wisec = nm_connection_get_setting_wireless_security(connection);
129− if (token->wisec) {
130− token->keyMgmt = nm_setting_wireless_security_get_key_mgmt(token->wisec);
131− }
132−
133− QVariant varToken = qVariantFromValue((void *) token);
134− Q_EMIT self->secretRequested(varToken);
135−}
136−
137−void NetworkAgent::onSecretRequestCancelled(UnitySettingsSecretAgent* /*agent*/,
138− guint /*id*/,
139− NMConnection* /*connection*/,
140− const char* /*setting_name*/,
141− const char** /*hints*/,
142− NMSecretAgentGetSecretsFlags /*flags*/,
143− NetworkAgent* /*self*/)
144−{
145− //Do nothing for now
146−}
plugins/Unity/Indicators/Network/networkagent.hdeleted−65
@@ -1,65 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#ifndef NETWORKAGENT_H
22−#define NETWORKAGENT_H
23−
24−#include "secret-agent.h"
25−
26−#include <QObject>
27−
28−class NetworkAgentToken;
29−
30−class NetworkAgent : public QObject
31−{
32− Q_OBJECT
33−public:
34− NetworkAgent(QObject *parent=0);
35− ~NetworkAgent();
36−
37− Q_INVOKABLE void authenticate(const QVariant &token, const QString &key);
38− Q_INVOKABLE void cancel(const QVariant &token);
39−
40−Q_SIGNALS:
41− void secretRequested(const QVariant &token);
42− void secretRequestCancelled();
43−
44−private:
45− UnitySettingsSecretAgent *m_agent;
46−
47− static void onSecretRequested(UnitySettingsSecretAgent *agent,
48− guint id,
49− NMConnection *connection,
50− const char *setting_name,
51− const char **hints,
52− NMSecretAgentGetSecretsFlags flags,
53− NetworkAgent *self);
54−
55− static void onSecretRequestCancelled(UnitySettingsSecretAgent *agent,
56− guint id,
57− NMConnection *connection,
58− const char *setting_name,
59− const char **hints,
60− NMSecretAgentGetSecretsFlags flags,
61− NetworkAgent *self);
62−
63−};
64−
65−#endif
plugins/Unity/Indicators/Network/plugin.hdeleted−32
@@ -1,32 +0,0 @@
1−/*
2− * Copyright (C) 2012 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Author: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−#ifndef INDICATORS_NETWORK_PLUGIN_H
20−#define INDICATORS_NETWORK_PLUGIN_H
21−
22−#include <QtQml/QQmlExtensionPlugin>
23−
24−class IndicatorsNetworkPlugin : public QQmlExtensionPlugin
25−{
26− Q_OBJECT
27− Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
28−public:
29− void registerTypes(const char *uri);
30−};
31−
32−#endif // INDICATORS_NETWORK_PLUGIN_H
plugins/Unity/Indicators/Network/qml/PasswordPage.qmldeleted−88
@@ -1,88 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−import Unity.Indicators 0.1 as Indicators
24−
25−Page {
26− id: pagePassword
27−
28− property variant agent
29− property variant token
30−
31− anchors.fill: parent
32− title: "Network Authentication"
33−
34− Column {
35− anchors {
36− left: parent.left
37− right: parent.right
38− }
39−
40− Indicators.SectionMenuItem {
41− text: "Authentication"
42− }
43−
44− Indicators.FramedMenuItem {
45− implicitHeight: password.height + units.gu(1)
46−
47− PasswordTextField {
48− id: password
49− anchors {
50− left: parent.left
51− right: parent.right
52− margins: units.gu(3)
53− verticalCenter: parent.verticalCenter
54− }
55− }
56− }
57−
58− Indicators.FramedMenuItem {
59− Row {
60− anchors {
61− right: parent.right
62− verticalCenter: parent.verticalCenter
63− margins: units.gu(3)
64− }
65−
66− spacing: units.gu(1)
67−
68− Button {
69− text: "Cancel"
70− width: units.gu(10)
71− onClicked: {
72− agent.cancel(token);
73− pageStack.pop();
74− }
75− }
76−
77− Button {
78− text: "OK"
79− width: units.gu(10)
80− onClicked: {
81− agent.authenticate(token, password.text);
82− pageStack.pop();
83− }
84− }
85− }
86− }
87− }
88−}
plugins/Unity/Indicators/Network/qml/PasswordTextField.qmldeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−Item {
24− id: textMenu
25−
26− property alias text: textField.text
27−
28− height: contentColumn.height
29−
30− Column {
31− id: contentColumn
32− spacing: units.gu(0.5)
33− anchors {
34− left: parent.left
35− right: parent.right
36− }
37−
38− TextField {
39− id: textField
40−
41− anchors {
42− left: parent.left
43− right: parent.right
44− }
45−
46− placeholderText: "Password"
47− echoMode: showPassword.checked ? TextInput.Normal : TextInput.Password
48− }
49−
50− Row {
51− anchors {
52− left: parent.left
53− right: parent.right
54− }
55−
56− spacing: units.gu(1)
57−
58− CheckBox {
59− id: showPassword
60− }
61−
62− Label {
63− text: "Show password"
64− anchors.verticalCenter: showPassword.verticalCenter
65− }
66− }
67− }
68−}
plugins/Unity/Indicators/Network/qml/qmldir−5
@@ -1,8 +1,3 @@
11module Unity.Indicators.Network
2−plugin IndicatorsNetworkQml
3−typeinfo plugin.qmltypes
42
5−NetworkPage 0.1 NetworkPage.qml
63AccessPoint 0.1 AccessPoint.qml
7−PasswordPage 0.1 PasswordPage.qml
8−PasswordTextField 0.1 PasswordTextField.qml
plugins/Unity/Indicators/Network/secret-agent.cdeleted−382
@@ -1,382 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−
22−#include <glib.h>
23−#include <glib-object.h>
24−#include <nm-secret-agent.h>
25−#include "secret-agent.h"
26−
27−#define UNITY_SETTINGS_TYPE_SECRET_AGENT (unity_settings_secret_agent_get_type ())
28−#define UNITY_SETTINGS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgent))
29−#define UNITY_SETTINGS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
30−#define UNITY_SETTINGS_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT))
31−#define UNITY_SETTINGS_IS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT))
32−#define UNITY_SETTINGS_SECRET_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
33−#define UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentPrivate))
34−
35−#define AGENT_ID "com.canonical.settings.network.nm-agent"
36−
37−static gpointer unity_settings_secret_agent_parent_class = NULL;
38−
39−typedef struct _UnitySettingsSecretAgentPrivate UnitySettingsSecretAgentPrivate;
40−
41−struct _UnitySettingsSecretAgentPrivate {
42− GQueue *requests;
43−};
44−
45−typedef struct _SecretRequest {
46− gint id;
47− NMSecretAgent *agent;
48− NMConnection *connection;
49− const char *connection_path;
50− const char *setting_name;
51− const char **hints;
52− NMSecretAgentGetSecretsFlags flags;
53− NMSecretAgentGetSecretsFunc callback;
54− gpointer callback_data;
55−} SecretRequest;
56−
57−GType unity_settings_secret_agent_get_type (void) G_GNUC_CONST;
58−enum {
59− UNITY_SETTINGS_SECRET_AGENT_DUMMY_PROPERTY
60−};
61−
62−enum {
63− SECRET_REQUESTED,
64− REQUEST_CANCELLED,
65− LAST_SIGNAL
66−};
67−
68−static guint signals[LAST_SIGNAL] = { 0 };
69−
70−UnitySettingsSecretAgent* unity_settings_secret_agent_new (void);
71−UnitySettingsSecretAgent* unity_settings_secret_agent_construct (GType object_type);
72−
73−int
74−secret_request_find (SecretRequest *req,
75− guint *id)
76−{
77− if (req->id > *id)
78− return -1;
79−
80− if (req->id < *id)
81− return 1;
82−
83− return 0;
84−}
85−
86−void
87−unity_settings_secret_agent_provide_secret (UnitySettingsSecretAgent *agent,
88− guint request,
89− GHashTable *secrets)
90−{
91− GList *iter;
92− SecretRequest *req;
93− UnitySettingsSecretAgentPrivate *priv = agent->priv;
94−
95− iter = g_queue_find_custom (priv->requests,
96− &request,
97− (GCompareFunc)secret_request_find);
98−
99− if (iter == NULL || iter->data == NULL)
100− {
101− g_warning ("Secret request with id <%d> was not found", (int)request);
102− return;
103− }
104−
105− req = iter->data;
106−
107− req->callback (NM_SECRET_AGENT (agent),
108− req->connection,
109− secrets,
110− NULL,
111− req->callback_data);
112−
113− g_queue_remove_all (priv->requests, req);
114− g_free (req);
115− return;
116−}
117−
118−void
119−free_request (SecretRequest *req)
120−{
121− g_object_unref (req->connection);
122− g_free (req);
123−}
124−
125−void
126−unity_settings_secret_agent_cancel_request (UnitySettingsSecretAgent *agent,
127− guint request)
128−{
129− GList *iter;
130− SecretRequest *req;
131− UnitySettingsSecretAgentPrivate *priv = agent->priv;
132− GError *error;
133−
134− iter = g_queue_find_custom (priv->requests,
135− &request,
136− (GCompareFunc)secret_request_find);
137−
138− if (iter == NULL || iter->data == NULL)
139− {
140− g_warning ("Secret request with id <%d> was not found", (int)request);
141− return;
142− }
143−
144− req = iter->data;
145− error = g_error_new (NM_SECRET_AGENT_ERROR,
146− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
147− "This secret request was canceled by the user.");
148−
149− req->callback (NM_SECRET_AGENT (agent),
150− req->connection,
151− NULL,
152− error,
153− req->callback_data);
154−
155− g_queue_remove_all (priv->requests, req);
156− free_request (req);
157− return;
158−}
159−
160−static void
161−delete_secrets (NMSecretAgent *agent,
162− NMConnection *connection,
163− const char *connection_path,
164− NMSecretAgentDeleteSecretsFunc callback,
165− gpointer callback_data)
166−{
167− g_debug ("delete secrets");
168−}
169−
170−/* If it returns G_MAXUINT it's considered an error */
171−static guint
172−find_available_id (UnitySettingsSecretAgentPrivate *priv)
173−{
174− guint i = 0;
175− guint candidate = 0;
176−
177− if (g_queue_get_length (priv->requests) == G_MAXUINT)
178− return G_MAXUINT;
179−
180− while (i < g_queue_get_length (priv->requests))
181− {
182− SecretRequest *req = (SecretRequest*)g_queue_peek_nth (priv->requests, i);
183−
184− if (req->id == candidate)
185− {
186− candidate++;
187− i = 0;
188− }
189− else
190− {
191− i++;
192− }
193− }
194−
195− return i;
196−}
197−
198−static void
199−get_secrets (NMSecretAgent *agent,
200− NMConnection *connection,
201− const char *connection_path,
202− const char *setting_name,
203− const char **hints,
204− NMSecretAgentGetSecretsFlags flags,
205− NMSecretAgentGetSecretsFunc callback,
206− gpointer callback_data)
207−{
208− guint id;
209− UnitySettingsSecretAgentPrivate *priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (agent);
210− SecretRequest *req = NULL;
211−
212− if (flags == NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE)
213− {
214− GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
215− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
216− "No password found for this connection.");
217− callback (agent, connection, NULL, error, callback_data);
218− g_error_free (error);
219− return;
220− }
221−
222− id = find_available_id (priv);
223− if (id == G_MAXUINT)
224− {
225− GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
226− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
227− "Reached maximum number of requests.");
228− callback (agent, connection, NULL, error, callback_data);
229− g_error_free (error);
230− return;
231− }
232−
233− /* Adding a request */
234− req = (SecretRequest*) g_malloc0 (sizeof (SecretRequest));
235− *req = ((SecretRequest)
236− { id,
237− agent,
238− connection,
239− connection_path,
240− setting_name,
241− hints,
242− flags,
243− callback,
244− callback_data });
245−
246− g_object_ref (connection);
247−
248− g_queue_push_tail (priv->requests, req);
249−
250− g_signal_emit_by_name (agent,
251− UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
252− id,
253− connection,
254− setting_name,
255− hints,
256− flags);
257−}
258−
259−static void
260−save_secrets (NMSecretAgent *agent,
261− NMConnection *connection,
262− const char *connection_path,
263− NMSecretAgentSaveSecretsFunc callback,
264− gpointer callback_data)
265−{
266− g_debug ("save secrets");
267−}
268−
269−static void
270−cancel_get_secrets (NMSecretAgent *agent,
271− const char *connection_path,
272− const char *setting_name)
273−{
274− g_debug ("cancel get secrets");
275−}
276−
277−UnitySettingsSecretAgent*
278−unity_settings_secret_agent_construct (GType object_type)
279−{
280− UnitySettingsSecretAgent * self = NULL;
281− self = (UnitySettingsSecretAgent*) g_object_new (object_type,
282− NM_SECRET_AGENT_IDENTIFIER, AGENT_ID,
283− NULL);
284− return self;
285−}
286−
287−
288−UnitySettingsSecretAgent*
289−unity_settings_secret_agent_new (void)
290−{
291− return unity_settings_secret_agent_construct (UNITY_SETTINGS_TYPE_SECRET_AGENT);
292−}
293−
294−static void
295−destroy_pending_request (gpointer data)
296−{
297− SecretRequest* req = (SecretRequest*)data;
298− /* Reporting the cancellation of all pending requests */
299− g_signal_emit_by_name (req->agent,
300− UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
301− req->id);
302−
303− free_request (req);
304−}
305−
306−static void
307−unity_settings_secret_agent_finalize (GObject *agent)
308−{
309− UnitySettingsSecretAgentPrivate *priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (agent);
310−
311− g_queue_free_full (priv->requests, destroy_pending_request);
312−}
313−
314−static void
315−unity_settings_secret_agent_class_init (UnitySettingsSecretAgentClass *klass)
316−{
317− unity_settings_secret_agent_parent_class = g_type_class_peek_parent (klass);
318− NMSecretAgentClass *parent_class = NM_SECRET_AGENT_CLASS (klass);
319− parent_class->get_secrets = get_secrets;
320− parent_class->save_secrets = save_secrets;
321− parent_class->delete_secrets = delete_secrets;
322− parent_class->cancel_get_secrets = cancel_get_secrets;
323−
324− g_type_class_add_private (klass, sizeof(UnitySettingsSecretAgentPrivate));
325− G_OBJECT_CLASS (klass)->finalize = unity_settings_secret_agent_finalize;
326−
327−
328− signals[SECRET_REQUESTED] = g_signal_new (UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
329− G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
330− G_SIGNAL_RUN_FIRST,
331− G_STRUCT_OFFSET (UnitySettingsSecretAgentClass, secret_requested),
332− NULL, NULL, NULL,
333− G_TYPE_NONE, 5,
334− G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_UINT);
335−
336− signals[REQUEST_CANCELLED] = g_signal_new (UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
337− G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
338− G_SIGNAL_RUN_FIRST,
339− G_STRUCT_OFFSET (UnitySettingsSecretAgentClass, request_cancelled),
340− NULL, NULL, NULL,
341− G_TYPE_NONE, 1,
342− G_TYPE_UINT);
343−}
344−
345−
346−static void
347−unity_settings_secret_agent_instance_init (UnitySettingsSecretAgent *self)
348−{
349− self->priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (self);
350− self->priv->requests = g_queue_new ();
351−}
352−
353−GType
354−unity_settings_secret_agent_get_type (void)
355−{
356− static volatile gsize unity_settings_secret_agent_type_id__volatile = 0;
357− if (g_once_init_enter (&unity_settings_secret_agent_type_id__volatile))
358− {
359− static const GTypeInfo g_define_type_info =
360− {
361− sizeof (UnitySettingsSecretAgentClass),
362− (GBaseInitFunc) NULL,
363− (GBaseFinalizeFunc) NULL,
364− (GClassInitFunc) unity_settings_secret_agent_class_init,
365− (GClassFinalizeFunc) NULL,
366− NULL,
367− sizeof (UnitySettingsSecretAgent),
368− 0,
369− (GInstanceInitFunc) unity_settings_secret_agent_instance_init,
370− NULL
371− };
372− GType unity_settings_secret_agent_type_id;
373− unity_settings_secret_agent_type_id = g_type_register_static (NM_TYPE_SECRET_AGENT,
374− "UnitySettingsSecretAgent",
375− &g_define_type_info,
376− 0);
377− g_once_init_leave (&unity_settings_secret_agent_type_id__volatile,
378− unity_settings_secret_agent_type_id);
379− }
380−
381− return unity_settings_secret_agent_type_id__volatile;
382−}
plugins/Unity/Indicators/Network/secret-agent.hdeleted−102
@@ -1,102 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#ifndef __SECRET_AGENT_H__
22−#define __SECRET_AGENT_H__
23−
24−#include <glib.h>
25−#include <glib-object.h>
26−#include <nm-secret-agent.h>
27−
28−/*
29− * This class is a basic implementation of the NetworkManager SecretAgent base class.
30− *
31− * The purpose of this class is to handle credential requests from the network,
32− * for example, from a WiFi hotspot or a VPN network.
33− *
34− * It queues requests objects (SecretRequest) on a GQueue in the private struct
35− * of the class. And notifies the consumer of the class through the "secret-request"
36− * and the "request-cancelled" signals with the following callback prototypes:
37− *
38− * void (*secret_requested) (UnitySettingsSecretAgent *self,
39− * guint id,
40− * NMConnection *connection,
41− * const char *setting_name,
42− * const char **hints,
43− * NMSecretAgentGetSecretsFlags flags,
44− * gpointer user_data);
45− *
46− * void (*request_cancelled) (UnitySettingsSecretAgent *self,
47− * guint id,
48− * gpointer user_data);
49− *
50− */
51−
52−
53−G_BEGIN_DECLS
54−
55−
56−#define UNITY_SETTINGS_TYPE_SECRET_AGENT (unity_settings_secret_agent_get_type ())
57−#define UNITY_SETTINGS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgent))
58−#define UNITY_SETTINGS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
59−#define UNITY_SETTINGS_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT))
60−#define UNITY_SETTINGS_IS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT))
61−#define UNITY_SETTINGS_SECRET_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
62−
63−#define UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED "secret-requested"
64−#define UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED "request-cancelled"
65−
66−typedef struct _UnitySettingsSecretAgent UnitySettingsSecretAgent;
67−typedef struct _UnitySettingsSecretAgentClass UnitySettingsSecretAgentClass;
68−typedef struct _UnitySettingsSecretAgentPrivate UnitySettingsSecretAgentPrivate;
69−
70−struct _UnitySettingsSecretAgent {
71− NMSecretAgent parent_instance;
72− UnitySettingsSecretAgentPrivate * priv;
73−};
74−
75−struct _UnitySettingsSecretAgentClass {
76− NMSecretAgentClass parent_class;
77−
78− void (*secret_requested) (UnitySettingsSecretAgent *self,
79− guint id,
80− NMConnection *connection,
81− const char *setting_name,
82− const char **hints,
83− NMSecretAgentGetSecretsFlags flags);
84−
85− void (*request_cancelled) (UnitySettingsSecretAgent *self,
86− guint id);
87−};
88−
89−
90−GType unity_settings_secret_agent_get_type (void) G_GNUC_CONST;
91−UnitySettingsSecretAgent* unity_settings_secret_agent_new (void);
92−UnitySettingsSecretAgent* unity_settings_secret_agent_construct (GType object_type);
93−
94−void unity_settings_secret_agent_provide_secret (UnitySettingsSecretAgent *agent,
95− guint request,
96− GHashTable *secrets);
97−void unity_settings_secret_agent_cancel_request (UnitySettingsSecretAgent *agent,
98− guint request);
99−
100−G_END_DECLS
101−
102−#endif
plugins/Unity/Indicators/indicators.h−2
@@ -74,8 +74,6 @@ public:
7474 enum Roles {
7575 Identifier = 0,
7676 Position,
77− Title,
78− Description,
7977 WidgetSource,
8078 PageSource,
8179 IndicatorProperties,
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/indicatorsmodel.cpp+2−55
@@ -201,8 +201,6 @@ QHash<int, QByteArray> IndicatorsModel::roleNames() const
201201 {
202202 roles[IndicatorsModelRole::Identifier] = "identifier";
203203 roles[IndicatorsModelRole::Position] = "position";
204− roles[IndicatorsModelRole::Title] = "title";
205− roles[IndicatorsModelRole::Description] = "description";
206204 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
207205 roles[IndicatorsModelRole::PageSource] = "pageSource";
208206 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
@@ -216,25 +214,6 @@ int IndicatorsModel::columnCount(const QModelIndex &) const
216214 return 1;
217215}
218216
219−/*! \internal */
220−QVariant IndicatorsModel::defaultData(Indicator::Ptr indicator, int role)
221−{
222− switch (role)
223− {
224− case IndicatorsModelRole::Position:
225− return 0;
226− case IndicatorsModelRole::Title:
227− return indicator ? indicator->identifier() : "Unknown";
228− case IndicatorsModelRole::Description:
229− return "";
230− case IndicatorsModelRole::WidgetSource:
231− return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorWidget2.qml";
232− case IndicatorsModelRole::PageSource:
233− return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorPage2.qml";
234− }
235− return QVariant();
236−}
237−
238217Q_INVOKABLE QVariant IndicatorsModel::data(int row, int role) const
239218{
240219 return data(index(row, 0), role);
@@ -268,27 +247,16 @@ QVariant IndicatorsModel::data(const QModelIndex &index, int role) const
268247 return QVariant(indicator->indicatorProperties());
269248 }
270249 break;
271− case IndicatorsModelRole::Title:
272− case IndicatorsModelRole::Description:
273250 case IndicatorsModelRole::WidgetSource:
251+ return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorWidget.qml";
274252 case IndicatorsModelRole::PageSource:
275− return indicatorData(indicator, role);
253+ return shellAppDirectory()+"/Panel/Indicators/DefaultIndicatorPage.qml";
276254 default:
277255 break;
278256 }
279257 return QVariant();
280258}
281259
282−QVariant IndicatorsModel::indicatorData(const Indicator::Ptr& indicator, int role) const
283−{
284− if (indicator && m_parsed_indicator_data.contains(indicator->identifier()))
285− {
286− QVariantMap data = m_parsed_indicator_data[indicator->identifier()];
287− return data.value(roleNames()[role], QVariant());
288− }
289− return defaultData(indicator, role);
290−}
291−
292260/*! \internal */
293261QModelIndex IndicatorsModel::parent(const QModelIndex&) const
294262{
@@ -300,24 +268,3 @@ int IndicatorsModel::rowCount(const QModelIndex&) const
300268{
301269 return m_indicators.count();
302270}
303−
304−void IndicatorsModel::setIndicatorData(const QVariant& data)
305−{
306− m_indicator_data = data;
307−
308− m_parsed_indicator_data.clear();
309− QMap<QString, QVariant> map = data.toMap();
310− QMapIterator<QString, QVariant> iter(map);
311− while(iter.hasNext())
312− {
313− iter.next();
314− m_parsed_indicator_data[iter.key()] = iter.value().toMap();
315− }
316−
317− Q_EMIT indicatorDataChanged(m_indicator_data);
318−}
319−
320−QVariant IndicatorsModel::indicatorData() const
321−{
322− return m_indicator_data;
323−}
plugins/Unity/Indicators/indicatorsmodel.h−8
@@ -34,7 +34,6 @@ class UNITYINDICATORS_EXPORT IndicatorsModel : public QAbstractListModel
3434 Q_OBJECT
3535 Q_ENUMS(Roles)
3636 Q_PROPERTY(int count READ count NOTIFY countChanged)
37− Q_PROPERTY(QVariant indicatorData READ indicatorData WRITE setIndicatorData NOTIFY indicatorDataChanged)
3837
3938public:
4039
@@ -53,9 +52,6 @@ public:
5352 QModelIndex parent (const QModelIndex &index) const;
5453 int rowCount(const QModelIndex &parent = QModelIndex()) const;
5554
56− void setIndicatorData(const QVariant& data);
57− QVariant indicatorData() const;
58−
5955
6056Q_SIGNALS:
6157 void countChanged();
@@ -71,13 +67,9 @@ private:
7167 IndicatorsManager *m_manager;
7268
7369 QList<Indicator::Ptr> m_indicators;
74− QVariant m_indicator_data;
75− QMap<QString, QVariantMap> m_parsed_indicator_data;
7670
7771 void notifyDataChanged(QObject *sender, int role);
7872 int count() const;
79− QVariant indicatorData(const Indicator::Ptr& indicator, int role) const;
80− static QVariant defaultData(Indicator::Ptr indicator, int role);
8173};
8274
8375#endif // INDICATORSMODEL_H
plugins/Unity/Indicators/qml/IndicatorBase.qml+8−5
@@ -27,13 +27,11 @@ Item {
2727 enabled: menuObjectPaths.hasOwnProperty(device)
2828
2929 //const
30− property string title
3130 property string busName
3231 property string actionsObjectPath
3332 property var menuObjectPaths: undefined
3433 readonly property string device: "phone"
3534 property string rootMenuType: "com.canonical.indicator.root"
36− property bool active: false
3735
3836 property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
3937
@@ -41,8 +39,13 @@ Item {
4139
4240 CachedUnityMenuModel {
4341 id: cachedModel
44− busName: active ? indicatorItem.busName : ""
45− actionsObjectPath: active ? indicatorItem.actionsObjectPath : ""
46− menuObjectPath: active ? indicatorItem.deviceMenuObjectPath : ""
42+ busName: indicatorItem.busName
43+ actionsObjectPath: indicatorItem.actionsObjectPath
44+ menuObjectPath: indicatorItem.deviceMenuObjectPath
45+ }
46+
47+ property var rootActionState: Indicators.RootActionState {
48+ menu: menuModel
49+ onUpdated: indicatorItem.rootActionStateChanged()
4750 }
4851}
plugins/Unity/Indicators/qml/IndicatorPage.qml+7−5
@@ -26,12 +26,14 @@ IndicatorBase {
2626 id: main
2727
2828 //const
29+ property bool contentActive: false
30+ property string title: rootActionState.title
2931 property alias emptyText: emptyLabel.text
3032 property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
3133
3234 Indicators.UnityMenuModelStack {
3335 id: menuStack
34− head: main.menuModel
36+ head: contentActive ? main.menuModel : null
3537 }
3638
3739 ListView {
@@ -162,15 +164,15 @@ IndicatorBase {
162164 function start()
163165 {
164166 reset()
165− if (!active) {
166− active = true;
167+ if (!contentActive) {
168+ contentActive = true;
167169 }
168170 }
169171
170172 function stop()
171173 {
172− if (active) {
173− active = false;
174+ if (contentActive) {
175+ contentActive = false;
174176 }
175177 }
176178
plugins/Unity/Indicators/qml/IndicatorWidget.qml−6
@@ -23,12 +23,6 @@ import Unity.Indicators 0.1 as Indicators
2323IndicatorBase {
2424 id: indicatorWidget
2525
26− active: true
2726 enabled: false
2827 property int iconSize: height - units.gu(0.5)
29−
30− property var actionState: Indicators.RootActionState {
31− menu: menuModel
32− onUpdated: indicatorWidget.actionStateChanged()
33− }
3428}
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/Indicators/qml/SliderMenuItem.qml+1−1
@@ -71,7 +71,7 @@ FramedMenuItem {
7171 leftMargin: leftImage.visible ? units.gu(0.5) : 0
7272 rightMargin: rightImage.visible ? units.gu(0.5) : 0
7373 }
74− live: false
74+ live: true
7575
7676 Component.onCompleted: {
7777 value = menuItem.value
plugins/Unity/Indicators/rootactionstate.cpp+7−1
@@ -102,12 +102,18 @@ void RootActionState::updateActionState()
102102 Q_EMIT updated();
103103}
104104
105−
106105bool RootActionState::isValid() const
107106{
108107 return m_menu && m_menu->rowCount() > 0;
109108}
110109
110+QString RootActionState::title() const
111+{
112+ if (!isValid()) return QString();
113+
114+ return m_cachedState.value("title", QVariant::fromValue(QString())).toString();
115+}
116+
111117QString RootActionState::leftLabel() const
112118{
113119 if (!isValid()) return QString();
plugins/Unity/Indicators/rootactionstate.h+3
@@ -32,6 +32,7 @@ class UNITYINDICATORS_EXPORT RootActionState : public ActionStateParser
3232 Q_PROPERTY(UnityMenuModel* menu READ menu WRITE setMenu NOTIFY menuChanged)
3333
3434 Q_PROPERTY(bool valid READ isValid NOTIFY validChanged)
35+ Q_PROPERTY(QString title READ title NOTIFY titleChanged)
3536 Q_PROPERTY(QString leftLabel READ leftLabel NOTIFY leftLabelChanged)
3637 Q_PROPERTY(QString rightLabel READ rightLabel NOTIFY rightLabelChanged)
3738 Q_PROPERTY(QStringList icons READ icons NOTIFY iconsChanged)
@@ -48,6 +49,7 @@ public:
4849 void setIndex(int index);
4950
5051 bool isValid() const;
52+ QString title() const;
5153 QString leftLabel() const;
5254 QString rightLabel() const;
5355 QStringList icons() const;
@@ -64,6 +66,7 @@ Q_SIGNALS:
6466 void indexChanged();
6567
6668 void validChanged();
69+ void titleChanged();
6770 void leftLabelChanged();
6871 void rightLabelChanged();
6972 void iconsChanged();
plugins/Unity/Indicators/visibleindicatorsmodel.cpp−2
@@ -33,8 +33,6 @@ QHash<int, QByteArray> VisibleIndicatorsModel::roleNames() const
3333 {
3434 roles[IndicatorsModelRole::Identifier] = "identifier";
3535 roles[IndicatorsModelRole::Position] = "position";
36− roles[IndicatorsModelRole::Title] = "title";
37− roles[IndicatorsModelRole::Description] = "description";
3836 roles[IndicatorsModelRole::WidgetSource] = "widgetSource";
3937 roles[IndicatorsModelRole::PageSource] = "pageSource";
4038 roles[IndicatorsModelRole::IndicatorProperties] = "indicatorProperties";
plugins/Unity/IndicatorsLegacy/CMakeLists.txtdeleted−48
@@ -1,48 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−project(IndicatorsLegacyQml)
5−
6−pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
7−find_package(Qt5Core REQUIRED)
8−find_package(Qt5Quick REQUIRED)
9−
10−add_subdirectory(qml)
11−add_subdirectory(Network)
12−
13−include_directories(
14− ${CMAKE_CURRENT_SOURCE_DIR}
15− ${CMAKE_CURRENT_BINARY_DIR}
16− ${QMENUMODEL_INCLUDE_DIRS}
17− ${CMAKE_SOURCE_DIR}/plugins/Unity/Indicators
18−)
19−
20−set(IndicatorsLegacyQML_SOURCES
21− ${CMAKE_SOURCE_DIR}/plugins/Unity/Indicators/indicators.h
22− flatmenuproxymodel.cpp
23− modelprinter.cpp
24− plugin.cpp
25−)
26−add_definitions(-DUNITYINDICATORS_LIBRARY)
27−
28−set(IndicatorsLegacyQML_RESOURCES
29− resources/indicators.qrc
30−)
31−
32−qt5_add_resources(IndicatorsLegacyQML_RESOURCES_RCC
33− ${IndicatorsLegacyQML_RESOURCES}
34−)
35−
36−add_library(IndicatorsLegacyQml SHARED
37− ${IndicatorsLegacyQML_RESOURCES_RCC}
38− ${IndicatorsLegacyQML_SOURCES}
39−)
40−
41−target_link_libraries(IndicatorsLegacyQml
42− ${QMENUMODEL_LDFLAGS}
43−)
44−
45−qt5_use_modules(IndicatorsLegacyQml Core Qml Quick)
46−
47−# export the qmltypes and plugin files
48−export_qmlplugin(Unity.IndicatorsLegacy 0.1 Unity/IndicatorsLegacy TARGETS IndicatorsLegacyQml)
plugins/Unity/IndicatorsLegacy/Network/CMakeLists.txtdeleted−45
@@ -1,45 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−project(IndicatorsLegacyNetworkQml)
5−
6−pkg_check_modules(GLIB glib-2.0>=2.32)
7−pkg_check_modules(LIBNM_GLIB libnm-glib>=0.9.6)
8−pkg_check_modules(LIBNM_UTIL libnm-util>=0.9.6)
9−
10−if(LIBNM_GLIB_FOUND AND LIBNM_UTIL_FOUND AND GLIB_FOUND)
11− set(INDICATORS_LEGACY_NETWORK_SRC
12− networkagent.cpp
13− plugin.cpp
14− secret-agent.c
15− )
16−
17− add_library(IndicatorsLegacyNetworkQml MODULE
18− ${INDICATORS_LEGACY_NETWORK_SRC}
19− )
20−
21− qt5_use_modules(IndicatorsLegacyNetworkQml Core Qml Widgets)
22−
23− set_target_properties(IndicatorsLegacyNetworkQml PROPERTIES COMPILE_FLAGS -fPIC)
24−
25− include_directories(
26− ${CMAKE_CURRENT_SOURCE_DIR}
27− ${GLIB_INCLUDE_DIRS}
28− ${LIBNM_GLIB_INCLUDE_DIRS}
29− ${LIBNM_UTIL_INCLUDE_DIRS}
30− )
31−
32− target_link_libraries(IndicatorsLegacyNetworkQml
33− ${GLIB_LIBRARIES}
34− ${LIBNM_GLIB_LIBRARIES}
35− ${LIBNM_UTIL_LIBRARIES}
36− )
37−
38− # export the qmltypes and plugin files
39− export_qmlplugin(Unity.IndicatorsLegacy.Network 0.1 Unity/IndicatorsLegacy/Network TARGETS IndicatorsLegacyNetworkQml)
40−
41−else()
42− message(WARNING "Missing glib or libnm dependency for the network plugin, not building")
43−endif()
44−
45−add_subdirectory(qml)
plugins/Unity/IndicatorsLegacy/Network/networkagent.cppdeleted−146
@@ -1,146 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#include "networkagent.h"
22−
23−#include <QVariant>
24−#include <QApplication>
25−#include <QDebug>
26−
27−class NetworkAgentToken
28−{
29−public:
30− NMConnection *connection;
31− NMSettingWirelessSecurity *wisec;
32− guint id;
33− QByteArray keyMgmt;
34−
35− NetworkAgentToken(NMConnection *connection,
36− NMSettingWirelessSecurity *wisec,
37− guint id,
38− QByteArray keyMgmt)
39− : connection(connection),
40− wisec(wisec),
41− id(id),
42− keyMgmt(keyMgmt)
43− {
44− if (connection) {
45− g_object_ref(connection);
46− } else {
47− qWarning() << "invalid connection object";
48− }
49− }
50−
51− ~NetworkAgentToken()
52− {
53− if (connection) {
54− g_object_unref(connection);
55− }
56− }
57−};
58−
59−NetworkAgent::NetworkAgent(QObject *parent)
60− : QObject(parent)
61−{
62− m_agent = unity_settings_secret_agent_new();
63− g_signal_connect(G_OBJECT(m_agent),
64− UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
65− G_CALLBACK(onSecretRequested),
66− this);
67−
68− g_signal_connect(G_OBJECT(m_agent),
69− UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
70− G_CALLBACK(onSecretRequestCancelled),
71− this);
72−}
73−
74−NetworkAgent::~NetworkAgent()
75−{
76− nm_secret_agent_unregister(NM_SECRET_AGENT(m_agent));
77− g_object_unref(m_agent);
78−}
79−
80−void NetworkAgent::authenticate(const QVariant &token, const QString &key)
81−{
82− NetworkAgentToken *pToken = (NetworkAgentToken *) token.value<void *>();
83− if (pToken == NULL) {
84− return;
85− }
86−
87− if ((pToken->keyMgmt == "wpa-none") || (pToken->keyMgmt == "wpa-psk")) {
88− g_object_set(G_OBJECT(pToken->wisec),
89− NM_SETTING_WIRELESS_SECURITY_PSK, qPrintable(key),
90− NULL);
91− } else if (pToken->keyMgmt == "none") {
92− g_object_set(G_OBJECT(pToken->wisec),
93− NM_SETTING_WIRELESS_SECURITY_WEP_KEY0, qPrintable(key),
94− NULL);
95− }
96−
97− GHashTable *settings = nm_connection_to_hash(pToken->connection,
98− NM_SETTING_HASH_FLAG_ALL);
99−
100− unity_settings_secret_agent_provide_secret(m_agent,
101− pToken->id, settings);
102− g_hash_table_unref(settings);
103− delete pToken;
104−}
105−
106−void NetworkAgent::cancel(const QVariant &token)
107−{
108− NetworkAgentToken *pToken = (NetworkAgentToken *) token.value<void *>();
109− if (pToken != NULL) {
110− unity_settings_secret_agent_cancel_request(m_agent, pToken->id);
111− delete pToken;
112− }
113−}
114−
115−void NetworkAgent::onSecretRequested(UnitySettingsSecretAgent* /*agent*/,
116− guint id,
117− NMConnection* connection,
118− const char* /*setting_name*/,
119− const char** /*hints*/,
120− NMSecretAgentGetSecretsFlags /*flags*/,
121− NetworkAgent* self)
122−{
123− NetworkAgentToken *token = new NetworkAgentToken(connection,
124− NULL,
125− id,
126− NULL);
127−
128− token->wisec = nm_connection_get_setting_wireless_security(connection);
129− if (token->wisec) {
130− token->keyMgmt = nm_setting_wireless_security_get_key_mgmt(token->wisec);
131− }
132−
133− QVariant varToken = qVariantFromValue((void *) token);
134− Q_EMIT self->secretRequested(varToken);
135−}
136−
137−void NetworkAgent::onSecretRequestCancelled(UnitySettingsSecretAgent* /*agent*/,
138− guint /*id*/,
139− NMConnection* /*connection*/,
140− const char* /*setting_name*/,
141− const char** /*hints*/,
142− NMSecretAgentGetSecretsFlags /*flags*/,
143− NetworkAgent* /*self*/)
144−{
145− //Do nothing for now
146−}
plugins/Unity/IndicatorsLegacy/Network/networkagent.hdeleted−65
@@ -1,65 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#ifndef NETWORKAGENT_H
22−#define NETWORKAGENT_H
23−
24−#include "secret-agent.h"
25−
26−#include <QObject>
27−
28−class NetworkAgentToken;
29−
30−class NetworkAgent : public QObject
31−{
32− Q_OBJECT
33−public:
34− NetworkAgent(QObject *parent=0);
35− ~NetworkAgent();
36−
37− Q_INVOKABLE void authenticate(const QVariant &token, const QString &key);
38− Q_INVOKABLE void cancel(const QVariant &token);
39−
40−Q_SIGNALS:
41− void secretRequested(const QVariant &token);
42− void secretRequestCancelled();
43−
44−private:
45− UnitySettingsSecretAgent *m_agent;
46−
47− static void onSecretRequested(UnitySettingsSecretAgent *agent,
48− guint id,
49− NMConnection *connection,
50− const char *setting_name,
51− const char **hints,
52− NMSecretAgentGetSecretsFlags flags,
53− NetworkAgent *self);
54−
55− static void onSecretRequestCancelled(UnitySettingsSecretAgent *agent,
56− guint id,
57− NMConnection *connection,
58− const char *setting_name,
59− const char **hints,
60− NMSecretAgentGetSecretsFlags flags,
61− NetworkAgent *self);
62−
63−};
64−
65−#endif
plugins/Unity/IndicatorsLegacy/Network/plugin.cppdeleted−31
@@ -1,31 +0,0 @@
1−/*
2− * Copyright (C) 2012 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Author: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−// Qt
20−#include <QtQml/qqml.h>
21−
22−// self
23−#include "plugin.h"
24−
25−// local
26−#include "networkagent.h"
27−
28−void IndicatorsNetworkPlugin::registerTypes(const char *uri)
29−{
30− qmlRegisterType<NetworkAgent>(uri, 0, 1, "NetworkAgent");
31−}
plugins/Unity/IndicatorsLegacy/Network/plugin.hdeleted−32
@@ -1,32 +0,0 @@
1−/*
2− * Copyright (C) 2012 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Author: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−#ifndef INDICATORS_NETWORK_PLUGIN_H
20−#define INDICATORS_NETWORK_PLUGIN_H
21−
22−#include <QtQml/QQmlExtensionPlugin>
23−
24−class IndicatorsNetworkPlugin : public QQmlExtensionPlugin
25−{
26− Q_OBJECT
27− Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
28−public:
29− void registerTypes(const char *uri);
30−};
31−
32−#endif // INDICATORS_NETWORK_PLUGIN_H
plugins/Unity/IndicatorsLegacy/Network/qml/AccessPoint.qmldeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−import Unity.IndicatorsLegacy 0.1 as Indicators
24−
25−Indicators.MenuItem {
26− id: accessPoint
27− property variant actionWifiApStrength : menu && actionGroup ? actionGroup.action(menu.extra.canonical_wifi_ap_strength_action) : null
28− property variant wifiApStrength : actionWifiApStrength && actionWifiApStrength.valid ? actionWifiApStrength.state : "0"
29−
30− function getNetworkIcon(data) {
31− var imageName = "nm-signal-100"
32− var signalStrength = parseInt(wifiApStrength)
33−
34− if (data.extra.canonical_wifi_ap_is_adhoc) {
35− imageName = "nm-adhoc";
36− } else if (signalStrength == 0) {
37− imageName = "nm-signal-00";
38− } else if (signalStrength <= 25) {
39− imageName = "nm-signal-25";
40− } else if (signalStrength <= 50) {
41− imageName = "nm-signal-50";
42− } else if (signalStrength <= 75) {
43− imageName = "nm-signal-75";
44− }
45−
46− if (data.extra.canonical_wifi_ap_is_secure) {
47− imageName += "-secure";
48− }
49−
50− return "image://theme/" + imageName;
51− }
52−
53− icon: menu && wifiApStrength ? getNetworkIcon(menu) : "image://theme/wifi-none"
54− iconFrame: false
55− control: CheckBox {
56− id: checkBoxActive
57− height: units.gu(4)
58− width: units.gu(4)
59− anchors.centerIn: parent
60− }
61−
62− Indicators.MenuActionBinding {
63− actionGroup: accessPoint.actionGroup
64− action: menu ? menu.action : ""
65− target: checkBoxActive
66− property: "checked"
67− }
68−}
plugins/Unity/IndicatorsLegacy/Network/qml/CMakeLists.txtdeleted−5
@@ -1,5 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−# export the qmldir, *.qml files.
5−export_qmlfiles(Unity.IndicatorsLegacy.Network Unity/IndicatorsLegacy/Network)
plugins/Unity/IndicatorsLegacy/Network/qml/PasswordPage.qmldeleted−88
@@ -1,88 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−import Unity.IndicatorsLegacy 0.1 as Indicators
24−
25−Page {
26− id: pagePassword
27−
28− property variant agent
29− property variant token
30−
31− anchors.fill: parent
32− title: "Network Authentication"
33−
34− Column {
35− anchors {
36− left: parent.left
37− right: parent.right
38− }
39−
40− Indicators.SectionMenuItem {
41− label: "Authentication"
42− }
43−
44− Indicators.MenuItem {
45− implicitHeight: password.height + units.gu(1)
46−
47− PasswordTextField {
48− id: password
49− anchors {
50− left: parent.left
51− right: parent.right
52− margins: units.gu(3)
53− verticalCenter: parent.verticalCenter
54− }
55− }
56− }
57−
58− Indicators.MenuItem {
59− Row {
60− anchors {
61− right: parent.right
62− verticalCenter: parent.verticalCenter
63− margins: units.gu(3)
64− }
65−
66− spacing: units.gu(1)
67−
68− Button {
69− text: "Cancel"
70− width: units.gu(10)
71− onClicked: {
72− agent.cancel(token);
73− pageStack.pop();
74− }
75− }
76−
77− Button {
78− text: "OK"
79− width: units.gu(10)
80− onClicked: {
81− agent.authenticate(token, password.text);
82− pageStack.pop();
83− }
84− }
85− }
86− }
87− }
88−}
plugins/Unity/IndicatorsLegacy/Network/qml/PasswordTextField.qmldeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−Item {
24− id: textMenu
25−
26− property alias text: textField.text
27−
28− height: contentColumn.height
29−
30− Column {
31− id: contentColumn
32− spacing: units.gu(0.5)
33− anchors {
34− left: parent.left
35− right: parent.right
36− }
37−
38− TextField {
39− id: textField
40−
41− anchors {
42− left: parent.left
43− right: parent.right
44− }
45−
46− placeholderText: "Password"
47− echoMode: showPassword.checked ? TextInput.Normal : TextInput.Password
48− }
49−
50− Row {
51− anchors {
52− left: parent.left
53− right: parent.right
54− }
55−
56− spacing: units.gu(1)
57−
58− CheckBox {
59− id: showPassword
60− }
61−
62− Label {
63− text: "Show password"
64− anchors.verticalCenter: showPassword.verticalCenter
65− }
66− }
67− }
68−}
plugins/Unity/IndicatorsLegacy/Network/qml/WifiSection.qmldeleted−34
@@ -1,34 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Unity.IndicatorsLegacy 0.1 as Indicators
23−
24−Indicators.SectionMenuItem {
25− id: wifiSectionMenu
26−
27− Indicators.MenuAction {
28− id: busyAction
29− actionGroup: wifiSectionMenu.actionGroup
30− action: menu ? menu.extra.canonical_busy_action : ""
31− }
32−
33− busy: busyAction.valid ? busyAction.state : false
34−}
plugins/Unity/IndicatorsLegacy/Network/qml/qmldirdeleted−9
@@ -1,9 +0,0 @@
1−module Unity.IndicatorsLegacy.Network
2−plugin IndicatorsLegacyNetworkQml
3−typeinfo plugin.qmltypes
4−
5−NetworkPage 0.1 NetworkPage.qml
6−AccessPoint 0.1 AccessPoint.qml
7−PasswordPage 0.1 PasswordPage.qml
8−PasswordTextField 0.1 PasswordTextField.qml
9−WifiSection 0.1 WifiSection.qml
plugins/Unity/IndicatorsLegacy/Network/secret-agent.cdeleted−382
@@ -1,382 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−
22−#include <glib.h>
23−#include <glib-object.h>
24−#include <nm-secret-agent.h>
25−#include "secret-agent.h"
26−
27−#define UNITY_SETTINGS_TYPE_SECRET_AGENT (unity_settings_secret_agent_get_type ())
28−#define UNITY_SETTINGS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgent))
29−#define UNITY_SETTINGS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
30−#define UNITY_SETTINGS_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT))
31−#define UNITY_SETTINGS_IS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT))
32−#define UNITY_SETTINGS_SECRET_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
33−#define UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentPrivate))
34−
35−#define AGENT_ID "com.canonical.settings.network.nm-agent"
36−
37−static gpointer unity_settings_secret_agent_parent_class = NULL;
38−
39−typedef struct _UnitySettingsSecretAgentPrivate UnitySettingsSecretAgentPrivate;
40−
41−struct _UnitySettingsSecretAgentPrivate {
42− GQueue *requests;
43−};
44−
45−typedef struct _SecretRequest {
46− gint id;
47− NMSecretAgent *agent;
48− NMConnection *connection;
49− const char *connection_path;
50− const char *setting_name;
51− const char **hints;
52− NMSecretAgentGetSecretsFlags flags;
53− NMSecretAgentGetSecretsFunc callback;
54− gpointer callback_data;
55−} SecretRequest;
56−
57−GType unity_settings_secret_agent_get_type (void) G_GNUC_CONST;
58−enum {
59− UNITY_SETTINGS_SECRET_AGENT_DUMMY_PROPERTY
60−};
61−
62−enum {
63− SECRET_REQUESTED,
64− REQUEST_CANCELLED,
65− LAST_SIGNAL
66−};
67−
68−static guint signals[LAST_SIGNAL] = { 0 };
69−
70−UnitySettingsSecretAgent* unity_settings_secret_agent_new (void);
71−UnitySettingsSecretAgent* unity_settings_secret_agent_construct (GType object_type);
72−
73−int
74−secret_request_find (SecretRequest *req,
75− guint *id)
76−{
77− if (req->id > *id)
78− return -1;
79−
80− if (req->id < *id)
81− return 1;
82−
83− return 0;
84−}
85−
86−void
87−unity_settings_secret_agent_provide_secret (UnitySettingsSecretAgent *agent,
88− guint request,
89− GHashTable *secrets)
90−{
91− GList *iter;
92− SecretRequest *req;
93− UnitySettingsSecretAgentPrivate *priv = agent->priv;
94−
95− iter = g_queue_find_custom (priv->requests,
96− &request,
97− (GCompareFunc)secret_request_find);
98−
99− if (iter == NULL || iter->data == NULL)
100− {
101− g_warning ("Secret request with id <%d> was not found", (int)request);
102− return;
103− }
104−
105− req = iter->data;
106−
107− req->callback (NM_SECRET_AGENT (agent),
108− req->connection,
109− secrets,
110− NULL,
111− req->callback_data);
112−
113− g_queue_remove_all (priv->requests, req);
114− g_free (req);
115− return;
116−}
117−
118−void
119−free_request (SecretRequest *req)
120−{
121− g_object_unref (req->connection);
122− g_free (req);
123−}
124−
125−void
126−unity_settings_secret_agent_cancel_request (UnitySettingsSecretAgent *agent,
127− guint request)
128−{
129− GList *iter;
130− SecretRequest *req;
131− UnitySettingsSecretAgentPrivate *priv = agent->priv;
132− GError *error;
133−
134− iter = g_queue_find_custom (priv->requests,
135− &request,
136− (GCompareFunc)secret_request_find);
137−
138− if (iter == NULL || iter->data == NULL)
139− {
140− g_warning ("Secret request with id <%d> was not found", (int)request);
141− return;
142− }
143−
144− req = iter->data;
145− error = g_error_new (NM_SECRET_AGENT_ERROR,
146− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
147− "This secret request was canceled by the user.");
148−
149− req->callback (NM_SECRET_AGENT (agent),
150− req->connection,
151− NULL,
152− error,
153− req->callback_data);
154−
155− g_queue_remove_all (priv->requests, req);
156− free_request (req);
157− return;
158−}
159−
160−static void
161−delete_secrets (NMSecretAgent *agent,
162− NMConnection *connection,
163− const char *connection_path,
164− NMSecretAgentDeleteSecretsFunc callback,
165− gpointer callback_data)
166−{
167− g_debug ("delete secrets");
168−}
169−
170−/* If it returns G_MAXUINT it's considered an error */
171−static guint
172−find_available_id (UnitySettingsSecretAgentPrivate *priv)
173−{
174− guint i = 0;
175− guint candidate = 0;
176−
177− if (g_queue_get_length (priv->requests) == G_MAXUINT)
178− return G_MAXUINT;
179−
180− while (i < g_queue_get_length (priv->requests))
181− {
182− SecretRequest *req = (SecretRequest*)g_queue_peek_nth (priv->requests, i);
183−
184− if (req->id == candidate)
185− {
186− candidate++;
187− i = 0;
188− }
189− else
190− {
191− i++;
192− }
193− }
194−
195− return i;
196−}
197−
198−static void
199−get_secrets (NMSecretAgent *agent,
200− NMConnection *connection,
201− const char *connection_path,
202− const char *setting_name,
203− const char **hints,
204− NMSecretAgentGetSecretsFlags flags,
205− NMSecretAgentGetSecretsFunc callback,
206− gpointer callback_data)
207−{
208− guint id;
209− UnitySettingsSecretAgentPrivate *priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (agent);
210− SecretRequest *req = NULL;
211−
212− if (flags == NM_SECRET_AGENT_GET_SECRETS_FLAG_NONE)
213− {
214− GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
215− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
216− "No password found for this connection.");
217− callback (agent, connection, NULL, error, callback_data);
218− g_error_free (error);
219− return;
220− }
221−
222− id = find_available_id (priv);
223− if (id == G_MAXUINT)
224− {
225− GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
226− NM_SECRET_AGENT_ERROR_INTERNAL_ERROR,
227− "Reached maximum number of requests.");
228− callback (agent, connection, NULL, error, callback_data);
229− g_error_free (error);
230− return;
231− }
232−
233− /* Adding a request */
234− req = (SecretRequest*) g_malloc0 (sizeof (SecretRequest));
235− *req = ((SecretRequest)
236− { id,
237− agent,
238− connection,
239− connection_path,
240− setting_name,
241− hints,
242− flags,
243− callback,
244− callback_data });
245−
246− g_object_ref (connection);
247−
248− g_queue_push_tail (priv->requests, req);
249−
250− g_signal_emit_by_name (agent,
251− UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
252− id,
253− connection,
254− setting_name,
255− hints,
256− flags);
257−}
258−
259−static void
260−save_secrets (NMSecretAgent *agent,
261− NMConnection *connection,
262− const char *connection_path,
263− NMSecretAgentSaveSecretsFunc callback,
264− gpointer callback_data)
265−{
266− g_debug ("save secrets");
267−}
268−
269−static void
270−cancel_get_secrets (NMSecretAgent *agent,
271− const char *connection_path,
272− const char *setting_name)
273−{
274− g_debug ("cancel get secrets");
275−}
276−
277−UnitySettingsSecretAgent*
278−unity_settings_secret_agent_construct (GType object_type)
279−{
280− UnitySettingsSecretAgent * self = NULL;
281− self = (UnitySettingsSecretAgent*) g_object_new (object_type,
282− NM_SECRET_AGENT_IDENTIFIER, AGENT_ID,
283− NULL);
284− return self;
285−}
286−
287−
288−UnitySettingsSecretAgent*
289−unity_settings_secret_agent_new (void)
290−{
291− return unity_settings_secret_agent_construct (UNITY_SETTINGS_TYPE_SECRET_AGENT);
292−}
293−
294−static void
295−destroy_pending_request (gpointer data)
296−{
297− SecretRequest* req = (SecretRequest*)data;
298− /* Reporting the cancellation of all pending requests */
299− g_signal_emit_by_name (req->agent,
300− UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
301− req->id);
302−
303− free_request (req);
304−}
305−
306−static void
307−unity_settings_secret_agent_finalize (GObject *agent)
308−{
309− UnitySettingsSecretAgentPrivate *priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (agent);
310−
311− g_queue_free_full (priv->requests, destroy_pending_request);
312−}
313−
314−static void
315−unity_settings_secret_agent_class_init (UnitySettingsSecretAgentClass *klass)
316−{
317− unity_settings_secret_agent_parent_class = g_type_class_peek_parent (klass);
318− NMSecretAgentClass *parent_class = NM_SECRET_AGENT_CLASS (klass);
319− parent_class->get_secrets = get_secrets;
320− parent_class->save_secrets = save_secrets;
321− parent_class->delete_secrets = delete_secrets;
322− parent_class->cancel_get_secrets = cancel_get_secrets;
323−
324− g_type_class_add_private (klass, sizeof(UnitySettingsSecretAgentPrivate));
325− G_OBJECT_CLASS (klass)->finalize = unity_settings_secret_agent_finalize;
326−
327−
328− signals[SECRET_REQUESTED] = g_signal_new (UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED,
329− G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
330− G_SIGNAL_RUN_FIRST,
331− G_STRUCT_OFFSET (UnitySettingsSecretAgentClass, secret_requested),
332− NULL, NULL, NULL,
333− G_TYPE_NONE, 5,
334− G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_UINT);
335−
336− signals[REQUEST_CANCELLED] = g_signal_new (UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED,
337− G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
338− G_SIGNAL_RUN_FIRST,
339− G_STRUCT_OFFSET (UnitySettingsSecretAgentClass, request_cancelled),
340− NULL, NULL, NULL,
341− G_TYPE_NONE, 1,
342− G_TYPE_UINT);
343−}
344−
345−
346−static void
347−unity_settings_secret_agent_instance_init (UnitySettingsSecretAgent *self)
348−{
349− self->priv = UNITY_SETTINGS_SECRET_AGENT_GET_PRIVATE (self);
350− self->priv->requests = g_queue_new ();
351−}
352−
353−GType
354−unity_settings_secret_agent_get_type (void)
355−{
356− static volatile gsize unity_settings_secret_agent_type_id__volatile = 0;
357− if (g_once_init_enter (&unity_settings_secret_agent_type_id__volatile))
358− {
359− static const GTypeInfo g_define_type_info =
360− {
361− sizeof (UnitySettingsSecretAgentClass),
362− (GBaseInitFunc) NULL,
363− (GBaseFinalizeFunc) NULL,
364− (GClassInitFunc) unity_settings_secret_agent_class_init,
365− (GClassFinalizeFunc) NULL,
366− NULL,
367− sizeof (UnitySettingsSecretAgent),
368− 0,
369− (GInstanceInitFunc) unity_settings_secret_agent_instance_init,
370− NULL
371− };
372− GType unity_settings_secret_agent_type_id;
373− unity_settings_secret_agent_type_id = g_type_register_static (NM_TYPE_SECRET_AGENT,
374− "UnitySettingsSecretAgent",
375− &g_define_type_info,
376− 0);
377− g_once_init_leave (&unity_settings_secret_agent_type_id__volatile,
378− unity_settings_secret_agent_type_id);
379− }
380−
381− return unity_settings_secret_agent_type_id__volatile;
382−}
plugins/Unity/IndicatorsLegacy/Network/secret-agent.hdeleted−102
@@ -1,102 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Alberto Ruiz <alberto.ruiz@canonical.com>
18− * Renato Araujo Oliveira Filho <renato@canonical.com>
19− */
20−
21−#ifndef __SECRET_AGENT_H__
22−#define __SECRET_AGENT_H__
23−
24−#include <glib.h>
25−#include <glib-object.h>
26−#include <nm-secret-agent.h>
27−
28−/*
29− * This class is a basic implementation of the NetworkManager SecretAgent base class.
30− *
31− * The purpose of this class is to handle credential requests from the network,
32− * for example, from a WiFi hotspot or a VPN network.
33− *
34− * It queues requests objects (SecretRequest) on a GQueue in the private struct
35− * of the class. And notifies the consumer of the class through the "secret-request"
36− * and the "request-cancelled" signals with the following callback prototypes:
37− *
38− * void (*secret_requested) (UnitySettingsSecretAgent *self,
39− * guint id,
40− * NMConnection *connection,
41− * const char *setting_name,
42− * const char **hints,
43− * NMSecretAgentGetSecretsFlags flags,
44− * gpointer user_data);
45− *
46− * void (*request_cancelled) (UnitySettingsSecretAgent *self,
47− * guint id,
48− * gpointer user_data);
49− *
50− */
51−
52−
53−G_BEGIN_DECLS
54−
55−
56−#define UNITY_SETTINGS_TYPE_SECRET_AGENT (unity_settings_secret_agent_get_type ())
57−#define UNITY_SETTINGS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgent))
58−#define UNITY_SETTINGS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
59−#define UNITY_SETTINGS_IS_SECRET_AGENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT))
60−#define UNITY_SETTINGS_IS_SECRET_AGENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), UNITY_SETTINGS_TYPE_SECRET_AGENT))
61−#define UNITY_SETTINGS_SECRET_AGENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), UNITY_SETTINGS_TYPE_SECRET_AGENT, UnitySettingsSecretAgentClass))
62−
63−#define UNITY_SETTINGS_SECRET_AGENT_SECRET_REQUESTED "secret-requested"
64−#define UNITY_SETTINGS_SECRET_AGENT_REQUEST_CANCELLED "request-cancelled"
65−
66−typedef struct _UnitySettingsSecretAgent UnitySettingsSecretAgent;
67−typedef struct _UnitySettingsSecretAgentClass UnitySettingsSecretAgentClass;
68−typedef struct _UnitySettingsSecretAgentPrivate UnitySettingsSecretAgentPrivate;
69−
70−struct _UnitySettingsSecretAgent {
71− NMSecretAgent parent_instance;
72− UnitySettingsSecretAgentPrivate * priv;
73−};
74−
75−struct _UnitySettingsSecretAgentClass {
76− NMSecretAgentClass parent_class;
77−
78− void (*secret_requested) (UnitySettingsSecretAgent *self,
79− guint id,
80− NMConnection *connection,
81− const char *setting_name,
82− const char **hints,
83− NMSecretAgentGetSecretsFlags flags);
84−
85− void (*request_cancelled) (UnitySettingsSecretAgent *self,
86− guint id);
87−};
88−
89−
90−GType unity_settings_secret_agent_get_type (void) G_GNUC_CONST;
91−UnitySettingsSecretAgent* unity_settings_secret_agent_new (void);
92−UnitySettingsSecretAgent* unity_settings_secret_agent_construct (GType object_type);
93−
94−void unity_settings_secret_agent_provide_secret (UnitySettingsSecretAgent *agent,
95− guint request,
96− GHashTable *secrets);
97−void unity_settings_secret_agent_cancel_request (UnitySettingsSecretAgent *agent,
98− guint request);
99−
100−G_END_DECLS
101−
102−#endif
plugins/Unity/IndicatorsLegacy/flatmenuproxymodel.cppdeleted−288
@@ -1,288 +0,0 @@
1−/*
2− * Copyright 2012 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−extern "C" {
21−#include <gio/gio.h>
22−}
23−
24−#include "flatmenuproxymodel.h"
25−#include <QString>
26−#include <QStringList>
27−
28−FlatMenuProxyModel::FlatMenuProxyModel(QAbstractItemModel *source)
29− : QAbstractProxyModel(source),
30− m_rowCount(0)
31−{
32− m_model = new QDBusMenuModel;
33− setSourceModel(m_model);
34−}
35−
36−/*! \internal */
37−FlatMenuProxyModel::~FlatMenuProxyModel()
38−{
39− delete m_model;
40−}
41−
42−void FlatMenuProxyModel::setSourceModel(QAbstractItemModel *source)
43−{
44− if (sourceModel()) {
45− QAbstractItemModel *oldSource = sourceModel();
46− if (oldSource == source) {
47− return;
48− }
49−
50− oldSource->disconnect(this);
51− }
52−
53− QAbstractProxyModel::setSourceModel(source);
54−
55− if (source) {
56−
57− // FIXME - not working correctly with dynamic inserts/removes
58− // FIXME 2 - We're using Queud connections as a workaround to QTBUG-32859
59− // The signals from qmenumodel are coming straight off the glib event loop,
60− // which is not supported and has the effect of listview delegates not to be deleted.
61−
62− connect(source,
63− SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
64− SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
65− connect(source,
66− SIGNAL(rowsInserted(QModelIndex,int,int)),
67− SLOT(onModelReset()), Qt::QueuedConnection);
68−
69− connect(source,
70− SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
71− SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
72− connect(source,
73− SIGNAL(rowsRemoved(QModelIndex,int,int)),
74− SLOT(onModelReset()), Qt::QueuedConnection);
75−
76− connect(source,
77− SIGNAL(modelAboutToBeReset()),
78− SLOT(onModelAboutToBeReset()), Qt::QueuedConnection);
79− connect(source,
80− SIGNAL(modelReset()),
81− SLOT(onModelReset()), Qt::QueuedConnection);
82−
83− //Connection args
84− connect(source,
85− SIGNAL(busTypeChanged(DBusEnums::BusType)),
86− SIGNAL(busTypeChanged()));
87−
88− connect(source,
89− SIGNAL(busNameChanged(const QString&)),
90− SIGNAL(busNameChanged()));
91−
92− connect(source,
93− SIGNAL(objectPathChanged(const QString&)),
94− SIGNAL(objectPathChanged()));
95−
96− connect(source,
97− SIGNAL(statusChanged(DBusEnums::ConnectionStatus)),
98− SIGNAL(statusChanged()), Qt::QueuedConnection);
99−
100− // initiliaze rowCount
101− QModelIndex lastItem = source->index(source->rowCount() - 1, 0);
102− m_rowCount = recursiveRowCount(lastItem);
103− } else {
104− m_rowCount = 0;
105− }
106−
107− Q_EMIT countChanged();
108−}
109−
110−void FlatMenuProxyModel::setBusName(const QString &busName)
111−{
112− m_model->setBusName(busName);
113−}
114−
115−QString FlatMenuProxyModel::busName() const
116−{
117− return m_model->busName();
118−}
119−
120−void FlatMenuProxyModel::setObjectPath(const QString &busPath)
121−{
122− m_model->setObjectPath(busPath);
123−}
124−
125−QString FlatMenuProxyModel::objectPath() const
126−{
127− return m_model->objectPath();
128−}
129−
130−int FlatMenuProxyModel::status() const
131−{
132− return m_model->status();
133−}
134−
135−DBusEnums::BusType FlatMenuProxyModel::busType() const
136−{
137− return m_model->busType();
138−}
139−
140−void FlatMenuProxyModel::setIntBusType(int type)
141−{
142− m_model->setBusType((DBusEnums::BusType) type);
143−}
144−
145−void FlatMenuProxyModel::start()
146−{
147− m_model->start();
148−}
149−
150−void FlatMenuProxyModel::stop()
151−{
152− m_model->stop();
153−}
154−
155−QModelIndex FlatMenuProxyModel::mapFromSource(const QModelIndex &index) const
156−{
157− if (!index.isValid()) {
158− return QModelIndex();
159− }
160−
161− QModelIndex result = createIndex(rowOffsetOf(index, index.row()), 0);
162− return result;
163−}
164−
165−QModelIndex FlatMenuProxyModel::mapToSource(const QModelIndex &index) const
166−{
167− if (sourceModel() && m_indexCache.contains(index.row())) {
168− QString key = m_indexCache.value(index.row());
169− QStringList sections = key.split('.', QString::SkipEmptyParts);
170− QModelIndex sourceIndex = QModelIndex();
171− for(int i=0; i < sections.size(); i++) {
172− sourceIndex = sourceModel()->index(sections.at(i).toInt(), 9, sourceIndex);
173− }
174− return sourceIndex;
175− } else {
176− return QModelIndex();
177− }
178−}
179−
180−QModelIndex FlatMenuProxyModel::index(int row, int sectionRow, const QModelIndex &parent, const QString &key) const
181−{
182− for (int i = 0, count = 0; i < sourceModel()->rowCount(parent); i++) {
183− QModelIndex sourceIndex = sourceModel()->index(i, 0, parent);
184− int indexCount = recursiveRowCount(sourceIndex);
185−
186− if (count == sectionRow) {
187− QString sectionKey = key + "." + QString::number(i);
188− m_indexCache.insert(row, sectionKey);
189− return createIndex(row, 0);
190− } else if ((count + indexCount) >= sectionRow) {
191− count++;
192− return index(row, sectionRow - count, sourceIndex, key + "." + QString::number(i));
193− }
194−
195− count += indexCount + 1;
196− }
197− return QModelIndex();
198−}
199−
200−QModelIndex FlatMenuProxyModel::index(int row, int, const QModelIndex &) const
201−{
202− return index(row, row, QModelIndex(), "");
203−}
204−
205−QModelIndex FlatMenuProxyModel::parent(const QModelIndex &) const
206−{
207− return QModelIndex();
208−}
209−
210−int FlatMenuProxyModel::columnCount(const QModelIndex &) const
211−{
212− return 1;
213−}
214−
215−int FlatMenuProxyModel::rowCount(const QModelIndex &) const
216−{
217− return m_rowCount;
218−}
219−
220−int FlatMenuProxyModel::count() const
221−{
222− return rowCount(QModelIndex());
223−}
224−
225−void FlatMenuProxyModel::onModelAboutToBeReset()
226−{
227− beginResetModel();
228−}
229−
230−void FlatMenuProxyModel::onModelReset()
231−{
232− // initiliaze rowCount
233− m_rowCount = 0;
234− for (int i = 0, iMax = sourceModel()->rowCount(); i < iMax; i++) {
235− QModelIndex index = sourceModel()->index(i, 0);
236− m_rowCount += recursiveRowCount(index) + 1;
237− }
238− m_indexCache.clear();
239− endResetModel();
240− Q_EMIT countChanged();
241−}
242−
243−int FlatMenuProxyModel::recursiveRowCount(const QModelIndex &index) const
244−{
245− int size = sourceModel()->rowCount(index);
246− for (int i=0, iMax=size; i < iMax; i++) {
247− QModelIndex currentIndex = sourceModel()->index(i, 0, index);
248− size += recursiveRowCount(currentIndex);
249− }
250−
251− return size;
252−}
253−
254−int FlatMenuProxyModel::rowOffsetOf(const QModelIndex &index, int row, bool inclusive) const
255−{
256− int offset = 0;
257−
258− QModelIndex parent = index.parent();
259−
260− // Check row 0 offset
261− while(parent.isValid()) {
262− offset += 1;
263− for (int i = 0; i < parent.row(); i++) {
264− QModelIndex currentIndex = sourceModel()->index(i, 0, parent);
265− offset += recursiveRowCount(currentIndex) + 1;
266− }
267− parent = parent.parent();
268− }
269−
270− // Check index.row() offset
271− for(int i = 0; i < row; i++) {
272− QModelIndex currentIndex = sourceModel()->index(i, 0, index.parent());
273− offset += recursiveRowCount(currentIndex) + 1;
274− }
275−
276− if (inclusive) {
277− // itself
278− QModelIndex currentIndex = sourceModel()->index(row, 0, index.parent());
279− offset += recursiveRowCount(currentIndex);
280− }
281−
282− return offset;
283−}
284−
285−QVariant FlatMenuProxyModel::data(int row, int role) const
286−{
287− return QAbstractProxyModel::data(index(row, 0), role);
288−}
plugins/Unity/IndicatorsLegacy/flatmenuproxymodel.hdeleted−93
@@ -1,93 +0,0 @@
1−/*
2− * Copyright 2012 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−#ifndef FLATMENUPROXYMODEL_H
21−#define FLATMENUPROXYMODEL_H
22−
23−#include "unityindicatorsglobal.h"
24−
25−#include <QAbstractProxyModel>
26−#include <qdbusmenumodel.h>
27−
28−class SectionInfo;
29−
30−class UNITYINDICATORS_EXPORT FlatMenuProxyModel : public QAbstractProxyModel
31−{
32− Q_OBJECT
33− Q_PROPERTY(int count READ count NOTIFY countChanged)
34− Q_PROPERTY(int busType READ busType WRITE setIntBusType NOTIFY busTypeChanged)
35− Q_PROPERTY(QString busName READ busName WRITE setBusName NOTIFY busNameChanged)
36− Q_PROPERTY(QString objectPath READ objectPath WRITE setObjectPath NOTIFY objectPathChanged)
37− Q_PROPERTY(int status READ status NOTIFY statusChanged)
38−
39− Q_ENUMS(Roles)
40−public:
41− FlatMenuProxyModel(QAbstractItemModel *source=0);
42− ~FlatMenuProxyModel();
43−
44− void setSourceModel(QAbstractItemModel * sourceModel);
45−
46− Q_INVOKABLE QVariant data(int row, int role = Qt::DisplayRole) const;
47−
48− QModelIndex mapFromSource(const QModelIndex &index) const;
49− QModelIndex mapToSource(const QModelIndex &index) const;
50−
51− QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
52− QModelIndex parent(const QModelIndex &index) const;
53− int rowCount(const QModelIndex &parent = QModelIndex()) const;
54− int count() const;
55− int columnCount(const QModelIndex &parent) const;
56−
57− void setBusName(const QString &busName);
58− QString busName() const;
59−
60− void setObjectPath(const QString &busName);
61− QString objectPath() const;
62−
63− DBusEnums::BusType busType() const;
64− void setIntBusType(int type);
65−
66− int status() const;
67−
68−public Q_SLOTS:
69− void onModelAboutToBeReset();
70− void onModelReset();
71−
72− void start();
73− void stop();
74−
75−Q_SIGNALS:
76− void countChanged();
77−
78− void busTypeChanged();
79− void busNameChanged();
80− void objectPathChanged();
81− void statusChanged();
82−
83−private:
84− QDBusMenuModel *m_model;
85− mutable QMap<int, QString> m_indexCache;
86− int m_rowCount;
87−
88− int rowOffsetOf(const QModelIndex &index, int row, bool inclusive = false) const;
89− int recursiveRowCount(const QModelIndex &index) const;
90− QModelIndex index(int row, int rowCount, const QModelIndex &parent, const QString &key) const;
91−};
92−
93−#endif
plugins/Unity/IndicatorsLegacy/modelprinter.cppdeleted−114
@@ -1,114 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−// self
21−#include "modelprinter.h"
22−
23−// Qt
24−#include <QTextStream>
25−
26−ModelPrinter::ModelPrinter(QObject *parent)
27− : QObject(parent)
28− , m_model(NULL)
29−{
30−}
31−
32−void ModelPrinter::setSourceModel(QAbstractItemModel * sourceModel)
33−{
34− if (m_model != NULL) {
35− disconnect(m_model);
36− }
37− if (m_model != sourceModel) {
38− m_model = sourceModel;
39− Q_EMIT modelChanged();
40− Q_EMIT textChanged();
41− }
42− if (m_model != NULL) {
43− connect(m_model, SIGNAL(modelReset()), this, SIGNAL(textChanged()));
44− connect(m_model, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SIGNAL(textChanged()));
45− connect(m_model, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SIGNAL(textChanged()));
46− }
47−}
48−
49−QAbstractItemModel* ModelPrinter::sourceModel() const
50−{
51− return m_model;
52−}
53−
54−QString ModelPrinter::text(const QModelIndex& index) const
55−{
56− return recurseString(index, 0);
57−}
58−
59−QString tabify(int level) { QString str;
60− for (int i = 0; i < level; i++) {
61− str += " ";
62− }
63− return str;
64−}
65−
66−QString ModelPrinter::recurseString(const QModelIndex& index, int level) const
67−{
68− if (!m_model)
69− return "";
70−
71− QString str;
72− QTextStream stream(&str);
73−
74− QHash<int, QByteArray> roleNames = m_model->roleNames();
75− QList<int> roles = roleNames.keys();
76− qSort(roles);
77− Q_FOREACH(int role, roles) {
78− QVariant vData = m_model->data(index, role);
79− if (vData.canConvert(QMetaType::QVariantMap)) {
80− QMapIterator<QString, QVariant> iter(vData.toMap());
81− while (iter.hasNext()) {
82− iter.next();
83− stream << tabify(level)
84− << roleNames[role]
85− << "."
86− << iter.key()
87− << ": "
88− << iter.value().toString()
89− << endl;
90− }
91− }
92− else {
93− stream << tabify(level)
94− << roleNames[role]
95− << ": "
96− << vData.toString()
97− << endl;
98− }
99− }
100−
101− int rowCount = m_model->rowCount(index);
102− stream << tabify(level)
103− << "child count"
104− << ": "
105− << rowCount
106− << endl
107− << endl;
108−
109− for (int i = 0; i < rowCount; i++) {
110− QModelIndex child = m_model->index(i, 0, index);
111− str += recurseString(child, level+1);
112− }
113− return str;
114−}
plugins/Unity/IndicatorsLegacy/modelprinter.hdeleted−50
@@ -1,50 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−#ifndef MODELPRINTER_H
21−#define MODELPRINTER_H
22−
23−#include <QSortFilterProxyModel>
24−
25−// This class acts as a namespace only, with the addition that its enums
26−// are registered to be exposed on the QML side.
27−class ModelPrinter : public QObject
28−{
29− Q_OBJECT
30−
31− Q_PROPERTY(QAbstractItemModel* model READ sourceModel WRITE setSourceModel NOTIFY modelChanged)
32− Q_PROPERTY(QString text READ text NOTIFY textChanged)
33−public:
34− ModelPrinter(QObject* parent=0);
35−
36− void setSourceModel(QAbstractItemModel* sourceModel);
37− QAbstractItemModel* sourceModel() const;
38−
39− Q_INVOKABLE QString text(const QModelIndex& index = QModelIndex()) const;
40−
41−Q_SIGNALS:
42− void modelChanged();
43− void textChanged();
44−
45−private:
46− QString recurseString(const QModelIndex& index, int level) const;
47− QAbstractItemModel* m_model;
48−};
49−
50−#endif // MODELPRINTER_H
plugins/Unity/IndicatorsLegacy/plugin.cppdeleted−42
@@ -1,42 +0,0 @@
1−/*
2− * Copyright (C) 2012 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Author: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−// Qt
20−#include <QtQml/qqml.h>
21−
22−// self
23−#include "plugin.h"
24−
25−// local
26−#include "flatmenuproxymodel.h"
27−#include "indicators.h"
28−#include "modelprinter.h"
29−
30−void IndicatorsPlugin::registerTypes(const char *uri)
31−{
32− Q_INIT_RESOURCE(indicators);
33−
34− qmlRegisterType<FlatMenuProxyModel>(uri, 0, 1, "FlatMenuProxyModel");
35− qmlRegisterType<ModelPrinter>(uri, 0, 1, "ModelPrinter");
36−
37− qmlRegisterUncreatableType<ActionState>(uri, 0, 1, "ActionState", "Can't create ActionState class");
38− qmlRegisterUncreatableType<NetworkActionState>(uri, 0, 1, "NetworkActionState", "Can't create NetworkActionState class");
39− qmlRegisterUncreatableType<NetworkConnection>(uri, 0, 1, "NetworkConnection", "Can't create NetworkConnection class");
40− qmlRegisterUncreatableType<IndicatorsModelRole>(uri, 0, 1, "IndicatorsModelRole", "Can't create IndicatorsModelRole class");
41− qmlRegisterUncreatableType<FlatMenuProxyModelRole>(uri, 0, 1, "FlatMenuProxyModelRole", "Can't create FlatMenuProxyModelRole class");
42−}
plugins/Unity/IndicatorsLegacy/plugin.hdeleted−32
@@ -1,32 +0,0 @@
1−/*
2− * Copyright (C) 2012 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Author: Nick Dedekind <nick.dedekind@canonical.com>
17− */
18−
19−#ifndef INDICATORS_PLUGIN_H
20−#define INDICATORS_PLUGIN_H
21−
22−#include <QtQml/QQmlExtensionPlugin>
23−
24−class IndicatorsPlugin : public QQmlExtensionPlugin
25−{
26− Q_OBJECT
27− Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface")
28−public:
29− void registerTypes(const char *uri);
30−};
31−
32−#endif // INDICATORS_PLUGIN_H
plugins/Unity/IndicatorsLegacy/qml/BasicMenuItem.qmldeleted−48
@@ -1,48 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components.ListItems 0.1 as ListItem
22−
23−ListItem.Standard {
24− id: stdListItem
25−
26− property bool menuActivated: false
27− property QtObject menu
28− property QtObject actionGroup
29− property alias color: background.color
30−
31− signal activateMenu()
32− signal deactivateMenu()
33−
34− showDivider: false
35− __foregroundColor: "#e8e1d0"
36−
37− backgroundIndicator: RemoveBackground {
38− state: stdListItem.swipingState
39− }
40−
41− Rectangle {
42− id: background
43−
44− anchors.fill: parent
45− color: "#221e1c"
46− z: -1
47− }
48−}
plugins/Unity/IndicatorsLegacy/qml/ButtonMenuItem.qmldeleted−47
@@ -1,47 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−BasicMenuItem {
24− id: buttonMenu
25− color: "#221e1b"
26− implicitHeight: units.gu(7)
27−
28− Button {
29− id: button
30− enabled: menuAction.valid
31− text: menu ? menu.label : ""
32− anchors.centerIn: parent
33− height: units.gu(4)
34− width: units.gu(16)
35− color: "#1b1817"
36−
37− onClicked: {
38− menuAction.activate()
39− }
40− }
41−
42− MenuAction {
43− id: menuAction
44− actionGroup: buttonMenu.actionGroup
45− action: menu ? menu.action : ""
46− }
47−}
plugins/Unity/IndicatorsLegacy/qml/CMakeLists.txtdeleted−5
@@ -1,5 +0,0 @@
1−# export_qmlplugin macro
2−include(Plugins)
3−
4−# export the qmldir, *.qml files.
5−export_qmlfiles(Unity.IndicatorsLegacy Unity/IndicatorsLegacy)
plugins/Unity/IndicatorsLegacy/qml/DivMenuItem.qmldeleted−26
@@ -1,26 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Olivier Tilloy <olivier.tilloy@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−Rectangle {
24− color: "#181514"
25− implicitHeight: units.gu(1)
26−}
plugins/Unity/IndicatorsLegacy/qml/HLine.qmldeleted−29
@@ -1,29 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−Rectangle {
24− height: units.dp(1)
25− anchors {
26− left: parent.left
27− right: parent.right
28− }
29−}
plugins/Unity/IndicatorsLegacy/qml/IndicatorBase.qmldeleted−59
@@ -1,59 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− * Nick Dedekind <nick.dedekind@canonical.com>
19− */
20−
21−import QtQuick 2.0
22−import QMenuModel 0.1
23−import Unity.IndicatorsLegacy 0.1 as Indicators
24−
25−Item {
26− id: indicatorItem
27−
28− //const
29− property string title
30− property int busType
31− property string busName
32− property string actionsObjectPath
33− property var menuObjectPaths: undefined
34− readonly property string device: "phone"
35−
36− property string deviceMenuObjectPath: menuObjectPaths.hasOwnProperty(device) ? menuObjectPaths[device] : ""
37−
38− signal actionGroupUpdated()
39− signal modelUpdated()
40−
41− property var actionGroup: QDBusActionGroup {
42− busType: indicatorItem.busType
43− busName: indicatorItem.busName
44− objectPath: indicatorItem.actionsObjectPath
45−
46− onActionAppear: indicatorItem.actionGroupUpdated();
47− }
48−
49− property var proxyModel: Indicators.FlatMenuProxyModel {
50− busType: indicatorItem.busType
51− busName: indicatorItem.busName
52− objectPath: indicatorItem.deviceMenuObjectPath
53−
54− onStatusChanged: indicatorItem.modelUpdated();
55− onRowsInserted: indicatorItem.modelUpdated();
56− onRowsRemoved: indicatorItem.modelUpdated();
57− onDataChanged: indicatorItem.modelUpdated();
58− }
59−}
plugins/Unity/IndicatorsLegacy/qml/IndicatorPage.qmldeleted−191
@@ -1,191 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− * Nick Dedekind <nick.dedekind@canonical.com>
19− */
20−
21−import QtQuick 2.0
22−import Ubuntu.Components 0.1 as Components
23−
24−IndicatorBase {
25− id: main
26−
27− //const
28− property alias emptyText: emptyLabel.text
29− property alias highlightFollowsCurrentItem : mainMenu.highlightFollowsCurrentItem
30− property bool __active: false
31−
32− ListView {
33− id: mainMenu
34−
35− property int visibleItems: 0
36−
37− model: proxyModel
38− anchors {
39− fill: parent
40− bottomMargin: Qt.inputMethod.visible ? (Qt.inputMethod.keyboardRectangle.height - main.anchors.bottomMargin) : 0
41−
42− Behavior on bottomMargin {
43− NumberAnimation {
44− duration: 175
45− easing.type: Easing.OutQuad
46− }
47− }
48− // TODO - does ever frame.
49− onBottomMarginChanged: {
50− mainMenu.positionViewAtIndex(mainMenu.currentIndex, ListView.End)
51− }
52− }
53−
54− // Ensure all delegates are cached in order to improve smoothness of scrolling
55− cacheBuffer: 10000
56−
57− // Only allow flicking if the content doesn't fit on the page
58− interactive: contentHeight > height
59−
60− currentIndex: -1
61− delegate: Item {
62− id: item
63− property bool ready: false
64− property alias empty: factory.empty
65−
66− anchors {
67− left: parent.left
68− right: parent.right
69− }
70− height: div.height + factory.implicitHeight
71− visible: height > 0
72−
73− Component.onCompleted: {
74− if (!item.empty) {
75− mainMenu.visibleItems += 1;
76− }
77− ready = true;
78− }
79− Component.onDestruction: {
80− if (!item.empty) {
81− mainMenu.visibleItems -= 1;
82− }
83− ready = false;
84− }
85−
86− onEmptyChanged: {
87− if (!ready) {
88− return;
89− }
90− if (empty) {
91− mainMenu.visibleItems -= 1;
92− } else {
93− mainMenu.visibleItems += 1;
94− }
95− }
96−
97− ListView.onRemove: {
98− if (!highlightFollowsCurrentItem) {
99− mainMenu.currentIndex = -1;
100− }
101− }
102−
103− Column {
104− id: contents
105−
106− anchors.fill: parent
107−
108− DivMenuItem {
109− id: div
110−
111− anchors.left: parent.left
112− anchors.right: parent.right
113− // only visible if is a root or a section header element and the factory is visible
114− height: {
115− // skipe first item
116− if (item.y == 0) {
117− return 0;
118− }
119− if (hasSection || ((depth == 0) && (!factory.empty))) {
120− return implicitHeight;
121− } else {
122− return 0;
123− }
124− }
125− }
126−
127− MenuItemFactory {
128− id: factory
129−
130− actionGroup: main.actionGroup
131− isCurrentItem: item.ListView.isCurrentItem
132− anchors {
133− left: parent.left
134− right: parent.right
135− }
136− menu: model
137−
138− Connections {
139− target : factory
140− onActivated: item.ListView.view.currentIndex = index
141− onDeactivated: item.ListView.view.currentIndex = -1
142− }
143− }
144− }
145− }
146− }
147−
148− Components.Label {
149− id: emptyLabel
150− visible: (mainMenu.visibleItems === 0)
151− anchors {
152− top: parent.top
153− left: parent.left
154− right: parent.right
155− topMargin: units.gu(2)
156− }
157− wrapMode: Text.WordWrap
158− horizontalAlignment: Text.AlignHCenter
159−
160− //style
161− color: "#e8e1d0"
162− fontSize: "medium"
163−
164− text: "Empty!"
165− }
166−
167− function start()
168− {
169− reset()
170− if (!__active) {
171− proxyModel.start();
172− actionGroup.start();
173− __active = true;
174− }
175− }
176−
177− function stop()
178− {
179− if (__active) {
180− __active = false;
181− proxyModel.stop();
182− actionGroup.stop();
183− }
184− }
185−
186− function reset()
187− {
188− mainMenu.currentIndex = -1;
189− mainMenu.positionViewAtBeginning();
190− }
191−}
plugins/Unity/IndicatorsLegacy/qml/IndicatorWidget.qmldeleted−68
@@ -1,68 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.IndicatorsLegacy 0.1 as Indicators
22−
23−IndicatorBase {
24− id: indicatorWidget
25−
26− enabled: false
27− property var action: undefined
28− property bool started: (busType != 0) && (busName != "") && (deviceMenuObjectPath != "")
29− property int iconSize: height - units.gu(0.5)
30− property string rootMenuType: "com.canonical.indicator.root"
31−
32− signal actionStateChanged()
33−
34− onStartedChanged: {
35− if (started) {
36− proxyModel.start();
37− actionGroup.start();
38− } else {
39− proxyModel.stop();
40− actionGroup.stop();
41− }
42− }
43− onActionGroupUpdated: update_state()
44− onModelUpdated: update_state()
45−
46−
47− function update_state() {
48− var extra = proxyModel.data(0, Indicators.FlatMenuProxyModelRole.Extra);
49− if (extra == undefined) {
50− return;
51− }
52−
53− if (!extra.hasOwnProperty("canonical_type")) {
54− return;
55− }
56−
57− if (extra.canonical_type === rootMenuType) {
58− action = actionGroup.action(proxyModel.data(0, Indicators.FlatMenuProxyModelRole.Action));
59− actionStateChanged();
60− }
61− }
62−
63− Connections {
64− target: action == undefined ? null : action
65− onStateChanged: actionStateChanged()
66− onValidChanged: actionStateChanged()
67− }
68−}
plugins/Unity/IndicatorsLegacy/qml/MenuAction.qmldeleted−86
@@ -1,86 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−
22−/*!
23− \qmltype MenuAction
24− \inqmlmodule Indicators 0.1
25− \brief Helper class to connect to a qmenumodel action
26−
27− Example:
28− \qml
29− Button {
30− id: slide
31− onClick: { action.activate() }
32− }
33− MenuAction {
34− id: action
35− actionGroup: menuItem.actionGroup
36− action: "/ubuntu/sound/enabled"
37− }
38− \endqml
39−*/
40−
41−Item {
42− id: menuAction
43−
44− /*!
45− \preliminary
46− The dbus action name
47− */
48− property string action: ""
49−
50− /*!
51− \preliminary
52− The dbus action group object
53− */
54− property QtObject actionGroup: null
55−
56− /*!
57− \preliminary
58− This is a read-only property with the current validity of the action
59− */
60− readonly property bool valid: actionObject ? actionObject.valid : false
61−
62− readonly property var state: actionObject ? actionObject.state : undefined
63−
64− // internal
65− property QtObject actionObject: null
66−
67− function activate(param) {
68− if (valid) {
69− actionObject.activate(param);
70− }
71− }
72−
73− onActionGroupChanged: updateAction()
74− onActionChanged: updateAction()
75−
76− Connections {
77− target: menuAction.actionGroup != undefined ? menuAction.actionGroup : null
78− onActionAppear: menuAction.updateAction();
79− onActionVanish: menuAction.updateAction();
80− onStatusChanged: menuAction.updateAction();
81− }
82−
83− function updateAction() {
84− actionObject = action !== "" && actionGroup ? actionGroup.action(action) : null
85− }
86−}
plugins/Unity/IndicatorsLegacy/qml/MenuActionBinding.qmldeleted−106
@@ -1,106 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−
22−/*!
23− \qmltype MenuActionBinding
24− \inqmlmodule Indicators 0.1
25− \brief Helper class to connect a qmenumodel action state with a qml components property
26−
27− Example:
28− \qml
29− Slider {
30− id: slide
31− }
32− MenuActionBinding {
33− actionGroup: menuItem.actionGroup
34− action: "/ubuntu/sound/volume"
35− target: slider
36− property: "value"
37− }
38− \endqml
39−*/
40−
41−MenuAction {
42− id: menuAction
43−
44− /*!
45− \preliminary
46− The component which will have the property changed by action
47− */
48− property QtObject target: null
49−
50− /*!
51− \preliminary
52− The property name of \l target component which will be linked with action state
53− */
54− property string property
55−
56− /*!
57− \preliminary
58− Use this to enable or disable the action state propagation to component property.
59− */
60− property bool active: true
61−
62− Component.onCompleted: connectViewChanges()
63− onTargetChanged: connectViewChanges()
64− onPropertyChanged: connectViewChanges()
65−
66− Item {
67− id: d
68− property var currentTarget: undefined
69− property string currentSignal
70− }
71−
72− Binding {
73− id: propertyBinding
74− target: menuAction.target
75− property: menuAction.property
76− value: menuAction.state
77− when: menuAction.actionObject && menuAction.active
78− }
79−
80− // TODO - re-evaluate in c++
81− function connectViewChanges() {
82− if (d.currentTarget != undefined && d.currentSignal !== "") {
83− if (d.currentTarget[d.currentSignal] !== undefined) {
84− d.currentTarget[d.currentSignal].disconnect(onViewValueChanged);
85− }
86− }
87−
88− d.currentTarget = null;
89− d.currentSignal = "";
90− if (target) {
91− var signal = "on%1Changed".arg(property.charAt(0).toUpperCase() + property.slice(1));
92− if (target[signal] !== undefined) {
93− target[signal].connect(onViewValueChanged);
94− d.currentTarget = target;
95− d.currentSignal = signal;
96− }
97− }
98− }
99−
100− function onViewValueChanged() {
101− if (valid) {
102− var propertyValue = target[property];
103− actionObject.updateState(propertyValue);
104− }
105− }
106−}
plugins/Unity/IndicatorsLegacy/qml/MenuItem.qmldeleted−40
@@ -1,40 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−
24−BasicMenuItem {
25− objectName: menu ? menu.action : ""
26− progression: menu && (menu.linkSubMenu !== undefined)
27− text: menu && menu.label ? menu.label : ""
28− color: "#221e1c"
29− implicitHeight: units.gu(7)
30−
31− HLine {
32− anchors.top: parent.top
33− color: "#403b37"
34− }
35−
36− HLine {
37− anchors.bottom: parent.bottom
38− color: "#060606"
39− }
40−}
plugins/Unity/IndicatorsLegacy/qml/MenuItemFactory.qmldeleted−102
@@ -1,102 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Nick Dedekind <nick.dedekind@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Unity.IndicatorsLegacy 0.1 as Indicators
22−import Unity.IndicatorsLegacy.Network 0.1 as ICNetwork
23−
24−Item {
25− id: menuFactory
26−
27− property QtObject menu
28− property QtObject listView
29− property QtObject actionGroup
30− property bool isCurrentItem
31− readonly property bool empty: (loader.item !== undefined && loader.status == Loader.Ready) ? loader.item.state === "EMPTY" : true
32−
33− implicitHeight: loader.height
34−
35− signal activated()
36− signal deactivated()
37−
38− property var _map: {
39− "unity.widgets.systemsettings.tablet.volumecontrol" : sliderMenu,
40− "unity.widgets.systemsettings.tablet.switch" : switchMenu,
41−
42− "com.canonical.indicator.button" : buttonMenu,
43− "com.canonical.indicator.div" : divMenu,
44− "com.canonical.indicator.section" : sectionMenu,
45− "com.canonical.indicator.progress" : progressMenu,
46− "com.canonical.indicator.slider" : sliderMenu,
47− "com.canonical.indicator.switch" : switchMenu,
48−
49− "unity.widget.systemsettings.tablet.sectiontitle" : wifiSection,
50− "unity.widgets.systemsettings.tablet.wifisection" : wifiSection,
51− "unity.widgets.systemsettings.tablet.accesspoint" : accessPoint,
52− }
53−
54− Component { id: sliderMenu; Indicators.SliderMenuItem {} }
55− Component { id: switchMenu; Indicators.SwitchMenuItem {} }
56− Component { id: buttonMenu; Indicators.ButtonMenuItem {} }
57− Component { id: divMenu; Indicators.DivMenuItem {} }
58− Component { id: sectionMenu; Indicators.SectionMenuItem {} }
59− Component { id: progressMenu; Indicators.ProgressMenuItem {} }
60− Component { id: wifiSection; ICNetwork.WifiSection {} }
61− Component { id: accessPoint; ICNetwork.AccessPoint {} }
62− Component { id: indicatorMenu; Indicators.MenuItem {} }
63−
64− Loader {
65− id: loader
66− asynchronous: true
67−
68− anchors {
69− left: parent.left
70− right: parent.right
71− }
72−
73− sourceComponent: {
74− if (!menuFactory.menu || !menuFactory.menu.extra) {
75− return undefined;
76− }
77−
78− var widgetType = menuFactory.menu.extra.canonical_type;
79− if (widgetType) {
80− return _map[widgetType];
81− } else {
82− if (widgetType === "com.canonical.indicator.root") {
83− return undefined;
84− // Try discovery the item based on the basic properties
85− } else if (menu.hasSection) {
86− return sectionMenu;
87− } else {
88− return indicatorMenu;
89− }
90− }
91− }
92−
93− onLoaded: {
94− item.menuActivated = Qt.binding(function() { return isCurrentItem; });
95− item.actionGroup = Qt.binding(function() { return menuFactory.actionGroup; });
96− item.menu = Qt.binding(function() { return menuFactory.menu; });
97−
98− item.activateMenu.connect(function() { menuFactory.activated(); });
99− item.deactivateMenu.connect(function() { menuFactory.deactivated(); });
100− }
101− }
102−}
plugins/Unity/IndicatorsLegacy/qml/ProgressMenuItem.qmldeleted−65
@@ -1,65 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Michael Zanetti <michael.zanetti@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−MenuItem {
24− id: progressMenu
25− property alias value : progressBar.value
26−
27− // TODO: Replace this with the official ProgressBar component as soon as
28− // it is available. For now, this rebuilds the Mockup as close as possible.
29− UbuntuShape {
30− id: progressBar
31− anchors {
32− right: parent.right
33− rightMargin: units.gu(2)
34− left: parent.left
35− leftMargin: units.gu(2)
36− }
37− height: units.gu(4)
38− anchors.verticalCenter: parent.verticalCenter
39− color: "transparent"
40−
41− property int minimumValue: 0
42− property int maximumValue: 100
43− property int value: 50
44−
45− UbuntuShape {
46− anchors.fill: parent
47− anchors.rightMargin: parent.width - (parent.width * parent.value / parent.maximumValue)
48− color: "#c94212"
49− }
50−
51− Label {
52− anchors.centerIn: parent
53− text: parent.value + " %"
54− fontSize: "medium"
55− color: "#e8e1d0"
56− }
57− }
58−
59− MenuActionBinding {
60− actionGroup: progressMenu.actionGroup
61− action: menu ? menu.action : ""
62− target: progressBar
63− property: "value"
64− }
65−}
plugins/Unity/IndicatorsLegacy/qml/RemoveBackground.qmldeleted−55
@@ -1,55 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Ubuntu.Components 0.1
19−
20−Rectangle {
21− anchors.fill: parent
22− color: "#333130"
23− Label {
24− id: backgroundText
25−
26− anchors.fill: parent
27− verticalAlignment: Text.AlignVCenter
28− text: "Clear"
29− fontSize: "medium"
30− color: "#e8e1d0"
31− font.bold: true
32− }
33−
34− states: [
35− State {
36− name: "SwipingRight"
37− PropertyChanges {
38− target: backgroundText
39− anchors.rightMargin: units.gu(3)
40− anchors.leftMargin: 0
41− horizontalAlignment: Text.AlignRight
42−
43− }
44− },
45− State {
46− name: "SwipingLeft"
47− PropertyChanges {
48− target: backgroundText
49− anchors.rightMargin: 0
50− anchors.leftMargin: units.gu(3)
51− horizontalAlignment: Text.AlignLeft
52− }
53− }
54− ]
55−}
plugins/Unity/IndicatorsLegacy/qml/SectionMenuItem.qmldeleted−57
@@ -1,57 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−import Ubuntu.Components.ListItems 0.1 as ListItem
23−
24−BasicMenuItem {
25− property string label: menu && menu.label ? menu.label : ""
26− property bool busy: false
27− property int count: menu && menu.linkSection ? menu.linkSection.count : 0
28−
29− color: "#221e1b"
30− implicitHeight: label !== "" ? __header.height : 0
31− state: count === 0 ? "EMPTY" : ""
32−
33− ListItem.Header {
34− id: __header
35−
36− text: label
37− height: units.gu(4)
38− anchors {
39− left: parent.left
40− right: parent.right
41− top: parent.top
42− }
43− visible: text != ""
44−
45− ActivityIndicator {
46− id: indicator
47− running: busy
48− anchors {
49− margins: units.gu(0.5)
50− right: parent.right
51− }
52− height: parent.height - (anchors.margins * 2)
53− width: height
54− anchors.verticalCenter: parent.verticalCenter
55− }
56− }
57−}
plugins/Unity/IndicatorsLegacy/qml/SliderMenuItem.qmldeleted−64
@@ -1,64 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−MenuItem {
24− id: _sliderMenu
25−
26− property alias minimumValue: slider.minimumValue
27− property alias maximumValue: slider.maximumValue
28− property alias value: slider.value
29−
30− control: Slider {
31− id: slider
32− enabled: menuAction.valid
33− width: _sliderMenu.text ? units.gu(20) : _sliderMenu.width - units.gu(4)
34− anchors.verticalCenter: parent.verticalCenter
35− live: false
36− // FIXME: The interval should be [0.0 - 1.0]. Unfortunately, when
37− // reaching the boundaries (0.0 or 1.0), the value is converted
38− // to an integer when automatically wrapped in a variant when
39− // passed to QStateAction::updateState(…). The server chokes on
40− // those values, complaining that they’re not of the right type…
41− minimumValue: menu.extra.canonical_min ? menu.extra.canonical_min * 1.000001 : 0.0000001
42− maximumValue: {
43− var maximum = menu.extra.canonical_max ? menu.extra.canonical_max * 1.000001 : 0.9999999
44− if (maximum <= minimumValue) {
45− return minimumValue + 1;
46− }
47− return maximum;
48− }
49−
50− // FIXME - to be deprecated in Ubuntu.Components.
51− // Use this to disable the label, since there is not way to do it on the component.
52− function formatValue(v) {
53− return "";
54− }
55− }
56−
57− MenuActionBinding {
58− id: menuAction
59− actionGroup: _sliderMenu.actionGroup
60− action: menu ? menu.action : ""
61− target: slider
62− property: "value"
63− }
64−}
plugins/Unity/IndicatorsLegacy/qml/SwitchMenuItem.qmldeleted−43
@@ -1,43 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU Lesser General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU Lesser General Public License for more details.
12− *
13− * You should have received a copy of the GNU Lesser General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− *
16− * Authors:
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− */
19−
20−import QtQuick 2.0
21−import Ubuntu.Components 0.1
22−
23−MenuItem {
24− id: switchMenu
25−
26− property alias checked: switcher.checked
27−
28− control: Switch {
29− id: switcher
30− enabled: menuAction.valid
31−
32− anchors.verticalCenter: parent.verticalCenter
33− anchors.right: parent.right
34− }
35−
36− MenuActionBinding {
37− id: menuAction
38− actionGroup: switchMenu.actionGroup
39− action: menu ? menu.action : ""
40− target: switcher
41− property: "checked"
42− }
43−}
plugins/Unity/IndicatorsLegacy/qml/qmldirdeleted−21
@@ -1,21 +0,0 @@
1−module Unity.IndicatorsLegacy
2−plugin IndicatorsLegacyQml
3−typeinfo plugin.qmltypes
4−
5−BasicMenuItem 0.1 BasicMenuItem.qml
6−ButtonMenuItem 0.1 ButtonMenuItem.qml
7−DivMenuItem 0.1 DivMenuItem.qml
8−HLine 0.1 HLine.qml
9−IndicatorBase 0.1 IndicatorBase.qml
10−IndicatorPage 0.1 IndicatorPage.qml
11−IndicatorWidget 0.1 IndicatorWidget.qml
12−MenuItem 0.1 MenuItem.qml
13−MenuAction 0.1 MenuAction.qml
14−MenuActionBinding 0.1 MenuActionBinding.qml
15−MenuItemFactory 0.1 MenuItemFactory.qml
16−ProgressMenuItem 0.1 ProgressMenuItem.qml
17−SectionMenuItem 0.1 SectionMenuItem.qml
18−SliderMenuItem 0.1 SliderMenuItem.qml
19−SwitchMenuItem 0.1 SwitchMenuItem.qml
20−
21−internal RemoveBackground RemoveBackground.qml
plugins/Unity/IndicatorsLegacy/resources/indicators.qrcdeleted−4
@@ -1,4 +0,0 @@
1−<RCC>
2− <qresource prefix="/indicators">
3− </qresource>
4−</RCC>
plugins/Unity/Launcher/backend/launcherbackend.cpp+4−37
@@ -30,21 +30,18 @@
3030class LauncherBackendItem
3131{
3232public:
33− LauncherBackendItem(): pinned(false) {}
34−
3533 QString desktopFile;
3634 QString displayName;
3735 QString icon;
38− bool pinned;
3936};
4037
41−LauncherBackend::LauncherBackend(bool useStorage, QObject *parent):
38+LauncherBackend::LauncherBackend(QObject *parent):
4239 QObject(parent),
4340 m_accounts(nullptr)
4441{
45− if (useStorage) {
46− m_accounts = new AccountsServiceDBusAdaptor(this);
47− }
42+#ifndef LAUNCHER_TESTING
43+ m_accounts = new AccountsServiceDBusAdaptor(this);
44+#endif
4845 m_user = qgetenv("USER");
4946 syncFromAccounts();
5047}
@@ -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+1−16
@@ -39,7 +39,7 @@ class LauncherBackend : public QObject
3939
4040
4141public:
42− LauncherBackend(bool useStorage = true, QObject *parent = 0);
42+ LauncherBackend(QObject *parent = 0);
4343 virtual ~LauncherBackend();
4444
4545 /**
@@ -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+4−8
@@ -27,7 +27,7 @@ using namespace unity::shell::application;
2727
2828LauncherModel::LauncherModel(QObject *parent):
2929 LauncherModelInterface(parent),
30− m_backend(new LauncherBackend(true, this)),
30+ m_backend(new LauncherBackend(this)),
3131 m_appManager(0)
3232{
3333 connect(m_backend, SIGNAL(countChanged(QString,int)), SLOT(countChanged(QString,int)));
@@ -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/Launcher/quicklistmodel.cpp+1−1
@@ -32,7 +32,7 @@ QuickListModel::~QuickListModel()
3232
3333void QuickListModel::appendAction(const QuickListEntry &entry)
3434{
35− beginInsertRows(QModelIndex(), m_list.count() - 1, m_list.count() -1);
35+ beginInsertRows(QModelIndex(), m_list.count(), m_list.count());
3636 m_list.append(entry);
3737 endInsertRows();
3838}
plugins/Unity/bottombarvisibilitycommunicatorshell.cpp+15−1
@@ -17,7 +17,8 @@
1717#include "bottombarvisibilitycommunicatorshell.h"
1818
1919BottomBarVisibilityCommunicatorShell::BottomBarVisibilityCommunicatorShell()
20− : m_forceHidden(false)
20+ : m_forceHidden(false),
21+ m_position(0)
2122{
2223}
2324
@@ -26,6 +27,11 @@ bool BottomBarVisibilityCommunicatorShell::forceHidden() const
2627 return m_forceHidden;
2728}
2829
30+double BottomBarVisibilityCommunicatorShell::position() const
31+{
32+ return m_position;
33+}
34+
2935void BottomBarVisibilityCommunicatorShell::setForceHidden(bool forceHidden)
3036{
3137 if (forceHidden != m_forceHidden) {
@@ -33,3 +39,11 @@ void BottomBarVisibilityCommunicatorShell::setForceHidden(bool forceHidden)
3339 Q_EMIT forceHiddenChanged(forceHidden);
3440 }
3541}
42+
43+void BottomBarVisibilityCommunicatorShell::setPosition(double position)
44+{
45+ if (position != m_position) {
46+ m_position = position;
47+ Q_EMIT positionChanged(position);
48+ }
49+}
plugins/Unity/bottombarvisibilitycommunicatorshell.h+6
@@ -30,6 +30,7 @@ class BottomBarVisibilityCommunicatorShell : public QObject
3030{
3131 Q_OBJECT
3232 Q_PROPERTY(bool forceHidden READ forceHidden WRITE setForceHidden NOTIFY forceHiddenChanged)
33+ Q_PROPERTY(double position READ position WRITE setPosition NOTIFY positionChanged)
3334
3435 Q_CLASSINFO("D-Bus Interface", "com.canonical.Shell.BottomBarVisibilityCommunicator")
3536public:
@@ -41,13 +42,18 @@ public:
4142 bool forceHidden() const;
4243 void setForceHidden(bool forceHidden);
4344
45+ double position() const;
46+ void setPosition(double position);
47+
4448Q_SIGNALS:
4549 void forceHiddenChanged(bool forceHidden);
50+ void positionChanged(double position);
4651
4752private:
4853 BottomBarVisibilityCommunicatorShell();
4954
5055 bool m_forceHidden;
56+ double m_position;
5157};
5258
5359#endif
plugins/Unity/categories.cpp+75−16
@@ -40,6 +40,7 @@ Categories::Categories(QObject* parent)
4040 m_roles[Categories::RoleIcon] = "icon";
4141 m_roles[Categories::RoleRenderer] = "renderer";
4242 m_roles[Categories::RoleContentType] = "contentType";
43+ m_roles[Categories::RoleRendererHint] = "rendererHint";
4344 m_roles[Categories::RoleProgressSource] = "progressSource";
4445 m_roles[Categories::RoleHints] = "hints";
4546 m_roles[Categories::RoleResults] = "results";
@@ -89,9 +90,37 @@ void Categories::onCategoriesModelChanged(unity::glib::Object<DeeModel> model)
8990 delete model;
9091 }
9192 m_results.clear();
93+ m_categoryOrder.clear();
94+
9295 setModel(model);
9396}
9497
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+
95124void
96125Categories::setUnityScope(const unity::dash::Scope::Ptr& scope)
97126{
@@ -100,9 +129,9 @@ Categories::setUnityScope(const unity::dash::Scope::Ptr& scope)
100129 // no need to call this, we'll get notified
101130 //setModel(m_unityScope->categories()->model());
102131
103− m_categoriesChangedConnection.disconnect();
104− m_categoriesChangedConnection =
105− 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));
106135}
107136
108137void
@@ -110,7 +139,9 @@ Categories::onCountChanged()
110139{
111140 CategoryResults* results = qobject_cast<CategoryResults*>(sender());
112141 if (results) {
113− m_updatedCategories << results->categoryIndex();
142+ if (!m_updatedCategories.contains(results->categoryIndex())) {
143+ m_updatedCategories << results->categoryIndex();
144+ }
114145 m_timer.start();
115146 }
116147}
@@ -141,7 +172,8 @@ Categories::onEmitCountChanged()
141172 roles.append(Categories::RoleCount);
142173 Q_FOREACH(int categoryIndex, m_updatedCategories) {
143174 if (!m_results.contains(categoryIndex)) continue;
144− QModelIndex changedIndex = index(categoryIndex);
175+ const int realIndex = m_categoryOrder.indexOf(categoryIndex);
176+ const QModelIndex changedIndex = index(realIndex);
145177 Q_EMIT dataChanged(changedIndex, changedIndex, roles);
146178 }
147179 m_updatedCategories.clear();
@@ -195,43 +227,70 @@ Categories::data(const QModelIndex& index, int role) const
195227 return QVariant();
196228 }
197229
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+
198250 switch (role) {
199251 case RoleCategoryId:
200− return DeeListModel::data(index, CategoryColumn::ID);
252+ return DeeListModel::data(realIndex, CategoryColumn::ID);
201253 case RoleName:
202− return DeeListModel::data(index, CategoryColumn::DISPLAY_NAME);
254+ return DeeListModel::data(realIndex, CategoryColumn::DISPLAY_NAME);
203255 case RoleIcon:
204− return DeeListModel::data(index, CategoryColumn::ICON_HINT);
256+ return DeeListModel::data(realIndex, CategoryColumn::ICON_HINT);
205257 case RoleRenderer:
206− return DeeListModel::data(index, CategoryColumn::RENDERER_NAME);
258+ return DeeListModel::data(realIndex, CategoryColumn::RENDERER_NAME);
207259 case RoleContentType:
208260 {
209− auto hints = DeeListModel::data(index, CategoryColumn::HINTS).toHash();
261+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
210262 return hints.contains("content-type") ? hints["content-type"] : QVariant(QString("default"));
211263 }
264+ case RoleRendererHint:
265+ {
266+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
267+ return hints.contains("renderer-hint") ? hints["renderer-hint"] : QVariant(QString());
268+ }
212269 case RoleProgressSource:
213270 {
214− auto hints = DeeListModel::data(index, CategoryColumn::HINTS).toHash();
271+ auto hints = DeeListModel::data(realIndex, CategoryColumn::HINTS).toHash();
215272 return hints.contains("progress-source") ? hints["progress-source"] : QVariant();
216273 }
217274 case RoleHints:
218− return DeeListModel::data(index, CategoryColumn::HINTS);
275+ return DeeListModel::data(realIndex, CategoryColumn::HINTS);
219276 case RoleResults:
220277 if (m_overriddenCategories.size() > 0)
221278 {
222− auto id = DeeListModel::data(index, CategoryColumn::ID).toString();
279+ auto id = DeeListModel::data(realIndex, CategoryColumn::ID).toString();
223280 if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
224281 return QVariant::fromValue(m_overriddenCategories[id]);
225282 }
226− return QVariant::fromValue(getResults(index.row()));
283+ return QVariant::fromValue(getResults(realRow));
227284 case RoleCount:
228285 if (m_overriddenCategories.size() > 0)
229286 {
230− auto id = DeeListModel::data(index, CategoryColumn::ID).toString();
287+ auto id = DeeListModel::data(realIndex, CategoryColumn::ID).toString();
231288 if (m_overriddenCategories.find(id) != m_overriddenCategories.end())
289+ {
232290 return QVariant::fromValue(m_overriddenCategories[id]->rowCount());
291+ }
233292 }
234− return QVariant::fromValue(getResults(index.row())->rowCount());
293+ return QVariant::fromValue(getResults(realRow)->rowCount());
235294 default:
236295 return QVariant();
237296 }
plugins/Unity/categories.h+11−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
@@ -47,6 +50,7 @@ public:
4750 RoleIcon,
4851 RoleRenderer,
4952 RoleContentType,
53+ RoleRendererHint,
5054 RoleProgressSource,
5155 RoleHints,
5256 RoleResults,
@@ -70,6 +74,7 @@ private Q_SLOTS:
7074
7175private:
7276 void onCategoriesModelChanged(unity::glib::Object<DeeModel> model);
77+ void onCategoryOrderChanged(const std::vector<unsigned int>& cat_order);
7378
7479 DeeListModel* getResults(int index) const;
7580
@@ -79,7 +84,12 @@ private:
7984 QHash<int, QByteArray> m_roles;
8085 QMap<QString, QAbstractItemModel*> m_overriddenCategories;
8186 mutable QMap<int, DeeListModel*> m_results;
82− sigc::connection m_categoriesChangedConnection;
87+ SignalsList m_signals;
88+
89+ /* Category order array contains indices of actual categories in the underlying DeeListModel.
90+ It's used internally to reflect category order reported by scope.
91+ */
92+ mutable QList<unsigned int> m_categoryOrder;
8393};
8494
8595#endif // CATEGORIES_H
plugins/Unity/categoryresults.cpp+22
@@ -46,6 +46,7 @@ CategoryResults::CategoryResults(QObject* parent)
4646 m_roles[CategoryResults::RoleComment] = "comment";
4747 m_roles[CategoryResults::RoleDndUri] = "dndUri";
4848 m_roles[CategoryResults::RoleMetadata] = "metadata";
49+ m_roles[CategoryResults::RoleRendererHints] = "rendererHints";
4950}
5051
5152int CategoryResults::categoryIndex() const
@@ -79,6 +80,14 @@ CategoryResults::data(const QModelIndex& index, int role) const
7980 return DeeListModel::data(index, ResultsColumn::URI);
8081 case RoleIconHint: {
8182 QString giconString(DeeListModel::data(index, ResultsColumn::ICON_HINT).toString());
83+ if (giconString.isEmpty()) {
84+ QString mimetype(DeeListModel::data(index, ResultsColumn::MIMETYPE).toString());
85+ QString uri(DeeListModel::data(index, ResultsColumn::URI).toString());
86+ QString thumbnailerUri(uriToThumbnailerProviderString(uri, mimetype, DeeListModel::data(index, ResultsColumn::METADATA).toHash()));
87+ if (!thumbnailerUri.isNull()) {
88+ return QVariant::fromValue(thumbnailerUri);
89+ }
90+ }
8291 return QVariant::fromValue(gIconToDeclarativeImageProviderString(giconString));
8392 }
8493 case RoleCategory:
@@ -93,6 +102,19 @@ CategoryResults::data(const QModelIndex& index, int role) const
93102 return DeeListModel::data(index, ResultsColumn::DND_URI);
94103 case RoleMetadata:
95104 return DeeListModel::data(index, ResultsColumn::METADATA);
105+ case RoleRendererHints:
106+ {
107+ QVariantHash hash(DeeListModel::data(index, ResultsColumn::METADATA).toHash());
108+ if (hash.contains("content")) {
109+ QVariantMap hints;
110+ QVariantHash innerHash(hash["content"].toHash());
111+ if (innerHash.contains("scope_disabled")) {
112+ hints["scope_disabled"] = innerHash["scope_disabled"];
113+ }
114+ return hints.empty() ? QVariant() : QVariant::fromValue(hints);
115+ }
116+ return QVariant();
117+ }
96118 default:
97119 return QVariant();
98120 }
plugins/Unity/categoryresults.h+2−1
@@ -43,7 +43,8 @@ public:
4343 RoleTitle,
4444 RoleComment,
4545 RoleDndUri,
46− RoleMetadata
46+ RoleMetadata,
47+ RoleRendererHints
4748 };
4849
4950 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
plugins/Unity/iconutils.cpp+33
@@ -24,6 +24,8 @@
2424#include "iconutils.h"
2525
2626#define BASE_THEME_ICON_URI "image://theme/"
27+#define BASE_THUMBNAILER_URI "image://thumbnailer/"
28+#define BASE_ALBUMART_URI "image://albumart/"
2729
2830QString gIconToDeclarativeImageProviderString(QString const &giconString)
2931{
@@ -89,3 +91,34 @@ QString gIconToDeclarativeImageProviderString(QString const &giconString)
8991
9092 return result;
9193}
94+
95+QString uriToThumbnailerProviderString(QString const &uri, QString const &mimetype, QVariantHash const &metadata)
96+{
97+ if (uri.startsWith(QLatin1String("file:///"))) {
98+ bool isAudio = mimetype.startsWith(QLatin1String("audio/"));
99+ QString thumbnailerUri;
100+ if (isAudio) {
101+ thumbnailerUri = BASE_ALBUMART_URI;
102+ if (metadata.contains("content")) {
103+ QVariantHash contentHash = metadata["content"].toHash();
104+ if (contentHash.contains("content")) { // nested content in Home?
105+ contentHash = contentHash["content"].toHash();
106+ }
107+ if (contentHash.contains("album") &&
108+ contentHash.contains("artist")) {
109+ const QString album = contentHash["album"].toString();
110+ const QString artist = contentHash["artist"].toString();
111+ thumbnailerUri.append(QUrl::toPercentEncoding(artist));
112+ thumbnailerUri.append("/");
113+ thumbnailerUri.append(QUrl::toPercentEncoding(album));
114+ }
115+ }
116+ } else {
117+ thumbnailerUri = BASE_THUMBNAILER_URI;
118+ thumbnailerUri.append(uri.midRef(7));
119+ }
120+ return thumbnailerUri;
121+ }
122+
123+ return QString::null;
124+}
plugins/Unity/iconutils.h+2
@@ -21,7 +21,9 @@
2121#define ICONUTILS_H
2222
2323#include <QString>
24+#include <QVariant>
2425
2526QString gIconToDeclarativeImageProviderString(QString const &giconString);
27+QString uriToThumbnailerProviderString(QString const &uri, QString const &mimetype, QVariantHash const &metadata);
2628
2729#endif
plugins/Unity/preview.cpp+10−14
@@ -106,20 +106,16 @@ QVariantMap Preview::infoHintsHash() const
106106QString Preview::image() const
107107{
108108 if (m_unityPreview) {
109− auto giconString = g_icon_to_string(m_unityPreview->image());
110− QString result(gIconToDeclarativeImageProviderString(QString::fromUtf8(giconString)));
111− g_free(giconString);
112− return result;
113− } else {
114− qWarning() << "Preview not set";
115− }
116− return QString::null;
117−}
118−
119−QString Preview::imageSourceUri() const
120−{
121− if (m_unityPreview) {
122− return QString::fromStdString(m_unityPreview->image_source_uri());
109+ if (m_unityPreview->image() != nullptr) {
110+ auto giconString = g_icon_to_string(m_unityPreview->image());
111+ QString result(gIconToDeclarativeImageProviderString(QString::fromUtf8(giconString)));
112+ g_free(giconString);
113+ return result;
114+ } else {
115+ QString sourceMedia(QString::fromStdString(m_unityPreview->image_source_uri()));
116+ QString thumbnailUri(uriToThumbnailerProviderString(sourceMedia, m_result->mimeType(), m_result->metadata().toHash()));
117+ if (!thumbnailUri.isNull()) return thumbnailUri;
118+ }
123119 } else {
124120 qWarning() << "Preview not set";
125121 }
plugins/Unity/preview.h−2
@@ -47,7 +47,6 @@ class Q_DECL_EXPORT Preview : public QObject
4747 Q_PROPERTY(QVariant infoHints READ infoHints NOTIFY previewChanged)
4848 Q_PROPERTY(QVariantMap infoMap READ infoHintsHash NOTIFY previewChanged)
4949 Q_PROPERTY(QString image READ image NOTIFY previewChanged)
50− Q_PROPERTY(QString imageSourceUri READ imageSourceUri NOTIFY previewChanged)
5150 Q_PROPERTY(QVariant result READ result NOTIFY previewChanged)
5251
5352public:
@@ -62,7 +61,6 @@ public:
6261 QVariant infoHints();
6362 QVariantMap infoHintsHash() const;
6463 QString image() const;
65− QString imageSourceUri() const;
6664 QVariant result() const;
6765
6866 Q_INVOKABLE void execute(const QString& actionId, const QHash<QString, QVariant>& hints);
plugins/Unity/scope.cpp+67−5
@@ -33,14 +33,18 @@
3333#include <QQmlEngine>
3434
3535#include <UnityCore/Variant.h>
36+#include <UnityCore/GLibWrapper.h>
3637
3738#include <libintl.h>
3839#include <glib.h>
3940
4041Scope::Scope(QObject *parent) : QObject(parent)
4142 , m_formFactor("phone")
43+ , m_searchInProgress(false)
4244{
4345 m_categories.reset(new Categories(this));
46+
47+ connect(this, &Scope::isActiveChanged, this, &Scope::scopeIsActiveChanged);
4448}
4549
4650QString Scope::id() const
@@ -68,6 +72,11 @@ QString Scope::searchHint() const
6872 return QString::fromStdString(m_unityScope->search_hint());
6973}
7074
75+bool Scope::searchInProgress() const
76+{
77+ return m_searchInProgress;
78+}
79+
7180bool Scope::visible() const
7281{
7382 return m_unityScope->visible();
@@ -103,6 +112,11 @@ QString Scope::formFactor() const
103112 return m_formFactor;
104113}
105114
115+bool Scope::isActive() const
116+{
117+ return m_isActive;
118+}
119+
106120Filters* Scope::filters() const
107121{
108122 return m_filters.get();
@@ -115,10 +129,17 @@ void Scope::setSearchQuery(const QString& search_query)
115129 string ("") and m_searchQuery is the null string,
116130 search_query != m_searchQuery is still true.
117131 */
132+ using namespace std::placeholders;
133+
118134 if (m_searchQuery.isNull() || search_query != m_searchQuery) {
119135 m_searchQuery = search_query;
120− m_unityScope->Search(search_query.toStdString(), sigc::mem_fun(this, &Scope::searchFinished));
136+ m_cancellable.Renew();
137+ m_unityScope->Search(search_query.toStdString(), std::bind(&Scope::onSearchFinished, this, _1, _2, _3), m_cancellable);
121138 Q_EMIT searchQueryChanged();
139+ if (!m_searchInProgress) {
140+ m_searchInProgress = true;
141+ Q_EMIT searchInProgressChanged();
142+ }
122143 }
123144}
124145
@@ -140,6 +161,13 @@ void Scope::setFormFactor(const QString& form_factor) {
140161 }
141162}
142163
164+void Scope::setActive(const bool active) {
165+ if (active != m_isActive) {
166+ m_isActive = active;
167+ Q_EMIT isActiveChanged(m_isActive);
168+ }
169+}
170+
143171unity::dash::LocalResult Scope::createLocalResult(const QVariant &uri, const QVariant &icon_hint,
144172 const QVariant &category, const QVariant &result_type,
145173 const QVariant &mimetype, const QVariant &title,
@@ -294,8 +322,7 @@ void Scope::setUnityScope(const unity::dash::Scope::Ptr& scope)
294322 m_unityScope->visible.changed.connect(sigc::mem_fun(this, &Scope::visibleChanged));
295323 m_unityScope->shortcut.changed.connect(sigc::mem_fun(this, &Scope::shortcutChanged));
296324 m_unityScope->connected.changed.connect(sigc::mem_fun(this, &Scope::connectedChanged));
297− /* Signals forwarding */
298− connect(this, SIGNAL(searchFinished(const std::string &, unity::glib::HintsMap const &, unity::glib::Error const &)), SLOT(onSearchFinished(const std::string &, unity::glib::HintsMap const &)));
325+ m_unityScope->results_dirty.changed.connect(sigc::mem_fun(this, &Scope::resultsDirtyToggled));
299326
300327 /* FIXME: signal should be forwarded instead of calling the handler directly */
301328 m_unityScope->activated.connect(sigc::mem_fun(this, &Scope::onActivated));
@@ -316,18 +343,53 @@ unity::dash::Scope::Ptr Scope::unityScope() const
316343
317344void Scope::synchronizeStates()
318345{
346+ using namespace std::placeholders;
347+
319348 if (connected()) {
320349 /* Forward local states to m_unityScope */
321350 if (!m_searchQuery.isNull()) {
322− m_unityScope->Search(m_searchQuery.toStdString());
351+ m_cancellable.Renew();
352+ m_unityScope->Search(m_searchQuery.toStdString(), std::bind(&Scope::onSearchFinished, this, _1, _2, _3), m_cancellable);
353+ if (!m_searchInProgress) {
354+ m_searchInProgress = true;
355+ Q_EMIT searchInProgressChanged();
356+ }
323357 }
324358 }
325359}
326360
327−void Scope::onSearchFinished(const std::string& /* query */, unity::glib::HintsMap const &hints)
361+void Scope::scopeIsActiveChanged()
362+{
363+ if (!isActive() || !m_unityScope || !m_unityScope->results_dirty()) return;
364+
365+ // force new search
366+ synchronizeStates();
367+}
368+
369+void Scope::resultsDirtyToggled(bool results_dirty)
370+{
371+ if (!results_dirty || !isActive()) return;
372+
373+ // force new search
374+ synchronizeStates();
375+}
376+
377+void Scope::onSearchFinished(std::string const& /* query */, unity::glib::HintsMap const& hints, unity::glib::Error const& err)
328378{
329379 QString hint;
330380
381+ GError* error = const_cast<unity::glib::Error&>(err);
382+
383+ if (!err || !g_error_matches(error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
384+ if (m_searchInProgress) {
385+ m_searchInProgress = false;
386+ Q_EMIT searchInProgressChanged();
387+ }
388+ } else {
389+ // no need to check the results hint, we're still searching
390+ return;
391+ }
392+
331393 if (!m_unityScope->results()->count()) {
332394 unity::glib::HintsMap::const_iterator it = hints.find("no-results-hint");
333395 if (it != hints.end()) {
plugins/Unity/scope.h+14−2
@@ -28,6 +28,7 @@
2828// libunity-core
2929#include <UnityCore/Scope.h>
3030#include <UnityCore/Results.h>
31+#include <UnityCore/GLibWrapper.h>
3132
3233#include "categories.h"
3334#include "filters.h"
@@ -43,6 +44,7 @@ class Scope : public QObject
4344 Q_PROPERTY(QString iconHint READ iconHint NOTIFY iconHintChanged)
4445 Q_PROPERTY(QString description READ description NOTIFY descriptionChanged)
4546 Q_PROPERTY(QString searchHint READ searchHint NOTIFY searchHintChanged)
47+ Q_PROPERTY(bool searchInProgress READ searchInProgress NOTIFY searchInProgressChanged)
4648 Q_PROPERTY(bool visible READ visible NOTIFY visibleChanged)
4749 Q_PROPERTY(QString shortcut READ shortcut NOTIFY shortcutChanged)
4850 Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
@@ -52,6 +54,7 @@ class Scope : public QObject
5254 Q_PROPERTY(QString searchQuery READ searchQuery WRITE setSearchQuery NOTIFY searchQueryChanged)
5355 Q_PROPERTY(QString noResultsHint READ noResultsHint WRITE setNoResultsHint NOTIFY noResultsHintChanged)
5456 Q_PROPERTY(QString formFactor READ formFactor WRITE setFormFactor NOTIFY formFactorChanged)
57+ Q_PROPERTY(bool isActive READ isActive WRITE setActive NOTIFY isActiveChanged)
5558
5659public:
5760 explicit Scope(QObject *parent = 0);
@@ -65,16 +68,19 @@ public:
6568 bool visible() const;
6669 QString shortcut() const;
6770 bool connected() const;
71+ bool searchInProgress() const;
6872 Categories* categories() const;
6973 Filters* filters() const;
7074 QString searchQuery() const;
7175 QString noResultsHint() const;
7276 QString formFactor() const;
77+ bool isActive() const;
7378
7479 /* setters */
7580 void setSearchQuery(const QString& search_query);
7681 void setNoResultsHint(const QString& hint);
7782 void setFormFactor(const QString& form_factor);
83+ void setActive(const bool);
7884
7985 Q_INVOKABLE void activate(const QVariant &uri, const QVariant &icon_hint, const QVariant &category,
8086 const QVariant &result_type, const QVariant &mimetype, const QVariant &title,
@@ -95,14 +101,15 @@ Q_SIGNALS:
95101 void iconHintChanged(const std::string&);
96102 void descriptionChanged(const std::string&);
97103 void searchHintChanged(const std::string&);
104+ void searchInProgressChanged();
98105 void visibleChanged(bool);
99106 void shortcutChanged(const std::string&);
100107 void connectedChanged(bool);
101108 void categoriesChanged();
102− void searchFinished(const std::string&, unity::glib::HintsMap const&, unity::glib::Error const&);
103109 void searchQueryChanged();
104110 void noResultsHintChanged();
105111 void formFactorChanged();
112+ void isActiveChanged(bool);
106113 void filtersChanged();
107114
108115 // signals triggered by activate(..) or preview(..) requests.
@@ -115,7 +122,8 @@ Q_SIGNALS:
115122
116123private Q_SLOTS:
117124 void synchronizeStates();
118− void onSearchFinished(const std::string &, unity::glib::HintsMap const &);
125+ void scopeIsActiveChanged();
126+ void onSearchFinished(std::string const &, unity::glib::HintsMap const &, unity::glib::Error const&);
119127
120128private:
121129 unity::dash::LocalResult createLocalResult(const QVariant &uri, const QVariant &icon_hint,
@@ -126,6 +134,7 @@ private:
126134 void onActivated(unity::dash::LocalResult const& result, unity::dash::ScopeHandledType type, unity::glib::HintsMap const& hints);
127135 void onPreviewReady(unity::dash::LocalResult const& result, unity::dash::Preview::Ptr const& preview);
128136 void fallbackActivate(const QString& uri);
137+ void resultsDirtyToggled(bool);
129138
130139 unity::dash::Scope::Ptr m_unityScope;
131140 std::unique_ptr<Categories> m_categories;
@@ -133,6 +142,9 @@ private:
133142 QString m_searchQuery;
134143 QString m_noResultsHint;
135144 QString m_formFactor;
145+ bool m_isActive;
146+ bool m_searchInProgress;
147+ unity::glib::Cancellable m_cancellable;
136148 unity::glib::Cancellable m_previewCancellable;
137149};
138150
plugins/Utils/CMakeLists.txt+13−1
@@ -1,27 +1,39 @@
1+# Dependencies
2+include(FindPkgConfig)
3+
4+pkg_search_module(GIO REQUIRED gio-2.0)
5+
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
20+ unitymenumodelpaths.cpp
1221 plugin.cpp
1322 )
1423
1524add_library(Utils-qml SHARED
1625 ${QMLPLUGIN_SRC}
1726 )
27+
28+target_link_libraries(Utils-qml ${GIO_LDFLAGS})
29+
1830# Because this is an internal support library, we want
1931# to expose all symbols in it. Consider changing this
2032# either to a static library or just using the
2133# files directly in targets.
2234set_target_properties(Utils-qml PROPERTIES COMPILE_FLAGS -fvisibility=default)
2335
24−qt5_use_modules(Utils-qml Qml Quick)
36+qt5_use_modules(Utils-qml Qml Quick DBus Network XmlPatterns)
2537
2638# export the qmldir qmltypes and plugin files
2739export_qmlfiles(Utils Utils)
plugins/Utils/albumartprovider.cppnew file+231
@@ -0,0 +1,231 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors: Jussi Pakkanen <jussi.pakkanen@canonical.com>
17+ * Pawel Stolowski <pawel.stolowski@canonical.com>
18+*/
19+
20+#include "albumartprovider.h"
21+#include <QString>
22+#include <QNetworkAccessManager>
23+#include <QEventLoop>
24+#include <QNetworkRequest>
25+#include <QNetworkReply>
26+#include <QXmlQuery>
27+#include <QTemporaryFile>
28+#include <QBuffer>
29+#include <QDebug>
30+#include <QFile>
31+#include <QStringList>
32+#include <QByteArray>
33+#include <QImage>
34+#include <QUrl>
35+
36+using namespace std;
37+
38+const std::string AlbumArtProvider::DEFAULT_ALBUM_ART = "/usr/share/unity/icons/album_missing.png";
39+const std::string AlbumArtProvider::UNITY_LENS_SCHEMA = "com.canonical.Unity.Lenses";
40+
41+AlbumArtProvider::AlbumArtProvider()
42+ : QQuickImageProvider(QQmlImageProviderBase::Image, QQmlImageProviderBase::ForceAsynchronousImageLoading),
43+ m_settings(nullptr)
44+{
45+ auto schemas = g_settings_list_schemas();
46+ if (schemas) {
47+ for (int i = 0; schemas[i]; i++) {
48+ if (g_strcmp0(schemas[i], UNITY_LENS_SCHEMA.c_str()) == 0) {
49+ m_settings = g_settings_new(UNITY_LENS_SCHEMA.c_str());
50+ break;
51+ }
52+ }
53+ }
54+ if (m_settings == nullptr) {
55+ qWarning() << "Missing" << QString::fromStdString(UNITY_LENS_SCHEMA) << "schema";
56+ }
57+}
58+
59+AlbumArtProvider::~AlbumArtProvider()
60+{
61+ if (m_settings)
62+ g_object_unref(m_settings);
63+}
64+
65+std::string AlbumArtProvider::get_lastfm_url(const albuminfo &ai) {
66+ QString artist = QString::fromStdString(ai.artist);
67+ QString album = QString::fromStdString(ai.album);
68+
69+ /// @todo: this is the old API which will probably get axed at some point in the future
70+ /// The new 2.0 API requires an API key, but supports JSON output, etc, so switching
71+ /// to it should be done ASAP.
72+ QString request = QString("http://ws.audioscrobbler.com/1.0/album/%1/%2/info.xml").arg(artist)
73+ .arg(album)
74+ .toHtmlEscaped();
75+ QScopedPointer<QNetworkAccessManager> am(new QNetworkAccessManager);
76+ QNetworkReply *reply = am->get(QNetworkRequest(QUrl(request)));
77+ QEventLoop loop;
78+ QObject::connect(am.data(), &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
79+ loop.exec();
80+
81+ if (reply->error() != QNetworkReply::NoError) {
82+ qWarning() << "Error getting the XML:" << reply->errorString();
83+ return "";
84+ }
85+
86+ QXmlQuery query;
87+ QBuffer tmp;
88+ tmp.setData(reply->readAll());
89+ tmp.open(QIODevice::ReadOnly);
90+ query.bindVariable("reply", &tmp);
91+ query.setQuery("doc($reply)/album/coverart/large[1]/text()");
92+ QString image;
93+ query.evaluateTo(&image);
94+ image = image.trimmed();
95+
96+ // return empty if last.fm tries to offer their default
97+ // fallback artwork
98+ if (image.contains("catalogue/noimage")) {
99+ return "";
100+ }
101+
102+ return image.toStdString();
103+}
104+
105+bool AlbumArtProvider::download_and_store(const std::string &image_url, const std::string &output_file) {
106+ QString url = QString::fromStdString(image_url);
107+ QString fileName = QString::fromStdString(output_file);
108+
109+ QScopedPointer<QNetworkAccessManager> am(new QNetworkAccessManager);
110+ QNetworkReply *reply = am->get(QNetworkRequest(QUrl(url)));
111+ QEventLoop loop;
112+ QObject::connect(am.data(), &QNetworkAccessManager::finished, &loop, &QEventLoop::quit);
113+ loop.exec();
114+
115+ if (reply->error() != QNetworkReply::NoError) {
116+ qWarning() << "Error getting the image:" << reply->errorString();
117+ return false;
118+ }
119+
120+ QFile file(fileName);
121+ if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
122+ qWarning() << "Could not open file for writing:" << file.errorString();
123+ return false;
124+ }
125+ if (file.write(reply->readAll()) == -1){
126+ qWarning() << "Could not write the image:" << file.error();
127+ return false;
128+ }
129+
130+ return true;
131+}
132+
133+void AlbumArtProvider::fix_format(const std::string &fname) {
134+ // MediaArtSpec requires jpg. Convert to it if necessary.
135+ FILE *f = fopen(fname.c_str(), "r");
136+ if(!f)
137+ return;
138+ unsigned char buf[2];
139+ fread(buf, 1, 2, f);
140+ fclose(f);
141+ if(buf[0] == 0xff && buf[1] == 0xd8) {
142+ return;
143+ }
144+ QImage im(fname.c_str());
145+ im.save(fname.c_str(), "JPEG");
146+}
147+
148+std::string AlbumArtProvider::get_image(const std::string &artist, const std::string &album) {
149+ albuminfo info;
150+
151+ info.artist = artist;
152+ info.album = album;
153+
154+ if(info.album.empty() || info.artist.empty()) {
155+ return DEFAULT_ALBUM_ART;
156+ }
157+ if(cache.has_art(info.artist, info.album)) {
158+ // Image may have expired from cache between these two lines.
159+ // It might expire before we return. C'est la vie.
160+ return cache.get_art_file(info.artist, info.album);
161+ }
162+
163+ if (m_settings != nullptr && g_strcmp0(g_settings_get_string(m_settings, "remote-content-search"), "all") !=0) {
164+ qDebug() << "Remote content disabled";
165+ return DEFAULT_ALBUM_ART;
166+ }
167+
168+ std::string image_url = get_lastfm_url(info);
169+ if(image_url.empty()) {
170+ return DEFAULT_ALBUM_ART;
171+ }
172+ QTemporaryFile tempFile;
173+ tempFile.open();
174+ tempFile.setAutoRemove(true);
175+ QString fname = tempFile.fileName();
176+ std::string tmpname = fname.toUtf8().data();
177+
178+ if(!download_and_store(image_url, tmpname)) {
179+ return DEFAULT_ALBUM_ART;
180+ }
181+ fix_format(tmpname.c_str());
182+ QFile f(fname);
183+ if(!f.open(QIODevice::ReadWrite)) {
184+ return DEFAULT_ALBUM_ART;
185+ }
186+ QByteArray arr = f.readAll();
187+ f.close();
188+
189+ cache.add_art(info.artist, info.album, arr.data(), arr.size());
190+ try {
191+ std::string res = cache.get_art_file(info.artist, info.album);
192+ if(res.empty())
193+ return DEFAULT_ALBUM_ART;
194+ return res;
195+ } catch(...) {
196+ }
197+ return DEFAULT_ALBUM_ART;
198+}
199+
200+QImage AlbumArtProvider::requestImage(const QString &id, QSize *realSize, const QSize &requestedSize) {
201+ Q_UNUSED(requestedSize)
202+
203+ const QStringList parts = id.split("/");
204+ if (parts.size() != 2) {
205+ qWarning() << "Invalid albumart uri:" << id;
206+ return QImage(QString::fromStdString(DEFAULT_ALBUM_ART));
207+ }
208+ const std::string artist = QUrl::fromPercentEncoding(parts[0].toUtf8()).toStdString();
209+ const std::string album = QUrl::fromPercentEncoding(parts[1].toUtf8()).toStdString();
210+
211+ std::string tgt_path;
212+ try {
213+ tgt_path = get_image(artist, album);
214+ if(!tgt_path.empty()) {
215+ QString tgt(tgt_path.c_str());
216+ QImage image;
217+ image.load(tgt);
218+ // FIXME: Rescale to requested size preserving aspect.
219+ *realSize = image.size();
220+ return image;
221+ }
222+ } catch(std::exception &e) {
223+ qDebug() << "Album art loader failed: " << e.what();
224+ } catch(...) {
225+ qDebug() << "Unknown error when generating image.";
226+ }
227+
228+ QImage fallback(QString::fromStdString(DEFAULT_ALBUM_ART));
229+ *realSize = fallback.size();
230+ return fallback;
231+}
plugins/Utils/albumartprovider.hnew file+56
@@ -0,0 +1,56 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Authors: Jussi Pakkanen <jussi.pakkanen@canonical.com>
17+*/
18+
19+#ifndef ALBUMART_PROVIDER_H_
20+#define ALBUMART_PROVIDER_H_
21+
22+#include <string>
23+#include <stdexcept>
24+#include <QQuickImageProvider>
25+#include <gio/gio.h>
26+
27+#include "mediaartcache.h"
28+
29+struct albuminfo {
30+ std::string artist;
31+ std::string album;
32+};
33+
34+class AlbumArtProvider : public QQuickImageProvider
35+{
36+public:
37+ AlbumArtProvider();
38+ ~AlbumArtProvider();
39+ QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize);
40+
41+ std::string get_image(const std::string &artist, const std::string &album);
42+
43+ const static std::string DEFAULT_ALBUM_ART;
44+ const static std::string UNITY_LENS_SCHEMA;
45+private:
46+ MediaArtCache cache;
47+ GSettings *m_settings;
48+
49+ void fix_format(const std::string &fname);
50+
51+ std::string get_lastfm_url(const albuminfo &ai);
52+
53+ bool download_and_store(const std::string &image_url, const std::string &output_file);
54+};
55+
56+#endif
plugins/Utils/mediaartcache.cppnew file+178
@@ -0,0 +1,178 @@
1+/*
2+ * This file is part of the Ubuntu TV Media Scanner
3+ * Copyright (C) 2012-2013 Canonical Ltd.
4+ *
5+ * This program is free software: you can redistribute it and/or modify
6+ * it under the terms of the GNU Lesser General Public License version 3 as
7+ * published by the Free Software Foundation.
8+ *
9+ * This program is distributed in the hope that it will be useful,
10+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+ * GNU Lesser General Public License for more details.
13+ *
14+ * You should have received a copy of the GNU Lesser General Public License
15+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
16+ *
17+ * Authored by: Jussi Pakkanen <jussi.pakkanen@canonical.com>
18+ */
19+
20+#include"mediaartcache.h"
21+
22+#include<dirent.h>
23+#include<sys/stat.h>
24+#include<fcntl.h>
25+#include<unistd.h>
26+#include<errno.h>
27+#include<stdio.h>
28+#include<string.h>
29+#include<stdlib.h>
30+#include<assert.h>
31+#include<utime.h>
32+
33+#include<glib.h>
34+
35+#include<vector>
36+#include<algorithm>
37+#include<stdexcept>
38+
39+using namespace std;
40+
41+static string md5(const string &str) {
42+ const unsigned char *buf = (const unsigned char *)str.c_str();
43+ char *normalized = g_utf8_normalize((const gchar*)buf, str.size(), G_NORMALIZE_ALL);
44+ string final;
45+ gchar *result;
46+
47+ if(normalized) {
48+ buf = (const unsigned char*)normalized;
49+ }
50+ gssize bytes = str.length();
51+
52+ result = g_compute_checksum_for_data(G_CHECKSUM_MD5, buf, bytes);
53+ final = result;
54+ g_free((gpointer)normalized);
55+ g_free(result);
56+ return final;
57+}
58+
59+MediaArtCache::MediaArtCache() {
60+ string xdg_base = g_get_user_cache_dir();
61+
62+ if (xdg_base == "") {
63+ string s("Could not determine cache dir.");
64+ throw runtime_error(s);
65+ }
66+ int ec = mkdir(xdg_base.c_str(), S_IRUSR | S_IWUSR | S_IXUSR);
67+ if (ec < 0 && errno != EEXIST) {
68+ string s("Could not create base dir.");
69+ throw runtime_error(s);
70+ }
71+ root_dir = xdg_base + "/media-art";
72+ ec = mkdir(root_dir.c_str(), S_IRUSR | S_IWUSR | S_IXUSR);
73+ if (ec < 0 && errno != EEXIST) {
74+ string s("Could not create cache dir.");
75+ throw runtime_error(s);
76+ }
77+}
78+
79+bool MediaArtCache::has_art(const std::string &artist, const std::string &album) const {
80+ string fname = get_art_file(artist, album);
81+ return access(fname.c_str(), R_OK) == 0;
82+}
83+
84+void MediaArtCache::add_art(const std::string &artist, const std::string &album,
85+ char *data, unsigned int datalen) {
86+ string abs_fname = get_full_filename(artist, album);
87+ GError *err = nullptr;
88+ if(!g_file_set_contents(abs_fname.c_str(), data, datalen, &err)) {
89+ string e("Could not write file ");
90+ e += abs_fname;
91+ e += ": ";
92+ e += err->message;
93+ g_error_free(err);
94+ throw runtime_error(e);
95+ }
96+}
97+
98+string MediaArtCache::get_art_file(const std::string &artist, const std::string &album) const {
99+ string abs_fname = get_full_filename(artist, album);
100+
101+ if (access(abs_fname.c_str(), R_OK) == 0) {
102+ utime(abs_fname.c_str(), nullptr); // update access times to current time
103+ return abs_fname;
104+ }
105+ return "";
106+}
107+
108+std::string MediaArtCache::get_full_filename(const std::string &artist, const std::string & album) const {
109+ return root_dir + "/" + compute_base_name(artist, album);
110+}
111+
112+
113+std::string MediaArtCache::compute_base_name(const std::string &artist, const std::string &album) const {
114+ string type = "album";
115+ string h1 = md5(artist);
116+ string h2 = md5(album);
117+ return type + "-" + h1 + "-" + h2 + ".jpg";
118+}
119+
120+
121+void MediaArtCache::clear() const {
122+ DIR *d = opendir(root_dir.c_str());
123+ if(!d) {
124+ string s = "Something went wrong.";
125+ throw runtime_error(s);
126+ }
127+ struct dirent *entry, *de;
128+ entry = (dirent*)malloc(sizeof(dirent) + NAME_MAX);
129+ while(readdir_r(d, entry, &de) == 0 && de) {
130+ string basename = entry->d_name;
131+ if (basename == "." || basename == "..")
132+ continue;
133+ string fname = root_dir + "/" + basename;
134+ if(remove(fname.c_str()) < 0) {
135+ // This is not really an error worth
136+ // halting everything for.
137+ fprintf(stderr, "Could not delete file %s: %s.\n", fname.c_str(),
138+ strerror(errno));
139+ }
140+ }
141+ free(entry);
142+ closedir(d);
143+}
144+
145+void MediaArtCache::prune() {
146+ vector<pair<double, string>> mtimes;
147+ DIR *d = opendir(root_dir.c_str());
148+ if(!d) {
149+ string s = "Something went wrong.";
150+ throw runtime_error(s);
151+ }
152+ struct dirent *entry, *de;
153+ entry = (dirent*)malloc(sizeof(dirent) + NAME_MAX);
154+ while(readdir_r(d, entry, &de) == 0 && de) {
155+ string basename = entry->d_name;
156+ if (basename == "." || basename == "..")
157+ continue;
158+ string fname = root_dir + "/" + basename;
159+ struct stat sbuf;
160+ if(stat(fname.c_str(), &sbuf) != 0) {
161+ continue;
162+ }
163+ // Use mtime because atime is not guaranteed to work if, for example
164+ // the filesystem is mounted with noatime or relatime.
165+ mtimes.push_back(make_pair(sbuf.st_mtim.tv_sec + sbuf.st_mtim.tv_nsec/1000000000.0, fname));
166+ }
167+ free(entry);
168+ closedir(d);
169+ if (mtimes.size() <= MAX_SIZE)
170+ return;
171+ sort(mtimes.begin(), mtimes.end());
172+ for(size_t i=0; i < mtimes.size()-MAX_SIZE; i++) {
173+ if(remove(mtimes[i].second.c_str()) < 0) {
174+ fprintf(stderr, "Could not remove file %s: %s.\n",
175+ mtimes[i].second.c_str(), strerror(errno));
176+ }
177+ }
178+}
plugins/Utils/mediaartcache.hnew file+54
@@ -0,0 +1,54 @@
1+/*
2+ * This file is part of the Ubuntu TV Media Scanner
3+ * Copyright (C) 2012-2013 Canonical Ltd.
4+ *
5+ * This program is free software: you can redistribute it and/or modify
6+ * it under the terms of the GNU Lesser General Public License version 3 as
7+ * published by the Free Software Foundation.
8+ *
9+ * This program is distributed in the hope that it will be useful,
10+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
11+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+ * GNU Lesser General Public License for more details.
13+ *
14+ * You should have received a copy of the GNU Lesser General Public License
15+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
16+ *
17+ * Authored by: Jussi Pakkanen <jussi.pakkanen@canonical.com>
18+ */
19+
20+#ifndef MEDIAARTCACHE_H
21+#define MEDIAARTCACHE_H
22+
23+#include<string>
24+
25+/*
26+ * A class to store thumbnails for files according to
27+ * https://wiki.gnome.org/MediaArtStorageSpec
28+ *
29+ * As this class deals mostly with the filesystem, all
30+ * errors are reported with runtime_error exceptions.
31+ */
32+
33+
34+class MediaArtCache {
35+private:
36+ std::string root_dir;
37+
38+ std::string compute_base_name(const std::string &artist, const std::string &album) const;
39+ std::string get_full_filename(const std::string &artist, const std::string & album) const;
40+
41+public:
42+ static const unsigned int MAX_SIZE = 200;
43+
44+ MediaArtCache();
45+ bool has_art(const std::string &artist, const std::string &album) const;
46+ void add_art(const std::string &artist, const std::string &album,
47+ char *data, unsigned int datalen);
48+ std::string get_art_file(const std::string &artist, const std::string &album) const;
49+ void clear() const;
50+ void prune();
51+ std::string get_cache_dir() const { return root_dir; }
52+};
53+
54+#endif
plugins/Utils/plugin.cpp+22−1
@@ -19,15 +19,17 @@
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"
3031#include "ubuntuwindow.h"
32+#include "unitymenumodelpaths.h"
3133
3234static QObject* applicationsPathsSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
3335 Q_UNUSED(engine);
@@ -41,6 +43,25 @@ void UtilsPlugin::registerTypes(const char *uri)
4143 qmlRegisterType<QAbstractItemModel>();
4244 qmlRegisterType<QLimitProxyModelQML>(uri, 0, 1, "LimitProxyModel");
4345 qmlRegisterType<QSortFilterProxyModelQML>(uri, 0, 1, "SortFilterProxyModel");
46+ qmlRegisterType<UnityMenuModelPaths>(uri, 0, 1, "UnityMenuModelPaths");
4447 qmlRegisterExtendedType<QQuickWindow, UbuntuWindow>(uri, 0, 1, "Window");
4548 qmlRegisterSingletonType<ApplicationPaths>(uri, 0, 1, "ApplicationPaths", applicationsPathsSingleton);
4649}
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
plugins/Utils/unitymenumodelpaths.cppnew file+182
@@ -0,0 +1,182 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Author: Nick Dedekind <nick.dedekind@canonical.com>
17+ */
18+
19+
20+#include "unitymenumodelpaths.h"
21+#include <QDBusArgument>
22+
23+static QVariant parseVariantData(const QVariant& var);
24+
25+const QDBusArgument &operator>>(const QDBusArgument &arg, QVariantMap &map)
26+{
27+ arg.beginMap();
28+ map.clear();
29+ while (!arg.atEnd()) {
30+ QString key;
31+ QVariant value;
32+ arg.beginMapEntry();
33+
34+ arg >> key >> value;
35+ map.insertMulti(key, parseVariantData(value)); // re-parse for qdbusargument
36+
37+ arg.endMapEntry();
38+ }
39+ arg.endMap();
40+ return arg;
41+}
42+
43+static QVariant parseVariantData(const QVariant& var) {
44+ if ((int)var.type() == QMetaType::User && var.userType() == qMetaTypeId<QDBusArgument>()) {
45+ QDBusArgument arg(var.value<QDBusArgument>());
46+ if (arg.currentType() == QDBusArgument::MapType) {
47+ QVariantMap map;
48+ arg >> map;
49+ return map;
50+ }
51+ return arg.asVariant();
52+ }
53+
54+ return var;
55+}
56+
57+UnityMenuModelPaths::UnityMenuModelPaths(QObject *parent)
58+ : QObject(parent)
59+{
60+}
61+
62+QVariant UnityMenuModelPaths::source() const
63+{
64+ return m_sourceData;
65+}
66+
67+void UnityMenuModelPaths::setSource(const QVariant& data)
68+{
69+ if (m_sourceData != data) {
70+ m_sourceData = data;
71+ Q_EMIT sourceChanged();
72+
73+ updateData();
74+ }
75+}
76+
77+void UnityMenuModelPaths::updateData()
78+{
79+ QVariantMap dataMap = parseVariantData(m_sourceData).toMap();
80+
81+ if (!m_busNameHint.isEmpty() && dataMap.contains(m_busNameHint)) {
82+ setBusName(dataMap[m_busNameHint].toByteArray());
83+ } else {
84+ setBusName("");
85+ }
86+
87+ if (!m_menuObjectPathHint.isEmpty() && dataMap.contains(m_menuObjectPathHint)) {
88+ setMenuObjectPath(dataMap[m_menuObjectPathHint].toByteArray());
89+ } else {
90+ setMenuObjectPath("");
91+ }
92+
93+ if (!m_actionsHint.isEmpty() && dataMap.contains(m_actionsHint)) {
94+ setActions(dataMap[m_actionsHint].toMap());
95+ } else {
96+ setActions(QVariantMap());
97+ }
98+}
99+
100+QByteArray UnityMenuModelPaths::busName() const
101+{
102+ return m_busName;
103+}
104+
105+void UnityMenuModelPaths::setBusName(const QByteArray &name)
106+{
107+ if (m_busName != name) {
108+ m_busName = name;
109+ Q_EMIT busNameChanged();
110+ }
111+}
112+
113+QVariantMap UnityMenuModelPaths::actions() const
114+{
115+ return m_actions;
116+}
117+
118+void UnityMenuModelPaths::setActions(const QVariantMap &actions)
119+{
120+ if (m_actions != actions) {
121+ m_actions = actions;
122+ Q_EMIT actionsChanged();
123+ }
124+}
125+
126+QByteArray UnityMenuModelPaths::menuObjectPath() const
127+{
128+ return m_menuObjectPath;
129+}
130+
131+void UnityMenuModelPaths::setMenuObjectPath(const QByteArray &path)
132+{
133+ if (m_menuObjectPath != path) {
134+ m_menuObjectPath = path;
135+ Q_EMIT menuObjectPathChanged();
136+ }
137+}
138+
139+QByteArray UnityMenuModelPaths::busNameHint() const
140+{
141+ return m_busNameHint;
142+}
143+
144+void UnityMenuModelPaths::setBusNameHint(const QByteArray &nameHint)
145+{
146+ if (m_busNameHint != nameHint) {
147+ m_busNameHint = nameHint;
148+ Q_EMIT busNameHintChanged();
149+
150+ updateData();
151+ }
152+}
153+
154+QByteArray UnityMenuModelPaths::actionsHint() const
155+{
156+ return m_actionsHint;
157+}
158+
159+void UnityMenuModelPaths::setActionsHint(const QByteArray &actionsHint)
160+{
161+ if (m_actionsHint != actionsHint) {
162+ m_actionsHint = actionsHint;
163+ Q_EMIT actionsHintChanged();
164+
165+ updateData();
166+ }
167+}
168+
169+QByteArray UnityMenuModelPaths::menuObjectPathHint() const
170+{
171+ return m_menuObjectPathHint;
172+}
173+
174+void UnityMenuModelPaths::setMenuObjectPathHint(const QByteArray &pathHint)
175+{
176+ if (m_menuObjectPathHint != pathHint) {
177+ m_menuObjectPathHint = pathHint;
178+ Q_EMIT menuObjectPathHintChanged();
179+
180+ updateData();
181+ }
182+}
plugins/Utils/unitymenumodelpaths.hnew file+82
@@ -0,0 +1,82 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Author: Nick Dedekind <nick.dedekind@canonical.com>
17+ */
18+
19+#ifndef UNITY_MENU_MODEL_PATHS_H
20+#define UNITY_MENU_MODEL_PATHS_H
21+
22+#include <QVariant>
23+
24+class UnityMenuModelPaths : public QObject
25+{
26+ Q_OBJECT
27+
28+ Q_PROPERTY(QVariant source READ source WRITE setSource NOTIFY sourceChanged)
29+ Q_PROPERTY(QByteArray busName READ busName NOTIFY busNameChanged)
30+ Q_PROPERTY(QVariantMap actions READ actions NOTIFY actionsChanged)
31+ Q_PROPERTY(QByteArray menuObjectPath READ menuObjectPath NOTIFY menuObjectPathChanged)
32+
33+ Q_PROPERTY(QByteArray busNameHint READ busNameHint WRITE setBusNameHint NOTIFY busNameHintChanged)
34+ Q_PROPERTY(QByteArray actionsHint READ actionsHint WRITE setActionsHint NOTIFY actionsHintChanged)
35+ Q_PROPERTY(QByteArray menuObjectPathHint READ menuObjectPathHint WRITE setMenuObjectPathHint NOTIFY menuObjectPathHintChanged)
36+
37+public:
38+ explicit UnityMenuModelPaths(QObject *parent = 0);
39+
40+ QVariant source() const;
41+ void setSource(const QVariant& data);
42+
43+ QByteArray busName() const;
44+ QVariantMap actions() const;
45+ QByteArray menuObjectPath() const;
46+
47+ QByteArray busNameHint() const;
48+ QByteArray actionsHint() const;
49+ QByteArray menuObjectPathHint() const;
50+
51+Q_SIGNALS:
52+ void sourceChanged();
53+ void busNameChanged();
54+ void actionsChanged();
55+ void menuObjectPathChanged();
56+
57+ void busNameHintChanged();
58+ void actionsHintChanged();
59+ void menuObjectPathHintChanged();
60+
61+private:
62+ void setBusName(const QByteArray &name);
63+ void setActions(const QVariantMap& actions);
64+ void setMenuObjectPath(const QByteArray &path);
65+
66+ void setBusNameHint(const QByteArray& nameHint);
67+ void setActionsHint(const QByteArray &actionsHint);
68+ void setMenuObjectPathHint(const QByteArray &pathHint);
69+
70+ void updateData();
71+
72+ QVariant m_sourceData;
73+ QByteArray m_busName;
74+ QVariantMap m_actions;
75+ QByteArray m_menuObjectPath;
76+
77+ QByteArray m_busNameHint;
78+ QByteArray m_actionsHint;
79+ QByteArray m_menuObjectPathHint;
80+};
81+
82+#endif // UNITY_MENU_MODEL_PATHS_H
po/ar.po+43−47
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
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-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16750)\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,88 +87,76 @@ msgstr "ويكيبيديا"
8787msgid "YouTube"
8888msgstr "يوتيوب"
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
9696msgstr ""
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100100msgstr ""
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104104msgstr ""
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr ""
109109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111111msgid "Close"
112112msgstr ""
113113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115115msgid "Swipe up again to close the settings screen"
116116msgstr ""
117117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119119msgid "Left edge"
120120msgstr ""
121121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124124msgstr ""
125125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127127msgid "Well done"
128128msgstr ""
129129
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
130+#: Components/EdgeDemo.qml:227
131+msgid ""
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132134msgstr ""
133135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135137msgid "Recent searches"
136138msgstr "عمليات البحث الأخيرة"
137139
138140#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140143#, qt-format
141144msgid "(%1)"
142145msgstr ""
143146
144147#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146150#, qt-format
147151msgid "%1 review"
148152msgid_plural "%1 reviews"
149153msgstr[0] ""
150154msgstr[1] ""
151155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153157msgid "Rate this"
154158msgstr ""
155159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173161msgid "Featured"
174162msgstr "المميز"
@@ -197,19 +185,23 @@ msgstr "الشائع على الإنترنت"
197185msgid "Videos"
198186msgstr "فيديوهات"
199187
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
202−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 ""
203195
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
206−msgstr "النجوم:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
207199
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
210−msgstr "المؤلف:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr ""
211203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213205msgid "Emergency Call"
214206msgstr ""
215207
@@ -246,11 +238,15 @@ msgstr "تتكلم الآن..."
246238msgid "Search"
247239msgstr "ابحث"
248240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250242msgid "Sorry, there is nothing that matches your search."
251243msgstr "عذراً، لا يوجد ما يطابق بحثك."
252244
253−#: Shell.qml:429
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
249+#: Shell.qml:453
254250#, qt-format
255251msgid "Please enter %1"
256252msgstr ""
po/ast.ponew file+255
@@ -0,0 +1,255 @@
1+# Asturian translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-03 14:02+0000\n"
12+"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
13+"Language-Team: Asturian <ast@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
20+
21+#: Applications/applications.js:23
22+msgid "Phone"
23+msgstr "Teléfonu"
24+
25+#: Applications/applications.js:29
26+msgid "Camera"
27+msgstr "Cámara"
28+
29+#: Applications/applications.js:35
30+msgid "Gallery"
31+msgstr "Galería"
32+
33+#: Applications/applications.js:40
34+msgid "Facebook"
35+msgstr "Facebook"
36+
37+#: Applications/applications.js:46
38+msgid "Browser"
39+msgstr "Navegador"
40+
41+#: Applications/applications.js:51
42+msgid "Twitter"
43+msgstr "Twitter"
44+
45+#: Applications/applications.js:57
46+msgid "GMail"
47+msgstr "GMail"
48+
49+#: Applications/applications.js:62
50+msgid "Weather"
51+msgstr "Meteoroloxía"
52+
53+#: Applications/applications.js:68
54+msgid "Notepad"
55+msgstr "Bloc de notes"
56+
57+#: Applications/applications.js:74
58+msgid "Calendar"
59+msgstr "Calendariu"
60+
61+#: Applications/applications.js:80
62+msgid "Media Player"
63+msgstr "Reproductor multimedia"
64+
65+#: Applications/applications.js:86
66+msgid "Evernote"
67+msgstr "Evernote"
68+
69+#: Applications/applications.js:91
70+msgid "Map"
71+msgstr "Map"
72+
73+#: Applications/applications.js:96
74+msgid "Pinterest"
75+msgstr "Pinterest"
76+
77+#: Applications/applications.js:101
78+msgid "SoundCloud"
79+msgstr "SoundCloud"
80+
81+#: Applications/applications.js:106
82+msgid "Wikipedia"
83+msgstr "Wikipedia"
84+
85+#: Applications/applications.js:111
86+msgid "YouTube"
87+msgstr "YouTube"
88+
89+#: Components/EdgeDemoOverlay.qml:149
90+msgid "Skip intro"
91+msgstr "Omitir la intro"
92+
93+#: Components/EdgeDemo.qml:112
94+msgid "Right edge"
95+msgstr "Berbesu drechu"
96+
97+#: Components/EdgeDemo.qml:113
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr "Esliza'l deu dende'l berbesu drechu pa desbloquiar el teléfonu"
100+
101+#: Components/EdgeDemo.qml:144
102+msgid "Top edge"
103+msgstr "Berbesu superior"
104+
105+#: Components/EdgeDemo.qml:145
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr "Esliza'l deu dende'l berbesu superior p'acceder a los menús"
108+
109+#: Components/EdgeDemo.qml:170
110+msgid "Close"
111+msgstr "Zarrar"
112+
113+#: Components/EdgeDemo.qml:171
114+msgid "Swipe up again to close the settings screen"
115+msgstr "Esliza hacia arriba pa zarrar la pantalla d'axustes"
116+
117+#: Components/EdgeDemo.qml:198
118+msgid "Left edge"
119+msgstr "Berbesu esquierdu"
120+
121+#: Components/EdgeDemo.qml:199
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+"Esliza'l deu dende la esquierda p'amosar el llanzador y acceder rápidamente "
125+"a les aplicaciones"
126+
127+#: Components/EdgeDemo.qml:226
128+msgid "Well done"
129+msgstr "Bien fecho"
130+
131+#: Components/EdgeDemo.qml:227
132+msgid ""
133+"You have now mastered the edge gestures and can start using the "
134+"phone<br><br>Tap anywhere to start"
135+msgstr ""
136+"Agora domines los xestos de berbesos y pues usar el teléfonu<br><br>Toca la "
137+"pantalla pa entamar"
138+
139+#: Components/PageHeader.qml:341
140+msgid "Recent searches"
141+msgstr "Busques recientes"
142+
143+#. TRANSLATORS: Number of persons who rated this app
144+#. TRANSLATORS: Number of persons who rated this app/video/whatever
145+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
146+#, qt-format
147+msgid "(%1)"
148+msgstr "(%1)"
149+
150+#. TRANSLATORS: Number of persons who wrote reviews for this app
151+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
152+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
153+#, qt-format
154+msgid "%1 review"
155+msgid_plural "%1 reviews"
156+msgstr[0] "%1 reseña"
157+msgstr[1] "%1 reseñes"
158+
159+#: Dash/Apps/AppPreview.qml:126
160+msgid "Rate this"
161+msgstr "Valorar esto"
162+
163+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
164+msgid "Featured"
165+msgstr "Destacaos"
166+
167+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
168+msgid "Recent"
169+msgstr "Recientes"
170+
171+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
172+msgid "New Releases"
173+msgstr "Llanzamientos nuevos"
174+
175+#: Dash/DashMusic.qml:30
176+msgid "Top Charting"
177+msgstr "Meyor posicionaes"
178+
179+#: Dash/DashMusic.qml:91
180+msgid "Music"
181+msgstr "Música"
182+
183+#: Dash/DashVideos.qml:31
184+msgid "Popular Online"
185+msgstr "Populares en llinia"
186+
187+#: Dash/DashVideos.qml:146
188+msgid "Videos"
189+msgstr "Vídeos"
190+
191+#: Dash/Previews/Reviews.qml:74
192+msgid "Add a review"
193+msgstr "Amestar una reseña"
194+
195+#: Dash/Previews/Reviews.qml:86
196+msgid "Review"
197+msgstr "Revisar"
198+
199+#: Dash/Previews/Reviews.qml:121
200+msgid "Send"
201+msgstr "Unviar"
202+
203+#: Dash/Previews/Reviews.qml:139
204+msgid "Comments:"
205+msgstr "Comentarios:"
206+
207+#: Greeter/Lockscreen.qml:142
208+msgid "Emergency Call"
209+msgstr "Llamada d'emerxencia"
210+
211+#: Greeter/PassphraseLockscreen.qml:59
212+#, qt-format
213+msgid "Hello %1"
214+msgstr "Hola %1"
215+
216+#: Greeter/PassphraseLockscreen.qml:59
217+msgid "Hello"
218+msgstr "Hola"
219+
220+#: Hud/HudParametrizedActionsPage.qml:132
221+msgid "Confirm"
222+msgstr "Confirmar"
223+
224+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
225+msgid "Type or say a command"
226+msgstr "Escribi o di una orde"
227+
228+#: Hud/Hud.qml:84
229+msgid "Loading. Please Wait..."
230+msgstr "Cargando, espera…"
231+
232+#: Hud/Hud.qml:89
233+msgid "Speak Now..."
234+msgstr "Fala agora…"
235+
236+#: Hud/Hud.qml:94
237+msgid "Speaking..."
238+msgstr "Falando…"
239+
240+#: Panel/SearchIndicator.qml:27
241+msgid "Search"
242+msgstr "Guetar"
243+
244+#: plugins/Unity/scope.cpp:361
245+msgid "Sorry, there is nothing that matches your search."
246+msgstr "Sentímoslo, nun hai res que concase cola gueta"
247+
248+#: plugins/Unity/showallfilteroption.cpp:41
249+msgid "All"
250+msgstr "Too"
251+
252+#: Shell.qml:453
253+#, qt-format
254+msgid "Please enter %1"
255+msgstr "Introduz %1"
po/az.po+40−44
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Son axtarışlar"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Videolar"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Söylənilir..."
245237msgid "Search"
246238msgstr "Axtar"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/bg.po+41−45
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16750)\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,88 +87,76 @@ msgstr "Уикипедия"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
9696msgstr ""
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100100msgstr ""
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104104msgstr ""
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr ""
109109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111111msgid "Close"
112112msgstr ""
113113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115115msgid "Swipe up again to close the settings screen"
116116msgstr ""
117117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119119msgid "Left edge"
120120msgstr ""
121121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124124msgstr ""
125125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127127msgid "Well done"
128128msgstr ""
129129
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
130+#: Components/EdgeDemo.qml:227
131+msgid ""
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132134msgstr ""
133135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135137msgid "Recent searches"
136138msgstr "Скорошни търсения"
137139
138140#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140143#, qt-format
141144msgid "(%1)"
142145msgstr ""
143146
144147#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146150#, qt-format
147151msgid "%1 review"
148152msgid_plural "%1 reviews"
149153msgstr[0] ""
150154msgstr[1] ""
151155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153157msgid "Rate this"
154158msgstr ""
155159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173161msgid "Featured"
174162msgstr "Най-отличени"
@@ -197,19 +185,23 @@ msgstr ""
197185msgid "Videos"
198186msgstr "Видеоклипове"
199187
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
202190msgstr ""
203191
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
206194msgstr ""
207195
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
210−msgstr "Автор:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
211199
212−#: Greeter/Lockscreen.qml:134
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr ""
203+
204+#: Greeter/Lockscreen.qml:142
213205msgid "Emergency Call"
214206msgstr ""
215207
@@ -246,11 +238,15 @@ msgstr ""
246238msgid "Search"
247239msgstr "Търсене"
248240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250242msgid "Sorry, there is nothing that matches your search."
251243msgstr "Съжаляваме, няма нищо, което да отговаря на вашето търсене."
252244
253−#: Shell.qml:429
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
249+#: Shell.qml:453
254250#, qt-format
255251msgid "Please enter %1"
256252msgstr ""
po/ca.po+60−58
@@ -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-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-09-11 10:30+0000\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"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"
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-09-12 08:06+0000\n"
19−"X-Generator: Launchpad (build 16761)\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,88 +86,82 @@ msgstr "Viquipèdia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "Omet la introducció"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr "Vora dreta"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100+"Proveu de lliscar el dit des de la vora dreta per desblocar el telèfon"
100101
101−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
102103msgid "Top edge"
103104msgstr "Vora superior"
104105
105−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
106107msgid "Try swiping from the top edge to access the indicators"
107108msgstr ""
109+"Proveu de lliscar el dit des de la vora superior per accedir als indicadors"
108110
109−#: Components/EdgeDemo.qml:161
111+#: Components/EdgeDemo.qml:170
110112msgid "Close"
111−msgstr ""
113+msgstr "Tanca"
112114
113−#: Components/EdgeDemo.qml:162
115+#: Components/EdgeDemo.qml:171
114116msgid "Swipe up again to close the settings screen"
115117msgstr ""
118+"Llisqueu el dit cap amunt una altra vegada per tancar la pantalla de "
119+"configuració"
116120
117−#: Components/EdgeDemo.qml:189
121+#: Components/EdgeDemo.qml:198
118122msgid "Left edge"
119123msgstr "Vora esquerra"
120124
121−#: Components/EdgeDemo.qml:190
125+#: Components/EdgeDemo.qml:199
122126msgid "Swipe from the left to reveal the launcher for quick access to apps"
123127msgstr ""
128+"Llisqueu el dit des de la vora esquerra per mostrar el llançador i accedir "
129+"ràpidament a les aplicacions"
124130
125−#: Components/EdgeDemo.qml:217
131+#: Components/EdgeDemo.qml:226
126132msgid "Well done"
127133msgstr "Enhorabona!"
128134
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
135+#: Components/EdgeDemo.qml:227
136+msgid ""
137+"You have now mastered the edge gestures and can start using the "
138+"phone<br><br>Tap anywhere to start"
131139msgstr ""
132140
133−#: Components/PageHeader.qml:298
141+#: Components/PageHeader.qml:341
134142msgid "Recent searches"
135143msgstr "Cerques recents"
136144
137145#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139148#, qt-format
140149msgid "(%1)"
141150msgstr "(%1)"
142151
143152#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145155#, qt-format
146156msgid "%1 review"
147157msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
158+msgstr[0] "%1 ressenya"
159+msgstr[1] "%1 ressenyes"
150160
151−#: Dash/Apps/AppPreview.qml:175
161+#: Dash/Apps/AppPreview.qml:126
152162msgid "Rate this"
153163msgstr ""
154164
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr "Ressenya"
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr "Comentaris:"
170−
171165#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172166msgid "Featured"
173167msgstr "Destacats"
@@ -178,11 +172,11 @@ msgstr "Recents"
178172
179173#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180174msgid "New Releases"
181−msgstr ""
175+msgstr "Novetats"
182176
183177#: Dash/DashMusic.qml:30
184178msgid "Top Charting"
185−msgstr ""
179+msgstr "El millor de les llistes"
186180
187181#: Dash/DashMusic.qml:91
188182msgid "Music"
@@ -190,32 +184,36 @@ msgstr "Música"
190184
191185#: Dash/DashVideos.qml:31
192186msgid "Popular Online"
193−msgstr ""
187+msgstr "Popular a la xarxa"
194188
195189#: Dash/DashVideos.qml:146
196190msgid "Videos"
197191msgstr "Vídeos"
198192
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−msgstr ""
193+#: Dash/Previews/Reviews.qml:74
194+msgid "Add a review"
195+msgstr "Afegiu una ressenya"
202196
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr ""
197+#: Dash/Previews/Reviews.qml:86
198+msgid "Review"
199+msgstr "Ressenya"
200+
201+#: Dash/Previews/Reviews.qml:121
202+msgid "Send"
203+msgstr "Envia"
206204
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr "Autor:"
205+#: Dash/Previews/Reviews.qml:139
206+msgid "Comments:"
207+msgstr "Comentaris:"
210208
211−#: Greeter/Lockscreen.qml:134
209+#: Greeter/Lockscreen.qml:142
212210msgid "Emergency Call"
213−msgstr ""
211+msgstr "Trucada d'emergència"
214212
215213#: Greeter/PassphraseLockscreen.qml:59
216214#, qt-format
217215msgid "Hello %1"
218−msgstr ""
216+msgstr "Hola %1"
219217
220218#: Greeter/PassphraseLockscreen.qml:59
221219msgid "Hello"
@@ -245,11 +243,15 @@ msgstr "S'està parlant..."
245243msgid "Search"
246244msgstr "Cerca"
247245
248−#: plugins/Unity/scope.cpp:317
246+#: plugins/Unity/scope.cpp:361
249247msgid "Sorry, there is nothing that matches your search."
250248msgstr "No hi ha res que coincideixi amb la cerca"
251249
252−#: Shell.qml:429
250+#: plugins/Unity/showallfilteroption.cpp:41
251+msgid "All"
252+msgstr ""
253+
254+#: Shell.qml:453
253255#, qt-format
254256msgid "Please enter %1"
255−msgstr ""
257+msgstr "Introduïu %1"
po/cs.ponew file+252
@@ -0,0 +1,252 @@
1+# Czech translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-08 08:09+0000\n"
12+"Last-Translator: Tadeáš Pařík <tadeas.parik@gmail.com>\n"
13+"Language-Team: Czech <cs@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18+"X-Launchpad-Export-Date: 2013-10-09 06:24+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
20+
21+#: Applications/applications.js:23
22+msgid "Phone"
23+msgstr "Telefon"
24+
25+#: Applications/applications.js:29
26+msgid "Camera"
27+msgstr "Fotoaparát"
28+
29+#: Applications/applications.js:35
30+msgid "Gallery"
31+msgstr "Galerie"
32+
33+#: Applications/applications.js:40
34+msgid "Facebook"
35+msgstr "Facebook"
36+
37+#: Applications/applications.js:46
38+msgid "Browser"
39+msgstr "Prohlížeč"
40+
41+#: Applications/applications.js:51
42+msgid "Twitter"
43+msgstr "Twitter"
44+
45+#: Applications/applications.js:57
46+msgid "GMail"
47+msgstr "GMail"
48+
49+#: Applications/applications.js:62
50+msgid "Weather"
51+msgstr "Počasí"
52+
53+#: Applications/applications.js:68
54+msgid "Notepad"
55+msgstr "Poznámkový blok"
56+
57+#: Applications/applications.js:74
58+msgid "Calendar"
59+msgstr "Kalendář"
60+
61+#: Applications/applications.js:80
62+msgid "Media Player"
63+msgstr "Přehrávač multimédií"
64+
65+#: Applications/applications.js:86
66+msgid "Evernote"
67+msgstr "Evernote"
68+
69+#: Applications/applications.js:91
70+msgid "Map"
71+msgstr "Mapa"
72+
73+#: Applications/applications.js:96
74+msgid "Pinterest"
75+msgstr "Pinterest"
76+
77+#: Applications/applications.js:101
78+msgid "SoundCloud"
79+msgstr "Hudební Cloud"
80+
81+#: Applications/applications.js:106
82+msgid "Wikipedia"
83+msgstr "Wikipedie"
84+
85+#: Applications/applications.js:111
86+msgid "YouTube"
87+msgstr "YouTube"
88+
89+#: Components/EdgeDemoOverlay.qml:149
90+msgid "Skip intro"
91+msgstr "Přeskočit intro"
92+
93+#: Components/EdgeDemo.qml:112
94+msgid "Right edge"
95+msgstr "Pravý okraj"
96+
97+#: Components/EdgeDemo.qml:113
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr "Pokuste se odemknout telefon potažením prstu z pravého okraje."
100+
101+#: Components/EdgeDemo.qml:144
102+msgid "Top edge"
103+msgstr "Horní okraj"
104+
105+#: Components/EdgeDemo.qml:145
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr "Pokuste se zpřístupnit indikátory potažením prstu z horního okraje"
108+
109+#: Components/EdgeDemo.qml:170
110+msgid "Close"
111+msgstr "Uzavřít"
112+
113+#: Components/EdgeDemo.qml:171
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:198
118+msgid "Left edge"
119+msgstr "Levý okraj"
120+
121+#: Components/EdgeDemo.qml:199
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr "Pro rychlý přístup k aplikacím potáhněte prst z levého okraje."
124+
125+#: Components/EdgeDemo.qml:226
126+msgid "Well done"
127+msgstr "Výborně"
128+
129+#: Components/EdgeDemo.qml:227
130+msgid ""
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
133+msgstr ""
134+
135+#: Components/PageHeader.qml:341
136+msgid "Recent searches"
137+msgstr "Poslední vyhledávání"
138+
139+#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142+#, qt-format
143+msgid "(%1)"
144+msgstr "(%1)"
145+
146+#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149+#, qt-format
150+msgid "%1 review"
151+msgid_plural "%1 reviews"
152+msgstr[0] "%1 recenze"
153+msgstr[1] "%1 recenze"
154+msgstr[2] "%1 recenzí"
155+
156+#: Dash/Apps/AppPreview.qml:126
157+msgid "Rate this"
158+msgstr "Ohodnoťte to"
159+
160+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
161+msgid "Featured"
162+msgstr "Oblíbené"
163+
164+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
165+msgid "Recent"
166+msgstr "Nedávné"
167+
168+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
169+msgid "New Releases"
170+msgstr ""
171+
172+#: Dash/DashMusic.qml:30
173+msgid "Top Charting"
174+msgstr ""
175+
176+#: Dash/DashMusic.qml:91
177+msgid "Music"
178+msgstr "Hudba"
179+
180+#: Dash/DashVideos.qml:31
181+msgid "Popular Online"
182+msgstr "Oblíbené on-line"
183+
184+#: Dash/DashVideos.qml:146
185+msgid "Videos"
186+msgstr "Videa"
187+
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr "Přidat recenzi"
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
194+msgstr "Recenze"
195+
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr "Odeslat"
199+
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr "Komentáře:"
203+
204+#: Greeter/Lockscreen.qml:142
205+msgid "Emergency Call"
206+msgstr "Tísňové volání"
207+
208+#: Greeter/PassphraseLockscreen.qml:59
209+#, qt-format
210+msgid "Hello %1"
211+msgstr "Ahoj %1"
212+
213+#: Greeter/PassphraseLockscreen.qml:59
214+msgid "Hello"
215+msgstr "Ahoj"
216+
217+#: Hud/HudParametrizedActionsPage.qml:132
218+msgid "Confirm"
219+msgstr "Potvrdit"
220+
221+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
222+msgid "Type or say a command"
223+msgstr "Napište nebo řekněte příkaz"
224+
225+#: Hud/Hud.qml:84
226+msgid "Loading. Please Wait..."
227+msgstr "Načítám. Čekejte prosím..."
228+
229+#: Hud/Hud.qml:89
230+msgid "Speak Now..."
231+msgstr "Mluvte..."
232+
233+#: Hud/Hud.qml:94
234+msgid "Speaking..."
235+msgstr "Mluvte..."
236+
237+#: Panel/SearchIndicator.qml:27
238+msgid "Search"
239+msgstr "Hledat"
240+
241+#: plugins/Unity/scope.cpp:361
242+msgid "Sorry, there is nothing that matches your search."
243+msgstr "Je nám líto, ale nic neodpovídá zadání"
244+
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr "Vše"
248+
249+#: Shell.qml:453
250+#, qt-format
251+msgid "Please enter %1"
252+msgstr "Zadejte prosím %1"
po/de.po+57−61
@@ -7,16 +7,16 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 00:37+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-06 10:57+0000\n"
12+"Last-Translator: SaGrLand <sg@samuel-greef.de>\n"
1313"Language-Team: German <de@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,87 +86,75 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "Überspringe Einführung"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "Rechter Rand"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "Oberer Rand"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "Schließen"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "Linker Rand"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127−msgstr ""
127+msgstr "Gut gemacht"
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Letzte Suchbegriffe"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
152+msgstr[0] "%1 Bewertung"
153+msgstr[1] "%1 Bewertungen"
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153−msgstr ""
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
157+msgstr "Bewerten"
170158
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
@@ -196,21 +184,25 @@ msgstr "Online Beliebt"
196184msgid "Videos"
197185msgstr "Videos"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−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"
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr "Darsteller:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "Senden"
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr "Autor:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "Kommentare:"
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213−msgstr ""
205+msgstr "Notruf"
214206
215207#: Greeter/PassphraseLockscreen.qml:59
216208#, qt-format
@@ -245,11 +237,15 @@ msgstr "Sie sprechen …"
245237msgid "Search"
246238msgstr "Suchen"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Entschuldigung, es wurden keine Treffer erzielt."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr "Alle"
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255−msgstr ""
251+msgstr "Bitte geben Sie %1 ein"
po/el.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Πρόσφατες αναζητήσεις"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Βίντεο"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Ομιλία..."
245237msgid "Search"
246238msgstr "Αναζήτηση"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να ταιριάζει στην αναζήτησή σας."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/en_AU.po+63−67
@@ -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-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 01:13+0000\n"
12−"Last-Translator: Jackson Doak <Doak.jackson@gmail.com>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-09-28 07:46+0000\n"
12+"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,87 +86,75 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "Skip intro"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "Right edge"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Try swiping from the right edge to unlock the phone"
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "Top edge"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "Try swiping from the top edge to access the indicators"
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "Close"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "Swipe up again to close the settings screen"
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "Left edge"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123−msgstr ""
123+msgstr "Swipe from the left to reveal the launcher for quick access to apps"
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127−msgstr ""
127+msgstr "Well done"
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Recent searches"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
152+msgstr[0] "%1 review"
153+msgstr[1] "%1 reviews"
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153−msgstr ""
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
157+msgstr "Rate this"
170158
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
@@ -196,30 +184,34 @@ msgstr "Popular Online"
196184msgid "Videos"
197185msgstr "Videos"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−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"
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "Send"
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "Comments:"
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213−msgstr ""
205+msgstr "Emergency Call"
214206
215207#: Greeter/PassphraseLockscreen.qml:59
216208#, qt-format
217209msgid "Hello %1"
218−msgstr ""
210+msgstr "Hello %1"
219211
220212#: Greeter/PassphraseLockscreen.qml:59
221213msgid "Hello"
222−msgstr ""
214+msgstr "Hello"
223215
224216#: Hud/HudParametrizedActionsPage.qml:132
225217msgid "Confirm"
@@ -245,11 +237,15 @@ msgstr "Speaking..."
245237msgid "Search"
246238msgstr "Search"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Sorry, there is nothing that matches your search."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255−msgstr ""
251+msgstr "Please enter %1"
po/en_GB.po+43−47
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Recent searches"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr "Featured"
@@ -196,19 +184,23 @@ msgstr "Popular Online"
196184msgid "Videos"
197185msgstr "Videos"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−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 ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Speaking..."
245237msgid "Search"
246238msgstr "Search"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Sorry, there is nothing that matches your search."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr "Please enter %1"
po/eo.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr ""
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr ""
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr ""
245237msgid "Search"
246238msgstr ""
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr ""
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/es.po+48−50
@@ -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-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-09-04 22:12+0000\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"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"
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-09-05 05:35+0000\n"
19−"X-Generator: Launchpad (build 16758)\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"
@@ -48,7 +48,7 @@ msgstr "GMail"
4848
4949#: Applications/applications.js:62
5050msgid "Weather"
51−msgstr "Metereología"
51+msgstr "Meteorología"
5252
5353#: Applications/applications.js:68
5454msgid "Notepad"
@@ -86,90 +86,80 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Omitir la introducción"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr "Borde derecho"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr "Deslice el dedo desde el borde derecho para desbloquear el teléfono"
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr "Borde superior"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr "Deslice el dedo desde el borde superior para acceder a los menús"
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr "Cerrar"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr "Deslice hacia arriba para cerrar la pantalla de configuración"
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr "Borde izquierdo"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124"Deslice el dedo desde la izquierda para mostrar el lanzador y acceder "
125125"rápidamente a las aplicaciones"
126126
127−#: Components/EdgeDemo.qml:217
127+#: Components/EdgeDemo.qml:226
128128msgid "Well done"
129129msgstr "Bien hecho"
130130
131−#: Components/EdgeDemo.qml:218
132−msgid "You have now mastered the edge gestures and can start using the phone"
133−msgstr "Ahora domina el uso de gestos de los bordes. Puede usar el teléfono"
131+#: Components/EdgeDemo.qml:227
132+msgid ""
133+"You have now mastered the edge gestures and can start using the "
134+"phone<br><br>Tap anywhere to start"
135+msgstr ""
136+"Ahora domina los gestos de bordes y puede usar el teléfono<br><br>Toque la "
137+"pantalla para comenzar"
134138
135−#: Components/PageHeader.qml:298
139+#: Components/PageHeader.qml:341
136140msgid "Recent searches"
137141msgstr "Búsquedas recientes"
138142
139143#. TRANSLATORS: Number of persons who rated this app
140−#: 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
141146#, qt-format
142147msgid "(%1)"
143148msgstr "(%1)"
144149
145150#. TRANSLATORS: Number of persons who wrote reviews for this app
146−#: 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
147153#, qt-format
148154msgid "%1 review"
149155msgid_plural "%1 reviews"
150156msgstr[0] "%1 reseña"
151157msgstr[1] "%1 reseñas"
152158
153−#: Dash/Apps/AppPreview.qml:175
159+#: Dash/Apps/AppPreview.qml:126
154160msgid "Rate this"
155161msgstr "Valorar esto"
156162
157−#: Dash/Apps/AppReviews.qml:72
158−msgid "Add a review"
159−msgstr "Añadir una reseña"
160−
161−#: Dash/Apps/AppReviews.qml:84
162−msgid "Review"
163−msgstr "Reseñar"
164−
165−#: Dash/Apps/AppReviews.qml:118
166−msgid "Send"
167−msgstr "Enviar"
168−
169−#: Dash/Apps/AppReviews.qml:136
170−msgid "Comments:"
171−msgstr "Comentarios:"
172−
173163#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
174164msgid "Featured"
175165msgstr "Destacados"
@@ -198,19 +188,23 @@ msgstr "Populares en línea"
198188msgid "Videos"
199189msgstr "Vídeos"
200190
201−#: Dash/Video/VideoPreview.qml:130
202−msgid "Directed by:"
203−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"
204198
205−#: Dash/Video/VideoPreview.qml:153
206−msgid "Starring:"
207−msgstr "Protagonistas:"
199+#: Dash/Previews/Reviews.qml:121
200+msgid "Send"
201+msgstr "Enviar"
208202
209−#: Dash/Video/VideoPreview.qml:176
210−msgid "Author:"
211−msgstr "Autor:"
203+#: Dash/Previews/Reviews.qml:139
204+msgid "Comments:"
205+msgstr "Comentarios:"
212206
213−#: Greeter/Lockscreen.qml:134
207+#: Greeter/Lockscreen.qml:142
214208msgid "Emergency Call"
215209msgstr "Llamada de emergencia"
216210
@@ -247,11 +241,15 @@ msgstr "Hablando…"
247241msgid "Search"
248242msgstr "Buscar"
249243
250−#: plugins/Unity/scope.cpp:317
244+#: plugins/Unity/scope.cpp:361
251245msgid "Sorry, there is nothing that matches your search."
252246msgstr "No hay nada que coincida con su búsqueda."
253247
254−#: Shell.qml:429
248+#: plugins/Unity/showallfilteroption.cpp:41
249+msgid "All"
250+msgstr "Todo"
251+
252+#: Shell.qml:453
255253#, qt-format
256254msgid "Please enter %1"
257255msgstr "Introduzca %1"
po/fi.po+47−49
@@ -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-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-09-26 09:25+0000\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"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"
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-09-27 06:43+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,88 +86,78 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Ohita esittely"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr "Oikea reuna"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr "Vedä oikealta avataksesi puhelimen lukituksen"
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr "Yläreuna"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr "Vedä yläreunasta käyttääksesi ilmaisimia"
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr "Sulje"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr "Vedä uudestaan sulkeaksesi asetusnäkymän"
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr "Vasen reuna"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr "Vedä vasemmalta saattaaksesi sovellusten käynnistimen esiin"
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr "Hyvin tehty"
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
131−msgstr "Hallitset nyt reunaeleet, joten voit aloittaa puhelimen käytön"
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+"Hallitset nyt reunaeleet, joten voit aloittaa puhelimen "
135+"käytön<br><br>Napauta missä tahansa aloittaaksesi"
132136
133−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
134138msgid "Recent searches"
135139msgstr "Viimeisimmät haut"
136140
137141#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139144#, qt-format
140145msgid "(%1)"
141146msgstr "(%1)"
142147
143148#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145151#, qt-format
146152msgid "%1 review"
147153msgid_plural "%1 reviews"
148154msgstr[0] "%1 arvostelu"
149155msgstr[1] "%1 arvostelua"
150156
151−#: Dash/Apps/AppPreview.qml:175
157+#: Dash/Apps/AppPreview.qml:126
152158msgid "Rate this"
153159msgstr "Arvioi tämä"
154160
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr "Lisää arvostelu"
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr "Arvostelu"
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr "Lähetä"
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr "Kommentit:"
170−
171161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172162msgid "Featured"
173163msgstr "Suositellut"
@@ -196,19 +186,23 @@ msgstr "Suosittua verkossa"
196186msgid "Videos"
197187msgstr "Videot"
198188
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−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"
202196
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr "Pääosissa:"
197+#: Dash/Previews/Reviews.qml:121
198+msgid "Send"
199+msgstr "Lähetä"
206200
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr "Tekijä:"
201+#: Dash/Previews/Reviews.qml:139
202+msgid "Comments:"
203+msgstr "Kommentit:"
210204
211−#: Greeter/Lockscreen.qml:134
205+#: Greeter/Lockscreen.qml:142
212206msgid "Emergency Call"
213207msgstr "Hätäpuhelu"
214208
@@ -245,11 +239,15 @@ msgstr "Puhutaan..."
245239msgid "Search"
246240msgstr "Hae"
247241
248−#: plugins/Unity/scope.cpp:317
242+#: plugins/Unity/scope.cpp:361
249243msgid "Sorry, there is nothing that matches your search."
250244msgstr "Hakuun täsmääviä tuloksia ei löydy."
251245
252−#: Shell.qml:429
246+#: plugins/Unity/showallfilteroption.cpp:41
247+msgid "All"
248+msgstr "Kaikki"
249+
250+#: Shell.qml:453
253251#, qt-format
254252msgid "Please enter %1"
255253msgstr "Kirjoita %1"
po/fo.po+52−56
@@ -7,56 +7,56 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 02:57+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-01 15:13+0000\n"
12+"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
1313"Language-Team: Faroese <fo@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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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"
23−msgstr ""
23+msgstr "Fartelefon"
2424
2525#: Applications/applications.js:29
2626msgid "Camera"
27−msgstr ""
27+msgstr "Myndatól"
2828
2929#: Applications/applications.js:35
3030msgid "Gallery"
31−msgstr ""
31+msgstr "Myndasavn"
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 "Kagi"
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 "GMail"
4848
4949#: Applications/applications.js:62
5050msgid "Weather"
51−msgstr ""
51+msgstr "Veðrið"
5252
5353#: Applications/applications.js:68
5454msgid "Notepad"
55−msgstr ""
55+msgstr "Skriviblokkur"
5656
5757#: Applications/applications.js:74
5858msgid "Calendar"
59−msgstr ""
59+msgstr "Kalendari"
6060
6161#: Applications/applications.js:80
6262msgid "Media Player"
@@ -86,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr ""
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Sjónbond"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
201189msgstr ""
202190
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
205193msgstr ""
206194
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
209197msgstr ""
210198
211−#: Greeter/Lockscreen.qml:134
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
202+
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Snakkar..."
245237msgid "Search"
246238msgstr "Leita"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/fr.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr ""
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Vidéos"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr ""
245237msgid "Search"
246238msgstr ""
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr ""
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/gd.ponew file+260
@@ -0,0 +1,260 @@
1+# Gaelic; Scottish translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-09-30 10:34+0000\n"
12+"Last-Translator: Akerbeltz <fios@akerbeltz.org>\n"
13+"Language-Team: Gaelic; Scottish <gd@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
18+"(n > 2 && n < 20) ? 2 : 3;\n"
19+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
20+"X-Generator: Launchpad (build 16799)\n"
21+
22+#: Applications/applications.js:23
23+msgid "Phone"
24+msgstr "Fòn"
25+
26+#: Applications/applications.js:29
27+msgid "Camera"
28+msgstr "Camara"
29+
30+#: Applications/applications.js:35
31+msgid "Gallery"
32+msgstr "Gailearaidh"
33+
34+#: Applications/applications.js:40
35+msgid "Facebook"
36+msgstr "Facebook"
37+
38+#: Applications/applications.js:46
39+msgid "Browser"
40+msgstr "Brabhsair"
41+
42+#: Applications/applications.js:51
43+msgid "Twitter"
44+msgstr "Twitter"
45+
46+#: Applications/applications.js:57
47+msgid "GMail"
48+msgstr "GMail"
49+
50+#: Applications/applications.js:62
51+msgid "Weather"
52+msgstr "An aimsir"
53+
54+#: Applications/applications.js:68
55+msgid "Notepad"
56+msgstr "Pada nan nòtaichean"
57+
58+#: Applications/applications.js:74
59+msgid "Calendar"
60+msgstr "Am mìosachan"
61+
62+#: Applications/applications.js:80
63+msgid "Media Player"
64+msgstr "Cluicheadair mheadhanan"
65+
66+#: Applications/applications.js:86
67+msgid "Evernote"
68+msgstr "Evernote"
69+
70+#: Applications/applications.js:91
71+msgid "Map"
72+msgstr "Mapa"
73+
74+#: Applications/applications.js:96
75+msgid "Pinterest"
76+msgstr "Pinterest"
77+
78+#: Applications/applications.js:101
79+msgid "SoundCloud"
80+msgstr "SoundCloud"
81+
82+#: Applications/applications.js:106
83+msgid "Wikipedia"
84+msgstr "An Uicipeid"
85+
86+#: Applications/applications.js:111
87+msgid "YouTube"
88+msgstr "YouTube"
89+
90+#: Components/EdgeDemoOverlay.qml:149
91+msgid "Skip intro"
92+msgstr "Gearr leum thairis air an ro-ràdh"
93+
94+#: Components/EdgeDemo.qml:112
95+msgid "Right edge"
96+msgstr "An oir dheas"
97+
98+#: Components/EdgeDemo.qml:113
99+msgid "Try swiping from the right edge to unlock the phone"
100+msgstr ""
101+"Feuch is dèan grad-shlaighdeadh a-steach on oir dheas gus a' ghlas a thoirt "
102+"far an fhòn"
103+
104+#: Components/EdgeDemo.qml:144
105+msgid "Top edge"
106+msgstr "An oir aig a' bharr"
107+
108+#: Components/EdgeDemo.qml:145
109+msgid "Try swiping from the top edge to access the indicators"
110+msgstr ""
111+"Feuch is dèan grad-shlaighdeadh a-steach on oir aig a' bharr gus greim "
112+"fhaighinn air na taisbeanairean"
113+
114+#: Components/EdgeDemo.qml:170
115+msgid "Close"
116+msgstr "Dùin"
117+
118+#: Components/EdgeDemo.qml:171
119+msgid "Swipe up again to close the settings screen"
120+msgstr "Dèan grad-shlaighdeadh a-nìos gus sgrìn nan roghainnean a dhùnadh"
121+
122+#: Components/EdgeDemo.qml:198
123+msgid "Left edge"
124+msgstr "An oir chlì"
125+
126+#: Components/EdgeDemo.qml:199
127+msgid "Swipe from the left to reveal the launcher for quick access to apps"
128+msgstr ""
129+"Dèan grad-shlaighdeadh on oir chlì air an lòinseir a bheir dhut cothrom "
130+"luath air na h-aplacaidean"
131+
132+#: Components/EdgeDemo.qml:226
133+msgid "Well done"
134+msgstr "Gasta!"
135+
136+#: Components/EdgeDemo.qml:227
137+msgid ""
138+"You have now mastered the edge gestures and can start using the "
139+"phone<br><br>Tap anywhere to start"
140+msgstr ""
141+
142+#: Components/PageHeader.qml:341
143+msgid "Recent searches"
144+msgstr "Na lorg thu o chionn goirid"
145+
146+#. TRANSLATORS: Number of persons who rated this app
147+#. TRANSLATORS: Number of persons who rated this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
149+#, qt-format
150+msgid "(%1)"
151+msgstr "(%1)"
152+
153+#. TRANSLATORS: Number of persons who wrote reviews for this app
154+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
155+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
156+#, qt-format
157+msgid "%1 review"
158+msgid_plural "%1 reviews"
159+msgstr[0] "%1 lèirmheas"
160+msgstr[1] "%1 lèirmheas"
161+msgstr[2] "%1 lèirmheasan"
162+msgstr[3] "%1 lèirmheas"
163+
164+#: Dash/Apps/AppPreview.qml:126
165+msgid "Rate this"
166+msgstr "Rangaich seo"
167+
168+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
169+msgid "Featured"
170+msgstr "Brosnaichte"
171+
172+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
173+msgid "Recent"
174+msgstr "O chionn goirid"
175+
176+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
177+msgid "New Releases"
178+msgstr "Air ùr-sgaoileadh"
179+
180+#: Dash/DashMusic.qml:30
181+msgid "Top Charting"
182+msgstr "Gràinnean-mullaich nan cairt"
183+
184+#: Dash/DashMusic.qml:91
185+msgid "Music"
186+msgstr "Ceòl"
187+
188+#: Dash/DashVideos.qml:31
189+msgid "Popular Online"
190+msgstr "Fèill mhòr air air loidhne"
191+
192+#: Dash/DashVideos.qml:146
193+msgid "Videos"
194+msgstr "Videothan"
195+
196+#: Dash/Previews/Reviews.qml:74
197+msgid "Add a review"
198+msgstr "Cuir lèirmheas ris"
199+
200+#: Dash/Previews/Reviews.qml:86
201+msgid "Review"
202+msgstr "Lèirmheas"
203+
204+#: Dash/Previews/Reviews.qml:121
205+msgid "Send"
206+msgstr "Cuir"
207+
208+#: Dash/Previews/Reviews.qml:139
209+msgid "Comments:"
210+msgstr "Beachdan"
211+
212+#: Greeter/Lockscreen.qml:142
213+msgid "Emergency Call"
214+msgstr "Gairm èiginn"
215+
216+#: Greeter/PassphraseLockscreen.qml:59
217+#, qt-format
218+msgid "Hello %1"
219+msgstr "Shin thu, %1"
220+
221+#: Greeter/PassphraseLockscreen.qml:59
222+msgid "Hello"
223+msgstr "Shin thu"
224+
225+#: Hud/HudParametrizedActionsPage.qml:132
226+msgid "Confirm"
227+msgstr "Dearbhaich"
228+
229+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
230+msgid "Type or say a command"
231+msgstr "Sgrìobh no can àithne"
232+
233+#: Hud/Hud.qml:84
234+msgid "Loading. Please Wait..."
235+msgstr "'Ga luchdadh, fuirich ort..."
236+
237+#: Hud/Hud.qml:89
238+msgid "Speak Now..."
239+msgstr "Can rud a-nis..."
240+
241+#: Hud/Hud.qml:94
242+msgid "Speaking..."
243+msgstr "A' bruidhinn..."
244+
245+#: Panel/SearchIndicator.qml:27
246+msgid "Search"
247+msgstr "Lorg"
248+
249+#: plugins/Unity/scope.cpp:361
250+msgid "Sorry, there is nothing that matches your search."
251+msgstr "Tha sinn duilich ach chan eil dad a' freagairt ris na lorg thu."
252+
253+#: plugins/Unity/showallfilteroption.cpp:41
254+msgid "All"
255+msgstr ""
256+
257+#: Shell.qml:453
258+#, qt-format
259+msgid "Please enter %1"
260+msgstr "Cuir a-steach %1"
po/gl.po+86−88
@@ -7,178 +7,168 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 03:38+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-03 18:49+0000\n"
12+"Last-Translator: Marcos Lans <Unknown>\n"
1313"Language-Team: Galician <gl@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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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"
23−msgstr ""
23+msgstr "Teléfono"
2424
2525#: Applications/applications.js:29
2626msgid "Camera"
27−msgstr ""
27+msgstr "Cámara"
2828
2929#: Applications/applications.js:35
3030msgid "Gallery"
31−msgstr ""
31+msgstr "Galería"
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 "Navegador"
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 "GMail"
4848
4949#: Applications/applications.js:62
5050msgid "Weather"
51−msgstr ""
51+msgstr "O tempo"
5252
5353#: Applications/applications.js:68
5454msgid "Notepad"
55−msgstr ""
55+msgstr "Bloc de notas"
5656
5757#: Applications/applications.js:74
5858msgid "Calendar"
59−msgstr ""
59+msgstr "Calendario"
6060
6161#: Applications/applications.js:80
6262msgid "Media Player"
63−msgstr ""
63+msgstr "Reprodutor multimedia"
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 "Mapa"
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 "Wikipedia"
8484
8585#: Applications/applications.js:111
8686msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "Saltar introdución"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "Bordo dereito"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Probe o arrastre desde o bordo dereito para desbloquear o teléfono"
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "Bordo superior"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "Esvare desde o bordo superior para acceder aos indicadores."
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "Pechar"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "Esvare cara a arriba para pechar os axustes"
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "Bordo esquerdo"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123−msgstr ""
123+msgstr "Esvare desde a esquerda para mostrar o iniciador de acceso rápido"
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127−msgstr ""
127+msgstr "Ben feito"
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
134+"Xa domina os xestos desde os bordos e pode comezar a usar o "
135+"móbil<br><br>Toque en calquera sitio para comezar"
132136
133−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
134138msgid "Recent searches"
135139msgstr "Buscas recentes"
136140
137141#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139144#, qt-format
140145msgid "(%1)"
141−msgstr ""
146+msgstr "(%1)"
142147
143148#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145151#, qt-format
146152msgid "%1 review"
147153msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
154+msgstr[0] "%1 opinión"
155+msgstr[1] "%1 opinións"
150156
151−#: Dash/Apps/AppPreview.qml:175
157+#: Dash/Apps/AppPreview.qml:126
152158msgid "Rate this"
153−msgstr ""
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
159+msgstr "Valore isto"
170160
171161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172162msgid "Featured"
173−msgstr ""
163+msgstr "Destacado"
174164
175165#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176166msgid "Recent"
177−msgstr ""
167+msgstr "Recentes"
178168
179169#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180170msgid "New Releases"
181−msgstr ""
171+msgstr "Novas versións"
182172
183173#: Dash/DashMusic.qml:30
184174msgid "Top Charting"
@@ -190,36 +180,40 @@ msgstr "Música"
190180
191181#: Dash/DashVideos.qml:31
192182msgid "Popular Online"
193−msgstr ""
183+msgstr "Populares en liña"
194184
195185#: Dash/DashVideos.qml:146
196186msgid "Videos"
197187msgstr "Vídeos"
198188
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−msgstr ""
189+#: Dash/Previews/Reviews.qml:74
190+msgid "Add a review"
191+msgstr "Engadir unha opinión"
202192
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr ""
193+#: Dash/Previews/Reviews.qml:86
194+msgid "Review"
195+msgstr "Opinión"
206196
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr ""
197+#: Dash/Previews/Reviews.qml:121
198+msgid "Send"
199+msgstr "Enviar"
210200
211−#: Greeter/Lockscreen.qml:134
201+#: Dash/Previews/Reviews.qml:139
202+msgid "Comments:"
203+msgstr "Comentarios:"
204+
205+#: Greeter/Lockscreen.qml:142
212206msgid "Emergency Call"
213−msgstr ""
207+msgstr "Chamada de emerxencia"
214208
215209#: Greeter/PassphraseLockscreen.qml:59
216210#, qt-format
217211msgid "Hello %1"
218−msgstr ""
212+msgstr "Ola %1"
219213
220214#: Greeter/PassphraseLockscreen.qml:59
221215msgid "Hello"
222−msgstr ""
216+msgstr "Ola"
223217
224218#: Hud/HudParametrizedActionsPage.qml:132
225219msgid "Confirm"
@@ -245,11 +239,15 @@ msgstr "Falando…"
245239msgid "Search"
246240msgstr "Buscar"
247241
248−#: plugins/Unity/scope.cpp:317
242+#: plugins/Unity/scope.cpp:361
249243msgid "Sorry, there is nothing that matches your search."
250244msgstr "Sentímolo, non hai nada que coincida con esta busca."
251245
252−#: Shell.qml:429
246+#: plugins/Unity/showallfilteroption.cpp:41
247+msgid "All"
248+msgstr "Todo"
249+
250+#: Shell.qml:453
253251#, qt-format
254252msgid "Please enter %1"
255−msgstr ""
253+msgstr "Introduza %1"
po/he.po+86−90
@@ -7,182 +7,170 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 03:54+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-01 09:19+0000\n"
12+"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
1313"Language-Team: Hebrew <he@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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"
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 "דפדפן"
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 "GMail"
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 "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:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "לדלג על הפתיחה"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "שול ימני"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "נא לנסות למשוך מהשול הימני כדי לשחרר את נעילת הטלפון"
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "השול העליון"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "נא לנסות למשוך מהשול העליון כדי לגשת למחוונים"
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "סגירה"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "ניתן למשוך שוב כדי לסגור את מסך ההגדרות"
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "שול שמאלי"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123−msgstr ""
123+msgstr "יש למשוך משמאל כדי לחשוף את המשגר לצורך גישה מהירה ליישומים"
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127−msgstr ""
127+msgstr "כל הכבוד"
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "חיפושים אחרונים"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
152+msgstr[0] "סקירה %1"
153+msgstr[1] "%1 סקירות"
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153−msgstr ""
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
157+msgstr "דירוג היישום"
170158
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173−msgstr ""
161+msgstr "מומלצים"
174162
175163#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176164msgid "Recent"
177−msgstr ""
165+msgstr "אחרונים"
178166
179167#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180168msgid "New Releases"
181−msgstr ""
169+msgstr "מהדורות חדשות"
182170
183171#: Dash/DashMusic.qml:30
184172msgid "Top Charting"
185−msgstr ""
173+msgstr "בראש הטבלה"
186174
187175#: Dash/DashMusic.qml:91
188176msgid "Music"
@@ -190,36 +178,40 @@ msgstr "מוזיקה"
190178
191179#: Dash/DashVideos.qml:31
192180msgid "Popular Online"
193−msgstr ""
181+msgstr "פופולריים ברחבי הרשת"
194182
195183#: Dash/DashVideos.qml:146
196184msgid "Videos"
197185msgstr "סרטונים"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−msgstr ""
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
189+msgstr "הוספת סקירה"
202190
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr ""
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr "סקירה"
206194
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr ""
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "שליחה"
210198
211−#: Greeter/Lockscreen.qml:134
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "הערות:"
202+
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213−msgstr ""
205+msgstr "שיחת חירום"
214206
215207#: Greeter/PassphraseLockscreen.qml:59
216208#, qt-format
217209msgid "Hello %1"
218−msgstr ""
210+msgstr "שלום %1"
219211
220212#: Greeter/PassphraseLockscreen.qml:59
221213msgid "Hello"
222−msgstr ""
214+msgstr "שלום"
223215
224216#: Hud/HudParametrizedActionsPage.qml:132
225217msgid "Confirm"
@@ -239,17 +231,21 @@ msgstr "יש לדבר כעת..."
239231
240232#: Hud/Hud.qml:94
241233msgid "Speaking..."
242−msgstr "מושמע דיבור..."
234+msgstr "הדיבור מושמע…"
243235
244236#: Panel/SearchIndicator.qml:27
245237msgid "Search"
246238msgstr "חיפוש"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255−msgstr ""
251+msgstr "נא להזין %1"
po/hr.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16750)\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,88 +87,76 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
9696msgstr ""
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100100msgstr ""
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104104msgstr ""
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr ""
109109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111111msgid "Close"
112112msgstr ""
113113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115115msgid "Swipe up again to close the settings screen"
116116msgstr ""
117117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119119msgid "Left edge"
120120msgstr ""
121121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124124msgstr ""
125125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127127msgid "Well done"
128128msgstr ""
129129
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
130+#: Components/EdgeDemo.qml:227
131+msgid ""
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132134msgstr ""
133135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135137msgid "Recent searches"
136138msgstr "Nedavne pretrage"
137139
138140#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140143#, qt-format
141144msgid "(%1)"
142145msgstr ""
143146
144147#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146150#, qt-format
147151msgid "%1 review"
148152msgid_plural "%1 reviews"
149153msgstr[0] ""
150154msgstr[1] ""
151155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153157msgid "Rate this"
154158msgstr ""
155159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173161msgid "Featured"
174162msgstr ""
@@ -197,19 +185,23 @@ msgstr ""
197185msgid "Videos"
198186msgstr "Video"
199187
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
202194msgstr ""
203195
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
206198msgstr ""
207199
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
210202msgstr ""
211203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213205msgid "Emergency Call"
214206msgstr ""
215207
@@ -246,11 +238,15 @@ msgstr "Govor..."
246238msgid "Search"
247239msgstr "Pretraživanje"
248240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250242msgid "Sorry, there is nothing that matches your search."
251243msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
252244
253−#: Shell.qml:429
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
249+#: Shell.qml:453
254250#, qt-format
255251msgid "Please enter %1"
256252msgstr ""
po/hu.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Legutóbbi keresések"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Videók"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Beszéd…"
245237msgid "Search"
246238msgstr "Keresés"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Elnézést, nincs találat a keresésre."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/hy.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Վերջին որոնումներ"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Վիդեոներ"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Խոսում եմ..."
245237msgid "Search"
246238msgstr "Որոնում"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/id.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr ""
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr ""
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr ""
245237msgid "Search"
246238msgstr ""
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr ""
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/is.po+43−47
@@ -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-08-27 13:36-0400\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-09-19 05:14+0000\n"
19−"X-Generator: Launchpad (build 16765)\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,89 +86,77 @@ msgstr "Wikipedia"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr "Hoppa yfir kynningu"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr "Hægri brún"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100"Prufaðu að renna puttanum frá hægri brúninni til að aflæsa símanum þínum."
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104104msgstr "Efri brún"
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr ""
109109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111111msgid "Close"
112112msgstr "Loka"
113113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115115msgid "Swipe up again to close the settings screen"
116116msgstr ""
117117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119119msgid "Left edge"
120120msgstr "Vinstri brún"
121121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124124msgstr ""
125125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127127msgid "Well done"
128128msgstr "Vel gert"
129129
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
130+#: Components/EdgeDemo.qml:227
131+msgid ""
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132134msgstr ""
133135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135137msgid "Recent searches"
136138msgstr "Nýlegar leitir"
137139
138140#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140143#, qt-format
141144msgid "(%1)"
142145msgstr "(%1)"
143146
144147#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146150#, qt-format
147151msgid "%1 review"
148152msgid_plural "%1 reviews"
149153msgstr[0] "%1 ummæli"
150154msgstr[1] "%1 ummæli"
151155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153157msgid "Rate this"
154158msgstr "Gefa þessu einkunn"
155159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr "Gefa umsögn"
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr "Umsögn"
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr "Senda"
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr "Athugasemdir:"
171−
172160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173161msgid "Featured"
174162msgstr "Efst á baugi"
@@ -197,19 +185,23 @@ msgstr "Vinsælt á Netinu"
197185msgid "Videos"
198186msgstr "Myndbönd"
199187
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
202−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"
203195
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
206−msgstr "Meðal leikara eru:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr "Senda"
207199
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
210−msgstr "Höfundur:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr "Athugasemdir:"
211203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213205msgid "Emergency Call"
214206msgstr "Neyðarsímtal"
215207
@@ -246,11 +238,15 @@ msgstr "Tala..."
246238msgid "Search"
247239msgstr "Leita"
248240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250242msgid "Sorry, there is nothing that matches your search."
251243msgstr "Því miður, það var ekkert sem passaði við leitarorðið þitt."
252244
253−#: Shell.qml:429
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
249+#: Shell.qml:453
254250#, qt-format
255251msgid "Please enter %1"
256252msgstr ""
po/it.po+89−86
@@ -7,182 +7,177 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 05:14+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-07 09:34+0000\n"
12+"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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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"
23−msgstr ""
23+msgstr "Telefono"
2424
2525#: Applications/applications.js:29
2626msgid "Camera"
27−msgstr ""
27+msgstr "Fotocamera"
2828
2929#: Applications/applications.js:35
3030msgid "Gallery"
31−msgstr ""
31+msgstr "Galleria"
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 "GMail"
4848
4949#: Applications/applications.js:62
5050msgid "Weather"
51−msgstr ""
51+msgstr "Meteo"
5252
5353#: Applications/applications.js:68
5454msgid "Notepad"
55−msgstr ""
55+msgstr "Blocco note"
5656
5757#: Applications/applications.js:74
5858msgid "Calendar"
59−msgstr ""
59+msgstr "Calendario"
6060
6161#: Applications/applications.js:80
6262msgid "Media Player"
63−msgstr ""
63+msgstr "Riproduttore multimediale"
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 "Mappa"
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 "Wikipedia"
8484
8585#: Applications/applications.js:111
8686msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "Salta introduzione"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "Bordo destro"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Provare a far scorrere dal bordo destro per sbloccare il telefono"
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "Bordo superiore"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108+"Provare a far scorrere dal bordo in alto per accedere agli indicatori"
108109
109−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
110111msgid "Close"
111−msgstr ""
112+msgstr "Chiudi"
112113
113−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
114115msgid "Swipe up again to close the settings screen"
115116msgstr ""
117+"Far scorrere verso l'alto nuovamente per chiudere la schermata delle "
118+"impostazioni"
116119
117−#: Components/EdgeDemo.qml:189
120+#: Components/EdgeDemo.qml:198
118121msgid "Left edge"
119−msgstr ""
122+msgstr "Bordo sinistro"
120123
121−#: Components/EdgeDemo.qml:190
124+#: Components/EdgeDemo.qml:199
122125msgid "Swipe from the left to reveal the launcher for quick access to apps"
123126msgstr ""
127+"Far scorrere il bordo sinistro per mostrare il Launcher e avere un rapido "
128+"accesso alle applicazioni"
124129
125−#: Components/EdgeDemo.qml:217
130+#: Components/EdgeDemo.qml:226
126131msgid "Well done"
127−msgstr ""
132+msgstr "Ben fatto"
128133
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
134+#: Components/EdgeDemo.qml:227
135+msgid ""
136+"You have now mastered the edge gestures and can start using the "
137+"phone<br><br>Tap anywhere to start"
131138msgstr ""
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"
132141
133−#: Components/PageHeader.qml:298
142+#: Components/PageHeader.qml:341
134143msgid "Recent searches"
135144msgstr "Ricerche recenti"
136145
137146#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139149#, qt-format
140150msgid "(%1)"
141−msgstr ""
151+msgstr "(%1)"
142152
143153#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145156#, qt-format
146157msgid "%1 review"
147158msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
159+msgstr[0] "%1 recensione"
160+msgstr[1] "%1 recensioni"
150161
151−#: Dash/Apps/AppPreview.qml:175
162+#: Dash/Apps/AppPreview.qml:126
152163msgid "Rate this"
153−msgstr ""
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
164+msgstr "Valuta"
170165
171166#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172167msgid "Featured"
173−msgstr ""
168+msgstr "In evidenza"
174169
175170#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176171msgid "Recent"
177−msgstr ""
172+msgstr "Recenti"
178173
179174#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180175msgid "New Releases"
181−msgstr ""
176+msgstr "Nuovi rilasci"
182177
183178#: Dash/DashMusic.qml:30
184179msgid "Top Charting"
185−msgstr ""
180+msgstr "Più votate"
186181
187182#: Dash/DashMusic.qml:91
188183msgid "Music"
@@ -190,36 +185,40 @@ msgstr "Musica"
190185
191186#: Dash/DashVideos.qml:31
192187msgid "Popular Online"
193−msgstr ""
188+msgstr "Popolari online"
194189
195190#: Dash/DashVideos.qml:146
196191msgid "Videos"
197192msgstr "Video"
198193
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−msgstr ""
194+#: Dash/Previews/Reviews.qml:74
195+msgid "Add a review"
196+msgstr "Aggiungi una recensione"
202197
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr ""
198+#: Dash/Previews/Reviews.qml:86
199+msgid "Review"
200+msgstr "Recensisci"
206201
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr ""
202+#: Dash/Previews/Reviews.qml:121
203+msgid "Send"
204+msgstr "Invia"
210205
211−#: Greeter/Lockscreen.qml:134
206+#: Dash/Previews/Reviews.qml:139
207+msgid "Comments:"
208+msgstr "Commenti:"
209+
210+#: Greeter/Lockscreen.qml:142
212211msgid "Emergency Call"
213−msgstr ""
212+msgstr "Chiamata di emergenza"
214213
215214#: Greeter/PassphraseLockscreen.qml:59
216215#, qt-format
217216msgid "Hello %1"
218−msgstr ""
217+msgstr "Ciao %1"
219218
220219#: Greeter/PassphraseLockscreen.qml:59
221220msgid "Hello"
222−msgstr ""
221+msgstr "Ciao"
223222
224223#: Hud/HudParametrizedActionsPage.qml:132
225224msgid "Confirm"
@@ -245,11 +244,15 @@ msgstr "Sto parlando..."
245244msgid "Search"
246245msgstr "Cerca"
247246
248−#: plugins/Unity/scope.cpp:317
247+#: plugins/Unity/scope.cpp:361
249248msgid "Sorry, there is nothing that matches your search."
250249msgstr "Nessun risultato corrispondente alla ricerca."
251250
252−#: Shell.qml:429
251+#: plugins/Unity/showallfilteroption.cpp:41
252+msgid "All"
253+msgstr "Tutto"
254+
255+#: Shell.qml:453
253256#, qt-format
254257msgid "Please enter %1"
255−msgstr ""
258+msgstr "Inserire %1"
po/ja.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr ""
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr ""
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr ""
245237msgid "Search"
246238msgstr ""
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr ""
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/kn.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "ಇತ್ತೀಚಿನ ಹುಡುಕಾಟಗಳು"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "ವೀಡಿಯೋಗಳು"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "ಮಾತನಾಡುತಿದ್ದೀರಿ"
245237msgid "Search"
246238msgstr "ಹುಡುಕು"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯಾದ ಹೊಂದಾಣಿಕೆಗಳು ದೊರಕುತ್ತಿಲ್ಲ"
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/ko.po+63−67
@@ -7,167 +7,155 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "도입부 건너뛰기"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "오른쪽 끝"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135−msgstr "요즈음 찿은 것들"
137+msgstr "최근 검색"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr ""
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -243,13 +235,17 @@ msgstr ""
243235
244236#: Panel/SearchIndicator.qml:27
245237msgid "Search"
246−msgstr "찾기"
238+msgstr "검색"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr ""
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/ky.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Соңку издөөлөр"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Видеолор"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Сүйлөнүүдө..."
245237msgid "Search"
246238msgstr "Издөө"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Тилекке каршы, сиздин издөөңүзгө эч нерсе дал келген жок."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/lo.ponew file+251
@@ -0,0 +1,251 @@
1+# Lao translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-02 10:00+0000\n"
12+"Last-Translator: Anousak <anousak@gmail.com>\n"
13+"Language-Team: Lao <lo@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=1; plural=0;\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
20+
21+#: Applications/applications.js:23
22+msgid "Phone"
23+msgstr "ໂທລະສັບ"
24+
25+#: Applications/applications.js:29
26+msgid "Camera"
27+msgstr "ກ້ອງ"
28+
29+#: Applications/applications.js:35
30+msgid "Gallery"
31+msgstr "Gallery"
32+
33+#: Applications/applications.js:40
34+msgid "Facebook"
35+msgstr "Facebook"
36+
37+#: Applications/applications.js:46
38+msgid "Browser"
39+msgstr "ບາວເຊິ"
40+
41+#: Applications/applications.js:51
42+msgid "Twitter"
43+msgstr "Twitter"
44+
45+#: Applications/applications.js:57
46+msgid "GMail"
47+msgstr "GMail"
48+
49+#: Applications/applications.js:62
50+msgid "Weather"
51+msgstr "ສະພາບອາກາດ"
52+
53+#: Applications/applications.js:68
54+msgid "Notepad"
55+msgstr "Noetpad"
56+
57+#: Applications/applications.js:74
58+msgid "Calendar"
59+msgstr "ປະຕິທິນ"
60+
61+#: Applications/applications.js:80
62+msgid "Media Player"
63+msgstr ""
64+
65+#: Applications/applications.js:86
66+msgid "Evernote"
67+msgstr ""
68+
69+#: Applications/applications.js:91
70+msgid "Map"
71+msgstr "ເເຜນທີ່"
72+
73+#: Applications/applications.js:96
74+msgid "Pinterest"
75+msgstr ""
76+
77+#: Applications/applications.js:101
78+msgid "SoundCloud"
79+msgstr ""
80+
81+#: Applications/applications.js:106
82+msgid "Wikipedia"
83+msgstr ""
84+
85+#: Applications/applications.js:111
86+msgid "YouTube"
87+msgstr "ິYouTube"
88+
89+#: Components/EdgeDemoOverlay.qml:149
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:112
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:113
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:144
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:145
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:170
110+msgid "Close"
111+msgstr "ປິດ"
112+
113+#: Components/EdgeDemo.qml:171
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:198
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:199
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:226
126+msgid "Well done"
127+msgstr "ດີຫຼາຍ"
128+
129+#: Components/EdgeDemo.qml:227
130+msgid ""
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
133+msgstr ""
134+
135+#: Components/PageHeader.qml:341
136+msgid "Recent searches"
137+msgstr ""
138+
139+#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142+#, qt-format
143+msgid "(%1)"
144+msgstr "(%1)"
145+
146+#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149+#, qt-format
150+msgid "%1 review"
151+msgid_plural "%1 reviews"
152+msgstr[0] ""
153+msgstr[1] ""
154+
155+#: Dash/Apps/AppPreview.qml:126
156+msgid "Rate this"
157+msgstr ""
158+
159+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160+msgid "Featured"
161+msgstr ""
162+
163+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
164+msgid "Recent"
165+msgstr ""
166+
167+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
168+msgid "New Releases"
169+msgstr ""
170+
171+#: Dash/DashMusic.qml:30
172+msgid "Top Charting"
173+msgstr ""
174+
175+#: Dash/DashMusic.qml:91
176+msgid "Music"
177+msgstr "ດົນຕີ"
178+
179+#: Dash/DashVideos.qml:31
180+msgid "Popular Online"
181+msgstr ""
182+
183+#: Dash/DashVideos.qml:146
184+msgid "Videos"
185+msgstr "ວິດີໂອ"
186+
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr ""
194+
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "ສົ່ງ"
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "ຄໍ່ເຫັນ"
202+
203+#: Greeter/Lockscreen.qml:142
204+msgid "Emergency Call"
205+msgstr ""
206+
207+#: Greeter/PassphraseLockscreen.qml:59
208+#, qt-format
209+msgid "Hello %1"
210+msgstr "ສະບາຍດີ %1"
211+
212+#: Greeter/PassphraseLockscreen.qml:59
213+msgid "Hello"
214+msgstr "ສະບາຍດີ"
215+
216+#: Hud/HudParametrizedActionsPage.qml:132
217+msgid "Confirm"
218+msgstr "ຢືນຢັນ"
219+
220+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
221+msgid "Type or say a command"
222+msgstr ""
223+
224+#: Hud/Hud.qml:84
225+msgid "Loading. Please Wait..."
226+msgstr ""
227+
228+#: Hud/Hud.qml:89
229+msgid "Speak Now..."
230+msgstr "ເວົ້າໂລດ"
231+
232+#: Hud/Hud.qml:94
233+msgid "Speaking..."
234+msgstr "ກໍາລັງເວົ້າ"
235+
236+#: Panel/SearchIndicator.qml:27
237+msgid "Search"
238+msgstr "ຊອກຫາ"
239+
240+#: plugins/Unity/scope.cpp:361
241+msgid "Sorry, there is nothing that matches your search."
242+msgstr ""
243+
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr "ທັງໝົດ"
247+
248+#: Shell.qml:453
249+#, qt-format
250+msgid "Please enter %1"
251+msgstr "ກະລູນາປ້ອນ %1"
po/lv.po+59−63
@@ -7,60 +7,60 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 06:31+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-09-28 16:29+0000\n"
12+"Last-Translator: Jānis-Marks Gailis <jeanmarc.gailis@gmail.com>\n"
1313"Language-Team: Latvian <lv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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"
23−msgstr ""
23+msgstr "Tālrunis"
2424
2525#: Applications/applications.js:29
2626msgid "Camera"
27−msgstr ""
27+msgstr "Fotokamera"
2828
2929#: Applications/applications.js:35
3030msgid "Gallery"
31−msgstr ""
31+msgstr "Galerija"
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 "Pārlūkprogramma"
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 "GMail"
4848
4949#: Applications/applications.js:62
5050msgid "Weather"
51−msgstr ""
51+msgstr "Laikapstākļi"
5252
5353#: Applications/applications.js:68
5454msgid "Notepad"
55−msgstr ""
55+msgstr "Bloknots"
5656
5757#: Applications/applications.js:74
5858msgid "Calendar"
59−msgstr ""
59+msgstr "Kalendārs"
6060
6161#: Applications/applications.js:80
6262msgid "Media Player"
63−msgstr ""
63+msgstr "Mēdiju Atskaņotājs"
6464
6565#: Applications/applications.js:86
6666msgid "Evernote"
@@ -68,106 +68,94 @@ msgstr ""
6868
6969#: Applications/applications.js:91
7070msgid "Map"
71−msgstr ""
71+msgstr "Karte"
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 "Vikipēdija"
8484
8585#: Applications/applications.js:111
8686msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "Labā mala"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Nesen veiktās meklēšanas"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Video"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
201189msgstr ""
202190
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
205193msgstr ""
206194
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
209197msgstr ""
210198
211−#: Greeter/Lockscreen.qml:134
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
202+
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Runa..."
245237msgid "Search"
246238msgstr "Meklēt"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/my.po+71−75
@@ -7,166 +7,154 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "မိတ်ဆက်ကိုကျော်မည်"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "ညာဖက် အစွန်း"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "ထိပ် အစွန်း"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "ပိတ်"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "ဘယ်​ဖက် အစွန်း"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127−msgstr ""
127+msgstr "ကောင်းအောင်ပြုလုပ်ခဲ့သည်"
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "မကြာသေးခင်က ရှာဖွေခြင်း"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153−msgstr ""
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
157+msgstr "ဒီဟာကိုအမှတ်ပေးမည်"
170158
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
@@ -174,11 +162,11 @@ msgstr ""
174162
175163#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176164msgid "Recent"
177−msgstr ""
165+msgstr "မကြာသေးခင်က"
178166
179167#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180168msgid "New Releases"
181−msgstr ""
169+msgstr "အသစ်ထွက်ရှိသော"
182170
183171#: Dash/DashMusic.qml:30
184172msgid "Top Charting"
@@ -190,25 +178,29 @@ msgstr "တေးဂီတ"
190178
191179#: Dash/DashVideos.qml:31
192180msgid "Popular Online"
193−msgstr ""
181+msgstr "အွန်လိုင်းတွင်ပေါ်ပြူလာဖြစ်သော"
194182
195183#: Dash/DashVideos.qml:146
196184msgid "Videos"
197185msgstr "ဗီဒီယိုများ"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
201189msgstr ""
202190
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
205193msgstr ""
206194
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr ""
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr "ပို့မည်"
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr "မှတ်ချက်များ-"
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "ပြောနေသည်"
245237msgid "Search"
246238msgstr "ရှာဖွေ"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့်တူညီတာဘာမှမရှိပါ။"
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/nb.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Siste søk"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Videoer"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Snakker …"
245237msgid "Search"
246238msgstr "Søk"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Søket ga ingen treff."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/nl.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "Recente zoekopdrachten"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr "Video's"
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr "Inspreken…"
245237msgid "Search"
246238msgstr "Zoeken"
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/pl.po+43−47
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16750)\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,88 +87,76 @@ msgstr "Wikipedia"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
9696msgstr ""
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100100msgstr ""
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104104msgstr ""
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr ""
109109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111111msgid "Close"
112112msgstr ""
113113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115115msgid "Swipe up again to close the settings screen"
116116msgstr ""
117117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119119msgid "Left edge"
120120msgstr ""
121121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124124msgstr ""
125125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127127msgid "Well done"
128128msgstr ""
129129
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
130+#: Components/EdgeDemo.qml:227
131+msgid ""
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132134msgstr ""
133135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135137msgid "Recent searches"
136138msgstr "Ostatnie wyszukiwania"
137139
138140#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140143#, qt-format
141144msgid "(%1)"
142145msgstr ""
143146
144147#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146150#, qt-format
147151msgid "%1 review"
148152msgid_plural "%1 reviews"
149153msgstr[0] ""
150154msgstr[1] ""
151155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153157msgid "Rate this"
154158msgstr ""
155159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173161msgid "Featured"
174162msgstr "Polecane"
@@ -197,19 +185,23 @@ msgstr "Popularne w sieci"
197185msgid "Videos"
198186msgstr "Filmy"
199187
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
202−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 ""
203195
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
206−msgstr "Obsada:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr ""
207199
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
210−msgstr "Autor:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr ""
211203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213205msgid "Emergency Call"
214206msgstr ""
215207
@@ -246,11 +238,15 @@ msgstr "Rozpoznanie..."
246238msgid "Search"
247239msgstr "Szukaj"
248240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250242msgid "Sorry, there is nothing that matches your search."
251243msgstr "Nie znaleziono pasujących wyników."
252244
253−#: Shell.qml:429
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
249+#: Shell.qml:453
254250#, qt-format
255251msgid "Please enter %1"
256252msgstr "Wprowadź %1"
po/pt_BR.po+86−88
@@ -7,182 +7,172 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 07:39+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-01 13:05+0000\n"
12+"Last-Translator: Rafael Neri <Unknown>\n"
1313"Language-Team: Brazilian Portuguese <pt_BR@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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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"
23−msgstr ""
23+msgstr "Telefone"
2424
2525#: Applications/applications.js:29
2626msgid "Camera"
27−msgstr ""
27+msgstr "Câmera"
2828
2929#: Applications/applications.js:35
3030msgid "Gallery"
31−msgstr ""
31+msgstr "Galeria"
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 "Navegador"
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 "GMail"
4848
4949#: Applications/applications.js:62
5050msgid "Weather"
51−msgstr ""
51+msgstr "Clima"
5252
5353#: Applications/applications.js:68
5454msgid "Notepad"
55−msgstr ""
55+msgstr "Bloco de notas"
5656
5757#: Applications/applications.js:74
5858msgid "Calendar"
59−msgstr ""
59+msgstr "Calendário"
6060
6161#: Applications/applications.js:80
6262msgid "Media Player"
63−msgstr ""
63+msgstr "Media Player"
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 "Mapa"
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 "Wikipédia"
8484
8585#: Applications/applications.js:111
8686msgid "YouTube"
87−msgstr ""
87+msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "Pular introdução"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "Borda direita"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Tente deslizar da borda direita para desbloquear o telefone"
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "Borda superior"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "Tente deslizar da borda superior para acessar os indicadores"
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "Fechar"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "Deslize novamente para cima para fechar a tela de configurações"
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "Borda esquerda"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124+"Deslize da esquerda para revelar o lançador para acesso rápido aos "
125+"aplicativos"
124126
125−#: Components/EdgeDemo.qml:217
127+#: Components/EdgeDemo.qml:226
126128msgid "Well done"
127−msgstr ""
129+msgstr "Bem feito"
128130
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
131+#: Components/EdgeDemo.qml:227
132+msgid ""
133+"You have now mastered the edge gestures and can start using the "
134+"phone<br><br>Tap anywhere to start"
131135msgstr ""
132136
133−#: Components/PageHeader.qml:298
137+#: Components/PageHeader.qml:341
134138msgid "Recent searches"
135139msgstr "Pesquisas recentes"
136140
137141#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139144#, qt-format
140145msgid "(%1)"
141−msgstr ""
146+msgstr "(%1)"
142147
143148#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145151#, qt-format
146152msgid "%1 review"
147153msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
154+msgstr[0] "%1 análise"
155+msgstr[1] "%1 análises"
150156
151−#: Dash/Apps/AppPreview.qml:175
157+#: Dash/Apps/AppPreview.qml:126
152158msgid "Rate this"
153−msgstr ""
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
159+msgstr "Avaliar isto"
170160
171161#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172162msgid "Featured"
173−msgstr ""
163+msgstr "Em destaque"
174164
175165#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
176166msgid "Recent"
177−msgstr ""
167+msgstr "Recente"
178168
179169#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180170msgid "New Releases"
181−msgstr ""
171+msgstr "Lançamentos"
182172
183173#: Dash/DashMusic.qml:30
184174msgid "Top Charting"
185−msgstr ""
175+msgstr "Top gráficos"
186176
187177#: Dash/DashMusic.qml:91
188178msgid "Music"
@@ -190,36 +180,40 @@ msgstr "Músicas"
190180
191181#: Dash/DashVideos.qml:31
192182msgid "Popular Online"
193−msgstr ""
183+msgstr "Popular Online"
194184
195185#: Dash/DashVideos.qml:146
196186msgid "Videos"
197187msgstr "Vídeos"
198188
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−msgstr ""
189+#: Dash/Previews/Reviews.qml:74
190+msgid "Add a review"
191+msgstr "Adicionar uma análise"
202192
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr ""
193+#: Dash/Previews/Reviews.qml:86
194+msgid "Review"
195+msgstr "Revisão"
206196
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr ""
197+#: Dash/Previews/Reviews.qml:121
198+msgid "Send"
199+msgstr "Enviar"
210200
211−#: Greeter/Lockscreen.qml:134
201+#: Dash/Previews/Reviews.qml:139
202+msgid "Comments:"
203+msgstr "Comentários:"
204+
205+#: Greeter/Lockscreen.qml:142
212206msgid "Emergency Call"
213−msgstr ""
207+msgstr "Chamada de emergência"
214208
215209#: Greeter/PassphraseLockscreen.qml:59
216210#, qt-format
217211msgid "Hello %1"
218−msgstr ""
212+msgstr "Olá %1"
219213
220214#: Greeter/PassphraseLockscreen.qml:59
221215msgid "Hello"
222−msgstr ""
216+msgstr "Olá"
223217
224218#: Hud/HudParametrizedActionsPage.qml:132
225219msgid "Confirm"
@@ -245,11 +239,15 @@ msgstr "Falando..."
245239msgid "Search"
246240msgstr "Pesquisar"
247241
248−#: plugins/Unity/scope.cpp:317
242+#: plugins/Unity/scope.cpp:361
249243msgid "Sorry, there is nothing that matches your search."
250244msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
251245
252−#: Shell.qml:429
246+#: plugins/Unity/showallfilteroption.cpp:41
247+msgid "All"
248+msgstr ""
249+
250+#: Shell.qml:453
253251#, qt-format
254252msgid "Please enter %1"
255−msgstr ""
253+msgstr "Por favor, digite %1"
po/ro.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16750)\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,88 +87,76 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
9696msgstr ""
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100100msgstr ""
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104104msgstr ""
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr ""
109109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111111msgid "Close"
112112msgstr ""
113113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115115msgid "Swipe up again to close the settings screen"
116116msgstr ""
117117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119119msgid "Left edge"
120120msgstr ""
121121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124124msgstr ""
125125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127127msgid "Well done"
128128msgstr ""
129129
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
130+#: Components/EdgeDemo.qml:227
131+msgid ""
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132134msgstr ""
133135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135137msgid "Recent searches"
136138msgstr "Căutări recente"
137139
138140#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140143#, qt-format
141144msgid "(%1)"
142145msgstr ""
143146
144147#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146150#, qt-format
147151msgid "%1 review"
148152msgid_plural "%1 reviews"
149153msgstr[0] ""
150154msgstr[1] ""
151155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153157msgid "Rate this"
154158msgstr ""
155159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173161msgid "Featured"
174162msgstr ""
@@ -197,19 +185,23 @@ msgstr ""
197185msgid "Videos"
198186msgstr "Video"
199187
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
202194msgstr ""
203195
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
206198msgstr ""
207199
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
210202msgstr ""
211203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213205msgid "Emergency Call"
214206msgstr ""
215207
@@ -246,12 +238,16 @@ msgstr "Vorbire..."
246238msgid "Search"
247239msgstr "Căutare"
248240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250242msgid "Sorry, there is nothing that matches your search."
251243msgstr ""
252244"Ne pare rău, nu este nimic care se potrivește căutării dumneavoastră."
253245
254−#: Shell.qml:429
246+#: plugins/Unity/showallfilteroption.cpp:41
247+msgid "All"
248+msgstr ""
249+
250+#: Shell.qml:453
255251#, qt-format
256252msgid "Please enter %1"
257253msgstr ""
po/ru.po+68−68
@@ -7,17 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-28 06:40+0000\n"
12−"Last-Translator: Eugene Marshal <Unknown>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-01 05:55+0000\n"
12+"Last-Translator: Zonov Roman <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16750)\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"
@@ -69,7 +69,7 @@ msgstr "Evernote"
6969
7070#: Applications/applications.js:91
7171msgid "Map"
72−msgstr "Карта"
72+msgstr "Карты"
7373
7474#: Applications/applications.js:96
7575msgid "Pinterest"
@@ -87,91 +87,83 @@ msgstr "Википедия"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
92−msgstr ""
92+msgstr "Пропустить обучение"
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
96−msgstr ""
96+msgstr "Правый край"
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100100msgstr ""
101+"Попробуйте переместить палец от правого края к левому для разблокировки "
102+"устройства"
101103
102−#: Components/EdgeDemo.qml:135
104+#: Components/EdgeDemo.qml:144
103105msgid "Top edge"
104−msgstr ""
106+msgstr "Верхний край"
105107
106−#: Components/EdgeDemo.qml:136
108+#: Components/EdgeDemo.qml:145
107109msgid "Try swiping from the top edge to access the indicators"
108110msgstr ""
111+"Попробуйте переместить палец от верхнего края вниз для доступа к индикаторам"
109112
110−#: Components/EdgeDemo.qml:161
113+#: Components/EdgeDemo.qml:170
111114msgid "Close"
112−msgstr ""
115+msgstr "Закрыть"
113116
114−#: Components/EdgeDemo.qml:162
117+#: Components/EdgeDemo.qml:171
115118msgid "Swipe up again to close the settings screen"
116−msgstr ""
119+msgstr "Снова переместите палец вверх для закрытия экрана настроек"
117120
118−#: Components/EdgeDemo.qml:189
121+#: Components/EdgeDemo.qml:198
119122msgid "Left edge"
120−msgstr ""
123+msgstr "Левый край"
121124
122−#: Components/EdgeDemo.qml:190
125+#: Components/EdgeDemo.qml:199
123126msgid "Swipe from the left to reveal the launcher for quick access to apps"
124127msgstr ""
128+"Переместите палец от левого края вправо для открытия лаунчера для быстрого "
129+"доступа к приложениям"
125130
126−#: Components/EdgeDemo.qml:217
131+#: Components/EdgeDemo.qml:226
127132msgid "Well done"
128−msgstr ""
133+msgstr "Великолепно"
129134
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
135+#: Components/EdgeDemo.qml:227
136+msgid ""
137+"You have now mastered the edge gestures and can start using the "
138+"phone<br><br>Tap anywhere to start"
132139msgstr ""
133140
134−#: Components/PageHeader.qml:298
141+#: Components/PageHeader.qml:341
135142msgid "Recent searches"
136143msgstr "Последние поисковые запросы"
137144
138145#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140148#, qt-format
141149msgid "(%1)"
142−msgstr ""
150+msgstr "(%1)"
143151
144152#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146155#, qt-format
147156msgid "%1 review"
148157msgid_plural "%1 reviews"
149−msgstr[0] ""
150−msgstr[1] ""
158+msgstr[0] "%1 отзыв"
151159
152−#: Dash/Apps/AppPreview.qml:175
160+#: Dash/Apps/AppPreview.qml:126
153161msgid "Rate this"
154−msgstr ""
155−
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
162+msgstr "Оцените это"
171163
172164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173165msgid "Featured"
174−msgstr ""
166+msgstr "Рекомендованное"
175167
176168#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
177169msgid "Recent"
@@ -183,7 +175,7 @@ msgstr "Новые релизы"
183175
184176#: Dash/DashMusic.qml:30
185177msgid "Top Charting"
186−msgstr ""
178+msgstr "Наиболее популярное"
187179
188180#: Dash/DashMusic.qml:91
189181msgid "Music"
@@ -191,40 +183,44 @@ msgstr "Музыка"
191183
192184#: Dash/DashVideos.qml:31
193185msgid "Popular Online"
194−msgstr ""
186+msgstr "Популярное в Интернете"
195187
196188#: Dash/DashVideos.qml:146
197189msgid "Videos"
198190msgstr "Видео"
199191
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
202−msgstr "Режиссёр"
192+#: Dash/Previews/Reviews.qml:74
193+msgid "Add a review"
194+msgstr "Добавьте отзыв"
203195
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
206−msgstr "В главных ролях"
196+#: Dash/Previews/Reviews.qml:86
197+msgid "Review"
198+msgstr "Отзыв"
207199
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
210−msgstr "Автор:"
200+#: Dash/Previews/Reviews.qml:121
201+msgid "Send"
202+msgstr "Отправить"
203+
204+#: Dash/Previews/Reviews.qml:139
205+msgid "Comments:"
206+msgstr "Комментарии:"
211207
212−#: Greeter/Lockscreen.qml:134
208+#: Greeter/Lockscreen.qml:142
213209msgid "Emergency Call"
214−msgstr ""
210+msgstr "Экстренный вызов"
215211
216212#: Greeter/PassphraseLockscreen.qml:59
217213#, qt-format
218214msgid "Hello %1"
219−msgstr ""
215+msgstr "Привет, %1"
220216
221217#: Greeter/PassphraseLockscreen.qml:59
222218msgid "Hello"
223−msgstr ""
219+msgstr "Привет"
224220
225221#: Hud/HudParametrizedActionsPage.qml:132
226222msgid "Confirm"
227−msgstr "Подвердить"
223+msgstr "Подтвердить"
228224
229225#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
230226msgid "Type or say a command"
@@ -246,11 +242,15 @@ msgstr "Говорите..."
246242msgid "Search"
247243msgstr "Поиск"
248244
249−#: plugins/Unity/scope.cpp:317
245+#: plugins/Unity/scope.cpp:361
250246msgid "Sorry, there is nothing that matches your search."
251247msgstr "Извините, поиск не дал результатов."
252248
253−#: Shell.qml:429
249+#: plugins/Unity/showallfilteroption.cpp:41
250+msgid "All"
251+msgstr ""
252+
253+#: Shell.qml:453
254254#, qt-format
255255msgid "Please enter %1"
256256msgstr "Пожалуйста, введите %1"
po/shn.ponew file+251
@@ -0,0 +1,251 @@
1+# Shan translation for unity8
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity8 package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity8\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-07 11:46+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13+"Language-Team: Shan <shn@li.org>\n"
14+"MIME-Version: 1.0\n"
15+"Content-Type: text/plain; charset=UTF-8\n"
16+"Content-Transfer-Encoding: 8bit\n"
17+"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18+"X-Launchpad-Export-Date: 2013-10-08 07:01+0000\n"
19+"X-Generator: Launchpad (build 16799)\n"
20+
21+#: Applications/applications.js:23
22+msgid "Phone"
23+msgstr ""
24+
25+#: Applications/applications.js:29
26+msgid "Camera"
27+msgstr ""
28+
29+#: Applications/applications.js:35
30+msgid "Gallery"
31+msgstr ""
32+
33+#: Applications/applications.js:40
34+msgid "Facebook"
35+msgstr ""
36+
37+#: Applications/applications.js:46
38+msgid "Browser"
39+msgstr ""
40+
41+#: Applications/applications.js:51
42+msgid "Twitter"
43+msgstr ""
44+
45+#: Applications/applications.js:57
46+msgid "GMail"
47+msgstr ""
48+
49+#: Applications/applications.js:62
50+msgid "Weather"
51+msgstr ""
52+
53+#: Applications/applications.js:68
54+msgid "Notepad"
55+msgstr ""
56+
57+#: Applications/applications.js:74
58+msgid "Calendar"
59+msgstr ""
60+
61+#: Applications/applications.js:80
62+msgid "Media Player"
63+msgstr ""
64+
65+#: Applications/applications.js:86
66+msgid "Evernote"
67+msgstr ""
68+
69+#: Applications/applications.js:91
70+msgid "Map"
71+msgstr ""
72+
73+#: Applications/applications.js:96
74+msgid "Pinterest"
75+msgstr ""
76+
77+#: Applications/applications.js:101
78+msgid "SoundCloud"
79+msgstr ""
80+
81+#: Applications/applications.js:106
82+msgid "Wikipedia"
83+msgstr ""
84+
85+#: Applications/applications.js:111
86+msgid "YouTube"
87+msgstr ""
88+
89+#: Components/EdgeDemoOverlay.qml:149
90+msgid "Skip intro"
91+msgstr ""
92+
93+#: Components/EdgeDemo.qml:112
94+msgid "Right edge"
95+msgstr ""
96+
97+#: Components/EdgeDemo.qml:113
98+msgid "Try swiping from the right edge to unlock the phone"
99+msgstr ""
100+
101+#: Components/EdgeDemo.qml:144
102+msgid "Top edge"
103+msgstr ""
104+
105+#: Components/EdgeDemo.qml:145
106+msgid "Try swiping from the top edge to access the indicators"
107+msgstr ""
108+
109+#: Components/EdgeDemo.qml:170
110+msgid "Close"
111+msgstr ""
112+
113+#: Components/EdgeDemo.qml:171
114+msgid "Swipe up again to close the settings screen"
115+msgstr ""
116+
117+#: Components/EdgeDemo.qml:198
118+msgid "Left edge"
119+msgstr ""
120+
121+#: Components/EdgeDemo.qml:199
122+msgid "Swipe from the left to reveal the launcher for quick access to apps"
123+msgstr ""
124+
125+#: Components/EdgeDemo.qml:226
126+msgid "Well done"
127+msgstr ""
128+
129+#: Components/EdgeDemo.qml:227
130+msgid ""
131+"You have now mastered the edge gestures and can start using the "
132+"phone<br><br>Tap anywhere to start"
133+msgstr ""
134+
135+#: Components/PageHeader.qml:341
136+msgid "Recent searches"
137+msgstr ""
138+
139+#. TRANSLATORS: Number of persons who rated this app
140+#. TRANSLATORS: Number of persons who rated this app/video/whatever
141+#: Dash/Apps/AppInfo.qml:73 Dash/Previews/Header.qml:93
142+#, qt-format
143+msgid "(%1)"
144+msgstr ""
145+
146+#. TRANSLATORS: Number of persons who wrote reviews for this app
147+#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
148+#: Dash/Apps/AppInfo.qml:85 Dash/Previews/Header.qml:105
149+#, qt-format
150+msgid "%1 review"
151+msgid_plural "%1 reviews"
152+msgstr[0] ""
153+msgstr[1] ""
154+
155+#: Dash/Apps/AppPreview.qml:126
156+msgid "Rate this"
157+msgstr ""
158+
159+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
160+msgid "Featured"
161+msgstr ""
162+
163+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
164+msgid "Recent"
165+msgstr ""
166+
167+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
168+msgid "New Releases"
169+msgstr ""
170+
171+#: Dash/DashMusic.qml:30
172+msgid "Top Charting"
173+msgstr ""
174+
175+#: Dash/DashMusic.qml:91
176+msgid "Music"
177+msgstr ""
178+
179+#: Dash/DashVideos.qml:31
180+msgid "Popular Online"
181+msgstr ""
182+
183+#: Dash/DashVideos.qml:146
184+msgid "Videos"
185+msgstr ""
186+
187+#: Dash/Previews/Reviews.qml:74
188+msgid "Add a review"
189+msgstr ""
190+
191+#: Dash/Previews/Reviews.qml:86
192+msgid "Review"
193+msgstr ""
194+
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
197+msgstr ""
198+
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
201+msgstr ""
202+
203+#: Greeter/Lockscreen.qml:142
204+msgid "Emergency Call"
205+msgstr ""
206+
207+#: Greeter/PassphraseLockscreen.qml:59
208+#, qt-format
209+msgid "Hello %1"
210+msgstr ""
211+
212+#: Greeter/PassphraseLockscreen.qml:59
213+msgid "Hello"
214+msgstr ""
215+
216+#: Hud/HudParametrizedActionsPage.qml:132
217+msgid "Confirm"
218+msgstr ""
219+
220+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
221+msgid "Type or say a command"
222+msgstr ""
223+
224+#: Hud/Hud.qml:84
225+msgid "Loading. Please Wait..."
226+msgstr ""
227+
228+#: Hud/Hud.qml:89
229+msgid "Speak Now..."
230+msgstr ""
231+
232+#: Hud/Hud.qml:94
233+msgid "Speaking..."
234+msgstr ""
235+
236+#: Panel/SearchIndicator.qml:27
237+msgid "Search"
238+msgstr ""
239+
240+#: plugins/Unity/scope.cpp:361
241+msgid "Sorry, there is nothing that matches your search."
242+msgstr ""
243+
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
249+#, qt-format
250+msgid "Please enter %1"
251+msgstr ""
po/si.po+40−44
@@ -7,7 +7,7 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr ""
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr ""
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr ""
245237msgid "Search"
246238msgstr ""
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr ""
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/sl.po+46−49
@@ -7,8 +7,8 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-09-19 19:48+0000\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"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"
1414"MIME-Version: 1.0\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-09-20 06:21+0000\n"
20−"X-Generator: Launchpad (build 16765)\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,65 +87,70 @@ msgstr "Wikipedija"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr "Preskoči uvod"
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
9696msgstr "Desni rob"
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100100msgstr "Poskusite povleči od desnega roba za odklep telefona"
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104104msgstr "Zgornji rob"
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr "Poskusite povleči od zgornjega roba za dostop do kazalnikov"
109109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111111msgid "Close"
112112msgstr "Zapri"
113113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115115msgid "Swipe up again to close the settings screen"
116116msgstr "Povlecite ponovno navzgor za zaprtje zaslona z nastavitvami"
117117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119119msgid "Left edge"
120120msgstr "Levi rob"
121121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124124msgstr ""
125125"Poskusite povleči od leve za razkritje zaganjalnika za hiter dostop do "
126126"programov"
127127
128−#: Components/EdgeDemo.qml:217
128+#: Components/EdgeDemo.qml:226
129129msgid "Well done"
130130msgstr "Odlično"
131131
132−#: Components/EdgeDemo.qml:218
133−msgid "You have now mastered the edge gestures and can start using the phone"
132+#: Components/EdgeDemo.qml:227
133+msgid ""
134+"You have now mastered the edge gestures and can start using the "
135+"phone<br><br>Tap anywhere to start"
134136msgstr ""
135−"Zdaj, ko ste osvojili kretnje z robovi, lahko začnete uporabljati telefon"
137+"Sedaj ste osvojili poteze robov ter lahko začnete uporabljati "
138+"telefon<br><br>Tapnite kjerkoli na začetek"
136139
137−#: Components/PageHeader.qml:298
140+#: Components/PageHeader.qml:341
138141msgid "Recent searches"
139142msgstr "Nedavna iskanja"
140143
141144#. TRANSLATORS: Number of persons who rated this app
142−#: 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
143147#, qt-format
144148msgid "(%1)"
145149msgstr "(%1)"
146150
147151#. TRANSLATORS: Number of persons who wrote reviews for this app
148−#: 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
149154#, qt-format
150155msgid "%1 review"
151156msgid_plural "%1 reviews"
@@ -154,26 +159,10 @@ msgstr[1] "%1 ocena"
154159msgstr[2] "%1 oceni"
155160msgstr[3] "%1 ocene"
156161
157−#: Dash/Apps/AppPreview.qml:175
162+#: Dash/Apps/AppPreview.qml:126
158163msgid "Rate this"
159164msgstr "Ocenite"
160165
161−#: Dash/Apps/AppReviews.qml:72
162−msgid "Add a review"
163−msgstr "Dodaj oceno"
164−
165−#: Dash/Apps/AppReviews.qml:84
166−msgid "Review"
167−msgstr "Ocena"
168−
169−#: Dash/Apps/AppReviews.qml:118
170−msgid "Send"
171−msgstr "Pošlji"
172−
173−#: Dash/Apps/AppReviews.qml:136
174−msgid "Comments:"
175−msgstr "Opombe:"
176−
177166#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
178167msgid "Featured"
179168msgstr "Predstavljeno"
@@ -202,19 +191,23 @@ msgstr "Priljubljeno na spletu"
202191msgid "Videos"
203192msgstr "Videi"
204193
205−#: Dash/Video/VideoPreview.qml:130
206−msgid "Directed by:"
207−msgstr ""
194+#: Dash/Previews/Reviews.qml:74
195+msgid "Add a review"
196+msgstr "Dodaj oceno"
208197
209−#: Dash/Video/VideoPreview.qml:153
210−msgid "Starring:"
211−msgstr ""
198+#: Dash/Previews/Reviews.qml:86
199+msgid "Review"
200+msgstr "Ocena"
212201
213−#: Dash/Video/VideoPreview.qml:176
214−msgid "Author:"
215−msgstr ""
202+#: Dash/Previews/Reviews.qml:121
203+msgid "Send"
204+msgstr "Pošlji"
205+
206+#: Dash/Previews/Reviews.qml:139
207+msgid "Comments:"
208+msgstr "Opombe:"
216209
217−#: Greeter/Lockscreen.qml:134
210+#: Greeter/Lockscreen.qml:142
218211msgid "Emergency Call"
219212msgstr "Klic v sili"
220213
@@ -251,11 +244,15 @@ msgstr "Govorjenje ..."
251244msgid "Search"
252245msgstr "Iskanje"
253246
254−#: plugins/Unity/scope.cpp:317
247+#: plugins/Unity/scope.cpp:361
255248msgid "Sorry, there is nothing that matches your search."
256249msgstr "Nič se ne ujema z vašim iskalnim nizom."
257250
258−#: Shell.qml:429
251+#: plugins/Unity/showallfilteroption.cpp:41
252+msgid "All"
253+msgstr "Vse"
254+
255+#: Shell.qml:453
259256#, qt-format
260257msgid "Please enter %1"
261258msgstr "Vnesite %1"
po/sr.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16750)\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,88 +87,76 @@ msgstr ""
8787msgid "YouTube"
8888msgstr ""
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
9292msgstr ""
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
9696msgstr ""
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100100msgstr ""
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104104msgstr ""
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr ""
109109
110−#: Components/EdgeDemo.qml:161
110+#: Components/EdgeDemo.qml:170
111111msgid "Close"
112112msgstr ""
113113
114−#: Components/EdgeDemo.qml:162
114+#: Components/EdgeDemo.qml:171
115115msgid "Swipe up again to close the settings screen"
116116msgstr ""
117117
118−#: Components/EdgeDemo.qml:189
118+#: Components/EdgeDemo.qml:198
119119msgid "Left edge"
120120msgstr ""
121121
122−#: Components/EdgeDemo.qml:190
122+#: Components/EdgeDemo.qml:199
123123msgid "Swipe from the left to reveal the launcher for quick access to apps"
124124msgstr ""
125125
126−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
127127msgid "Well done"
128128msgstr ""
129129
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
130+#: Components/EdgeDemo.qml:227
131+msgid ""
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
132134msgstr ""
133135
134−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
135137msgid "Recent searches"
136138msgstr "Скорашње претраге"
137139
138140#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140143#, qt-format
141144msgid "(%1)"
142145msgstr ""
143146
144147#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146150#, qt-format
147151msgid "%1 review"
148152msgid_plural "%1 reviews"
149153msgstr[0] ""
150154msgstr[1] ""
151155
152−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
153157msgid "Rate this"
154158msgstr ""
155159
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
171−
172160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173161msgid "Featured"
174162msgstr ""
@@ -197,19 +185,23 @@ msgstr ""
197185msgid "Videos"
198186msgstr "Видео"
199187
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
188+#: Dash/Previews/Reviews.qml:74
189+msgid "Add a review"
190+msgstr ""
191+
192+#: Dash/Previews/Reviews.qml:86
193+msgid "Review"
202194msgstr ""
203195
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
206198msgstr ""
207199
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
210202msgstr ""
211203
212−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
213205msgid "Emergency Call"
214206msgstr ""
215207
@@ -246,11 +238,15 @@ msgstr "Говор..."
246238msgid "Search"
247239msgstr "Претрага"
248240
249−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
250242msgid "Sorry, there is nothing that matches your search."
251243msgstr "Нажалост, претрага није наишла на икакво подударање."
252244
253−#: Shell.qml:429
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
249+#: Shell.qml:453
254250#, qt-format
255251msgid "Please enter %1"
256252msgstr ""
po/sv.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr ""
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr ""
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr ""
245237msgid "Search"
246238msgstr ""
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr ""
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/te.po+40−44
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,76 @@ msgstr ""
8686msgid "YouTube"
8787msgstr ""
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
9595msgstr ""
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103103msgstr ""
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111111msgstr ""
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119119msgstr ""
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr ""
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141144msgstr ""
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148152msgstr[0] ""
149153msgstr[1] ""
150154
151−#: Dash/Apps/AppPreview.qml:175
155+#: Dash/Apps/AppPreview.qml:126
152156msgid "Rate this"
153157msgstr ""
154158
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171159#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172160msgid "Featured"
173161msgstr ""
@@ -196,19 +184,23 @@ msgstr ""
196184msgid "Videos"
197185msgstr ""
198186
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "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"
201193msgstr ""
202194
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
195+#: Dash/Previews/Reviews.qml:121
196+msgid "Send"
205197msgstr ""
206198
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
199+#: Dash/Previews/Reviews.qml:139
200+msgid "Comments:"
209201msgstr ""
210202
211−#: Greeter/Lockscreen.qml:134
203+#: Greeter/Lockscreen.qml:142
212204msgid "Emergency Call"
213205msgstr ""
214206
@@ -245,11 +237,15 @@ msgstr ""
245237msgid "Search"
246238msgstr ""
247239
248−#: plugins/Unity/scope.cpp:317
240+#: plugins/Unity/scope.cpp:361
249241msgid "Sorry, there is nothing that matches your search."
250242msgstr ""
251243
252−#: Shell.qml:429
244+#: plugins/Unity/showallfilteroption.cpp:41
245+msgid "All"
246+msgstr ""
247+
248+#: Shell.qml:453
253249#, qt-format
254250msgid "Please enter %1"
255251msgstr ""
po/tr.po+67−70
@@ -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-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-06-27 10:08+0000\n"
12−"Last-Translator: Adar Cem EREN <adarcemeren34@gmail.com>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-10-01 13:21+0000\n"
12+"Last-Translator: Volkan Gezer <Unknown>\n"
1313"Language-Team: Turkish <tr@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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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"
@@ -64,7 +64,7 @@ msgstr "Ortam Oynatıcı"
6464
6565#: Applications/applications.js:86
6666msgid "Evernote"
67−msgstr ""
67+msgstr "Evernote"
6868
6969#: Applications/applications.js:91
7070msgid "Map"
@@ -72,11 +72,11 @@ msgstr "Harita"
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"
@@ -86,87 +86,76 @@ msgstr "Vikipedi"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
91−msgstr ""
91+msgstr "İntro'yu geç"
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "Sağ kenar"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
99−msgstr ""
99+msgstr "Kilidi açmak için sağ kenara sürüklemeyi deneyin"
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "Üst kenar"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107−msgstr ""
107+msgstr "Bildiricilere erişmek için üst kenarı sürüklemeyi deneyin"
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "Kapat"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115−msgstr ""
115+msgstr "Ayarlar ekranını kapatmak için tekrar yukarı kaydırın"
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "Sol kenar"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124+"Uygulamalara hızlı erişim çalıştırıcısını açmak için sol kenarı sürükleyin"
124125
125−#: Components/EdgeDemo.qml:217
126+#: Components/EdgeDemo.qml:226
126127msgid "Well done"
127−msgstr ""
128+msgstr "Tebrikler"
128129
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
130+#: Components/EdgeDemo.qml:227
131+msgid ""
132+"You have now mastered the edge gestures and can start using the "
133+"phone<br><br>Tap anywhere to start"
131134msgstr ""
132135
133−#: Components/PageHeader.qml:298
136+#: Components/PageHeader.qml:341
134137msgid "Recent searches"
135138msgstr "Son Arananlar"
136139
137140#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139143#, qt-format
140144msgid "(%1)"
141−msgstr ""
145+msgstr "(%1)"
142146
143147#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145150#, qt-format
146151msgid "%1 review"
147152msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
153+msgstr[0] "%1 inceleme"
154+msgstr[1] "%1 inceleme"
150155
151−#: Dash/Apps/AppPreview.qml:175
156+#: Dash/Apps/AppPreview.qml:126
152157msgid "Rate this"
153−msgstr ""
154−
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
158+msgstr "Oyla"
170159
171160#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172161msgid "Featured"
@@ -178,11 +167,11 @@ msgstr "En Son"
178167
179168#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
180169msgid "New Releases"
181−msgstr ""
170+msgstr "Yeni Sürümler"
182171
183172#: Dash/DashMusic.qml:30
184173msgid "Top Charting"
185−msgstr ""
174+msgstr "En Çok Beğenilenler"
186175
187176#: Dash/DashMusic.qml:91
188177msgid "Music"
@@ -196,26 +185,30 @@ msgstr "Genellikle Çevrimiçi"
196185msgid "Videos"
197186msgstr "Videolar"
198187
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
201−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"
202195
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
205−msgstr ""
196+#: Dash/Previews/Reviews.qml:121
197+msgid "Send"
198+msgstr "Gönder"
206199
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr "Yazar:"
200+#: Dash/Previews/Reviews.qml:139
201+msgid "Comments:"
202+msgstr "Yorumlar:"
210203
211−#: Greeter/Lockscreen.qml:134
204+#: Greeter/Lockscreen.qml:142
212205msgid "Emergency Call"
213−msgstr ""
206+msgstr "Acil Arama"
214207
215208#: Greeter/PassphraseLockscreen.qml:59
216209#, qt-format
217210msgid "Hello %1"
218−msgstr ""
211+msgstr "Merhaba %1"
219212
220213#: Greeter/PassphraseLockscreen.qml:59
221214msgid "Hello"
@@ -245,11 +238,15 @@ msgstr "Konuşuyor..."
245238msgid "Search"
246239msgstr "Ara"
247240
248−#: plugins/Unity/scope.cpp:317
241+#: plugins/Unity/scope.cpp:361
249242msgid "Sorry, there is nothing that matches your search."
250243msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
251244
252−#: Shell.qml:429
245+#: plugins/Unity/showallfilteroption.cpp:41
246+msgid "All"
247+msgstr ""
248+
249+#: Shell.qml:453
253250#, qt-format
254251msgid "Please enter %1"
255−msgstr ""
252+msgstr "Lütfen %1 girin"
po/ug.po+51−56
@@ -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-08-27 13:36-0400\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-08-30 05:37+0000\n"
19−"X-Generator: Launchpad (build 16750)\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,88 +86,75 @@ msgstr "ۋىكىپېدىيە"
8686msgid "YouTube"
8787msgstr "YouTube"
8888
89−#: Components/EdgeDemoOverlay.qml:145
89+#: Components/EdgeDemoOverlay.qml:149
9090msgid "Skip intro"
9191msgstr ""
9292
93−#: Components/EdgeDemo.qml:98
93+#: Components/EdgeDemo.qml:112
9494msgid "Right edge"
95−msgstr ""
95+msgstr "ئوڭ گىرۋەك"
9696
97−#: Components/EdgeDemo.qml:99
97+#: Components/EdgeDemo.qml:113
9898msgid "Try swiping from the right edge to unlock the phone"
9999msgstr ""
100100
101−#: Components/EdgeDemo.qml:135
101+#: Components/EdgeDemo.qml:144
102102msgid "Top edge"
103−msgstr ""
103+msgstr "ئۈستى گىرۋەك"
104104
105−#: Components/EdgeDemo.qml:136
105+#: Components/EdgeDemo.qml:145
106106msgid "Try swiping from the top edge to access the indicators"
107107msgstr ""
108108
109−#: Components/EdgeDemo.qml:161
109+#: Components/EdgeDemo.qml:170
110110msgid "Close"
111−msgstr ""
111+msgstr "ياپ"
112112
113−#: Components/EdgeDemo.qml:162
113+#: Components/EdgeDemo.qml:171
114114msgid "Swipe up again to close the settings screen"
115115msgstr ""
116116
117−#: Components/EdgeDemo.qml:189
117+#: Components/EdgeDemo.qml:198
118118msgid "Left edge"
119−msgstr ""
119+msgstr "سول گىرۋەك"
120120
121−#: Components/EdgeDemo.qml:190
121+#: Components/EdgeDemo.qml:199
122122msgid "Swipe from the left to reveal the launcher for quick access to apps"
123123msgstr ""
124124
125−#: Components/EdgeDemo.qml:217
125+#: Components/EdgeDemo.qml:226
126126msgid "Well done"
127127msgstr ""
128128
129−#: Components/EdgeDemo.qml:218
130−msgid "You have now mastered the edge gestures and can start using the phone"
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"
131133msgstr ""
132134
133−#: Components/PageHeader.qml:298
135+#: Components/PageHeader.qml:341
134136msgid "Recent searches"
135137msgstr "يېقىنقى ئىزدەشلەر"
136138
137139#. TRANSLATORS: Number of persons who rated this app
138−#: 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
139142#, qt-format
140143msgid "(%1)"
141−msgstr ""
144+msgstr "(%1)"
142145
143146#. TRANSLATORS: Number of persons who wrote reviews for this app
144−#: 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
145149#, qt-format
146150msgid "%1 review"
147151msgid_plural "%1 reviews"
148−msgstr[0] ""
149−msgstr[1] ""
152+msgstr[0] "%1 باھا"
150153
151−#: Dash/Apps/AppPreview.qml:175
154+#: Dash/Apps/AppPreview.qml:126
152155msgid "Rate this"
153156msgstr ""
154157
155−#: Dash/Apps/AppReviews.qml:72
156−msgid "Add a review"
157−msgstr ""
158−
159−#: Dash/Apps/AppReviews.qml:84
160−msgid "Review"
161−msgstr ""
162−
163−#: Dash/Apps/AppReviews.qml:118
164−msgid "Send"
165−msgstr ""
166−
167−#: Dash/Apps/AppReviews.qml:136
168−msgid "Comments:"
169−msgstr ""
170−
171158#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
172159msgid "Featured"
173160msgstr "داڭلىق"
@@ -196,26 +183,30 @@ msgstr ""
196183msgid "Videos"
197184msgstr "سىنلار"
198185
199−#: Dash/Video/VideoPreview.qml:130
200−msgid "Directed by:"
186+#: Dash/Previews/Reviews.qml:74
187+msgid "Add a review"
201188msgstr ""
202189
203−#: Dash/Video/VideoPreview.qml:153
204−msgid "Starring:"
190+#: Dash/Previews/Reviews.qml:86
191+msgid "Review"
205192msgstr ""
206193
207−#: Dash/Video/VideoPreview.qml:176
208−msgid "Author:"
209−msgstr "ئاپتور:"
194+#: Dash/Previews/Reviews.qml:121
195+msgid "Send"
196+msgstr "ئەۋەت"
197+
198+#: Dash/Previews/Reviews.qml:139
199+msgid "Comments:"
200+msgstr "ئىنكاس:"
210201
211−#: Greeter/Lockscreen.qml:134
202+#: Greeter/Lockscreen.qml:142
212203msgid "Emergency Call"
213204msgstr ""
214205
215206#: Greeter/PassphraseLockscreen.qml:59
216207#, qt-format
217208msgid "Hello %1"
218−msgstr ""
209+msgstr "سالام %1"
219210
220211#: Greeter/PassphraseLockscreen.qml:59
221212msgid "Hello"
@@ -245,11 +236,15 @@ msgstr "سۆزلەۋاتىسىز…"
245236msgid "Search"
246237msgstr "ئىزدە"
247238
248−#: plugins/Unity/scope.cpp:317
239+#: plugins/Unity/scope.cpp:361
249240msgid "Sorry, there is nothing that matches your search."
250241msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپىلمىدى."
251242
252−#: Shell.qml:429
243+#: plugins/Unity/showallfilteroption.cpp:41
244+msgid "All"
245+msgstr "ھەممىسى"
246+
247+#: Shell.qml:453
253248#, qt-format
254249msgid "Please enter %1"
255−msgstr ""
250+msgstr "%1 نى كىرگۈزۈڭ"
po/uk.po+62−62
@@ -7,17 +7,17 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-08-27 13:36-0400\n"
11−"PO-Revision-Date: 2013-07-21 05:47+0000\n"
12−"Last-Translator: Ярослав Смук <Smuk.Slavko@yandex.ua>\n"
10+"POT-Creation-Date: 2013-10-07 10:49+0200\n"
11+"PO-Revision-Date: 2013-09-28 07:54+0000\n"
12+"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
1313"Language-Team: Ukrainian <uk@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2013-08-30 05:37+0000\n"
20−"X-Generator: Launchpad (build 16750)\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,87 +87,79 @@ msgstr "Вікіпедія"
8787msgid "YouTube"
8888msgstr "YouTube"
8989
90−#: Components/EdgeDemoOverlay.qml:145
90+#: Components/EdgeDemoOverlay.qml:149
9191msgid "Skip intro"
92−msgstr ""
92+msgstr "Пропустити вступ"
9393
94−#: Components/EdgeDemo.qml:98
94+#: Components/EdgeDemo.qml:112
9595msgid "Right edge"
96−msgstr ""
96+msgstr "Правий край"
9797
98−#: Components/EdgeDemo.qml:99
98+#: Components/EdgeDemo.qml:113
9999msgid "Try swiping from the right edge to unlock the phone"
100−msgstr ""
100+msgstr "Спробуйте провести пальцем від правою краю, щоб розблокувати телефон"
101101
102−#: Components/EdgeDemo.qml:135
102+#: Components/EdgeDemo.qml:144
103103msgid "Top edge"
104−msgstr ""
104+msgstr "Верхній край"
105105
106−#: Components/EdgeDemo.qml:136
106+#: Components/EdgeDemo.qml:145
107107msgid "Try swiping from the top edge to access the indicators"
108108msgstr ""
109+"Спробуйте провести пальцем від верхнього краю, щоб розблокувати телефон"
109110
110−#: Components/EdgeDemo.qml:161
111+#: Components/EdgeDemo.qml:170
111112msgid "Close"
112−msgstr ""
113+msgstr "Закрити"
113114
114−#: Components/EdgeDemo.qml:162
115+#: Components/EdgeDemo.qml:171
115116msgid "Swipe up again to close the settings screen"
116−msgstr ""
117+msgstr "Проведіть пальцем ще раз, щоб закрити вікно параметрів"
117118
118−#: Components/EdgeDemo.qml:189
119+#: Components/EdgeDemo.qml:198
119120msgid "Left edge"
120−msgstr ""
121+msgstr "Лівий край"
121122
122−#: Components/EdgeDemo.qml:190
123+#: Components/EdgeDemo.qml:199
123124msgid "Swipe from the left to reveal the launcher for quick access to apps"
124125msgstr ""
126+"Проведіть пальцем від лівого краю, щоб відкрити панель запуску для "
127+"пришвидшення доступу до програм"
125128
126−#: Components/EdgeDemo.qml:217
129+#: Components/EdgeDemo.qml:226
127130msgid "Well done"
128−msgstr ""
131+msgstr "Добре"
129132
130−#: Components/EdgeDemo.qml:218
131−msgid "You have now mastered the edge gestures and can start using the phone"
133+#: Components/EdgeDemo.qml:227
134+msgid ""
135+"You have now mastered the edge gestures and can start using the "
136+"phone<br><br>Tap anywhere to start"
132137msgstr ""
133138
134−#: Components/PageHeader.qml:298
139+#: Components/PageHeader.qml:341
135140msgid "Recent searches"
136141msgstr "Нещодавні пошуки"
137142
138143#. TRANSLATORS: Number of persons who rated this app
139−#: 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
140146#, qt-format
141147msgid "(%1)"
142−msgstr ""
148+msgstr "(%1)"
143149
144150#. TRANSLATORS: Number of persons who wrote reviews for this app
145−#: 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
146153#, qt-format
147154msgid "%1 review"
148155msgid_plural "%1 reviews"
149−msgstr[0] ""
150−msgstr[1] ""
156+msgstr[0] "%1 рецензія"
157+msgstr[1] "%1 рецензії"
158+msgstr[2] "%1 рецензій"
151159
152−#: Dash/Apps/AppPreview.qml:175
160+#: Dash/Apps/AppPreview.qml:126
153161msgid "Rate this"
154−msgstr ""
155−
156−#: Dash/Apps/AppReviews.qml:72
157−msgid "Add a review"
158−msgstr ""
159−
160−#: Dash/Apps/AppReviews.qml:84
161−msgid "Review"
162−msgstr ""
163−
164−#: Dash/Apps/AppReviews.qml:118
165−msgid "Send"
166−msgstr ""
167−
168−#: Dash/Apps/AppReviews.qml:136
169−msgid "Comments:"
170−msgstr ""
162+msgstr "Оцінити"
171163
172164#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
173165msgid "Featured"
@@ -197,21 +189,25 @@ msgstr "Популярне у мережі"
197189msgid "Videos"
198190msgstr "Відео"
199191
200−#: Dash/Video/VideoPreview.qml:130
201−msgid "Directed by:"
202−msgstr "Режисер:"
192+#: Dash/Previews/Reviews.qml:74
193+msgid "Add a review"
194+msgstr "Додати рецензію"
203195
204−#: Dash/Video/VideoPreview.qml:153
205−msgid "Starring:"
206−msgstr "Актори:"
196+#: Dash/Previews/Reviews.qml:86
197+msgid "Review"
198+msgstr "Рецензія"
199+
200+#: Dash/Previews/Reviews.qml:121
201+msgid "Send"
202+msgstr "Надіслати"
207203
208−#: Dash/Video/VideoPreview.qml:176
209−msgid "Author:"
210−msgstr "Автор:"
204+#: Dash/Previews/Reviews.qml:139
205+msgid "Comments:"
206+msgstr "Коментарі:"
211207
212−#: Greeter/Lockscreen.qml:134
208+#: Greeter/Lockscreen.qml:142
213209msgid "Emergency Call"
214−msgstr ""
210+msgstr "Терміновий виклик"
215211
216212#: Greeter/PassphraseLockscreen.qml:59
217213#, qt-format
@@ -246,11 +242,15 @@ msgstr "Мовлення…"
246242msgid "Search"
247243msgstr "Пошук"
248244
249−#: plugins/Unity/scope.cpp:317
245+#: plugins/Unity/scope.cpp:361
250246msgid "Sorry, there is nothing that matches your search."
251247msgstr "Вибачте, для вказаних вами ключових слів нічого не знайдено."
252248
253−#: Shell.qml:429
249+#: plugins/Unity/showallfilteroption.cpp:41
250+msgid "All"
251+msgstr ""
252+
253+#: Shell.qml:453
254254#, qt-format
255255msgid "Please enter %1"
256256msgstr "Будь ласка, введіть %1"
po/unity8.pot+38−42

This diff is too big to show here.

po/xh.ponew file+251

This diff is too big to show here.

po/zh_CN.po+46−50

This diff is too big to show here.

po/zh_TW.po+40−44

This diff is too big to show here.

run_on_device+1−1

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

tests/mocks/AccountsService/AccountsService.h+8

This diff is too big to show here.

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

This diff is too big to show here.

tests/mocks/QMenuModel/qmldir+1

This diff is too big to show here.

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

This diff is too big to show here.

tests/mocks/Unity/fake_applications_scope.cpp+7

This diff is too big to show here.

tests/mocks/Unity/fake_categories.cpp+6

This diff is too big to show here.

tests/mocks/Unity/fake_categories.h+1

This diff is too big to show here.

tests/mocks/Unity/fake_preview.cpp−5

This diff is too big to show here.

tests/mocks/Unity/fake_preview.h−2

This diff is too big to show here.

tests/mocks/Unity/fake_scope.cpp+26

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cpp+8

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

tests/plugins/Unity/resultstest.h+2

This diff is too big to show here.

tests/qmltests/CMakeLists.txt+4−3

This diff is too big to show here.

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

This diff is too big to show here.

tests/qmltests/Components/tst_PageHeader.qml+28

This diff is too big to show here.

tests/qmltests/Components/tst_Showable.qml+27

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

tests/qmltests/Greeter/tst_Phone.qml+15

This diff is too big to show here.

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

This diff is too big to show here.

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

This diff is too big to show here.

tests/qmltests/tst_Shell.qml+125−2

This diff is too big to show here.