on xenial help sign in
merge trunk
commit75277868e2b10f87898f792e255a9718566a217f authorMichał Sawicz <michal.sawicz@canonical.com> dateThu 13 Jun 2013, 13:32 (13 years ago) parentfa8ca6efe7ed42
103 files changed+7688−1040
.gitignore+9 Applications/applications.js+17−17 CODING+1−11 Components/Carousel.qml+152−121 Components/Stage.qml+21−32 Components/WrongPasswordAnimation.qml+46 Components/carousel.js+47−11 Dash/Dash.qml+2 Dash/DashContent.qml+5−16 Dash/DashMusic.qml+8−1 Dash/DashPeople.qml+8−1 Dash/DashVideos.qml+8−1 Dash/LensDelegateMapper.qml+35 Dash/Video/VideoPreview.qml+3−3 Greeter/GreeterContent.qml+3−1 Greeter/Lockscreen.qml+149 Greeter/LoginList.qml+3−23 Greeter/PassphraseLockscreen.qml+87 Greeter/PinLockscreen.qml+111 Greeter/PinPadButton.qml+59 Launcher/Launcher.qml+16−5 Panel/SearchIndicator.qml+1−1 Shell.qml+60−24 build+10−9 build_unity+31−51 plugins/LightDM/CMakeLists.txt+1−1 plugins/Ubuntu/Gestures/AxisVelocityCalculator.cpp+1−1 plugins/Ubuntu/Gestures/AxisVelocityCalculator.h+7−2 plugins/Ubuntu/Gestures/CMakeLists.txt+3 plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+121 plugins/Ubuntu/Gestures/DirectionalDragArea.h+60 po/ar.po+128−12 po/az.po+128−12 po/ca.po+128−12 po/de.po+128−12 po/el.po+128−12 po/en_AU.po+128−12 po/eo.po+127−11 po/es.po+128−12 po/fi.po+128−12 po/fo.po+128−12 po/fr.po+128−12 po/gl.po+128−12 po/he.po+128−12 po/hr.po+128−12 po/hu.po+128−12 po/hy.po+234 po/id.po+127−11 po/it.po+128−12 po/kn.po+128−12 po/ko.po+128−12 po/ky.po+128−12 po/lv.po+128−12 po/my.po+128−12 po/nb.po+128−12 po/nl.po+128−12 po/pl.po+145−31 po/pt_BR.po+128−12 po/ro.po+128−12 po/ru.po+128−12 po/si.po+127−11 po/sl.po+134−18 po/sr.po+128−12 po/sv.po+127−11 po/te.po+128−12 po/tr.po+128−12 po/ug.po+234 po/uk.po+128−12 po/unity8.pot+124−8 po/update-unity-pot+1−1 po/zh_CN.po+129−13 po/zh_TW.po+133−18 run+17−1 run_on_device+26−9 tests/autopilot/unity8/emulators/main_window.py+12 tests/autopilot/unity8/tests/testcases.py → tests/autopilot/unity8/tests/testhud.py+2−2 tests/autopilot/unity8/tests/testlockscreen.py+118 tests/mocks/LightDM/CMakeLists.txt+2 tests/mocks/LightDM/full/GreeterPrivate.cpp+7−1 tests/mocks/LightDM/full/UsersModelPrivate.cpp+1 tests/mocks/LightDM/single-passphrase/CMakeLists.txt+21 tests/mocks/LightDM/single-passphrase/GreeterPrivate.cpp+53 tests/mocks/LightDM/single-passphrase/InfographicModelPrivate.cpp+61 tests/mocks/LightDM/single-passphrase/UsersModelPrivate.cpp+33 tests/mocks/LightDM/single-pin/CMakeLists.txt+21 tests/mocks/LightDM/single-pin/GreeterPrivate.cpp+53 tests/mocks/LightDM/single-pin/InfographicModelPrivate.cpp+61 tests/mocks/LightDM/single-pin/UsersModelPrivate.cpp+33 tests/plugins/Ubuntu/Gestures/CMakeLists.txt+5−3 tests/plugins/Ubuntu/Gestures/RightwardsLauncher.qml+1 tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.cpp+203−16 tests/qmltests/CMakeLists.txt+3 tests/qmltests/Components/tst_Carousel.qml+38−34 tests/qmltests/Components/tst_Stage.qml+5−48 tests/qmltests/Dash/qml/FakeLensView.qml+69−42 tests/qmltests/Dash/qml/fake_generic_lensView.qml+1−3 tests/qmltests/Dash/qml/fake_lensView1.qml+1−3 tests/qmltests/Dash/qml/fake_lensView2.qml+1−3 tests/qmltests/Dash/qml/fake_lensView3.qml+1−3 tests/qmltests/Dash/qml/fake_lensView4.qml+1−3 tests/qmltests/Dash/tst_Dash.qml+133 tests/qmltests/Dash/tst_DashContent.qml+61−56 tests/qmltests/Greeter/tst_Lockscreen.qml+205
.gitignorenew file+9
@@ -0,0 +1,9 @@
1+# default build dir
2+/builddir
3+# QtCreator project files
4+/*.user
5+# Eclipse project files
6+/.project
7+/.cproject
8+/.settings
9+/.pydevproject
Applications/applications.js+17−17
@@ -20,95 +20,95 @@ var SideStage = 1;
2020
2121var __availableApplications = {
2222 '/usr/share/applications/phone-app.desktop': {
23− 'name': 'Phone',
23+ 'name': i18n.tr("Phone"),
2424 'icon': 'phone-app',
2525 'exec': '/usr/bin/phone-app',
2626 'stage': SideStage
2727 },
2828 '/usr/share/applications/camera-app.desktop': {
29− 'name': 'Camera',
29+ 'name': i18n.tr("Camera"),
3030 'icon': 'camera',
3131 'fullscreen': true,
3232 'exec': '/usr/bin/camera-app --fullscreen'
3333 },
3434 '/usr/share/applications/gallery-app.desktop': {
35− 'name': 'Gallery',
35+ 'name': i18n.tr("Gallery"),
3636 'icon': 'gallery',
3737 'exec': '/usr/bin/gallery-app'
3838 },
3939 '/usr/share/applications/facebook-webapp.desktop': {
40− 'name': 'Facebook',
40+ 'name': i18n.tr("Facebook"),
4141 'icon': 'facebook',
4242 'exec': '/usr/bin/webbrowser-app --chromeless http://m.facebook.com',
4343 'stage': SideStage
4444 },
4545 '/usr/share/applications/webbrowser-app.desktop': {
46− 'name': 'Browser',
46+ 'name': i18n.tr("Browser"),
4747 'icon': 'browser',
4848 'exec': '/usr/bin/webbrowser-app'
4949 },
5050 '/usr/share/applications/twitter-webapp.desktop': {
51− 'name': 'Twitter',
51+ 'name': i18n.tr("Twitter"),
5252 'icon': 'twitter',
5353 'exec': '/usr/bin/webbrowser-app --chromeless http://www.twitter.com',
5454 'stage': SideStage
5555 },
5656 '/usr/share/applications/gmail-webapp.desktop': {
57− 'name': 'GMail',
57+ 'name': i18n.tr("GMail"),
5858 'icon': 'gmail',
5959 'exec': '/usr/bin/webbrowser-app --chromeless http://m.gmail.com'
6060 },
6161 '/usr/share/applications/ubuntu-weather-app.desktop': {
62− 'name': 'Weather',
62+ 'name': i18n.tr("Weather"),
6363 'icon': 'weather',
6464 'exec': '/usr/bin/qmlscene /usr/share/ubuntu-weather-app/ubuntu-weather-app.qml',
6565 'stage': SideStage
6666 },
6767 '/usr/share/applications/notes-app.desktop': {
68− 'name': 'Notepad',
68+ 'name': i18n.tr("Notepad"),
6969 'icon': 'notepad',
7070 'exec': '/usr/bin/qmlscene /usr/share/notes-app/NotesApp.qml',
7171 'stage': SideStage
7272 },
7373 '/usr/share/applications/ubuntu-calendar-app.desktop': {
74− 'name': 'Calendar',
74+ 'name': i18n.tr("Calendar"),
7575 'icon': 'calendar',
7676 'exec': '/usr/bin/qmlscene /usr/share/ubuntu-calendar-app/calendar.qml',
7777 'stage': SideStage
7878 },
7979 '/usr/share/applications/mediaplayer-app.desktop': {
80− 'name': 'Media Player',
80+ 'name': i18n.tr("Media Player"),
8181 'icon': 'mediaplayer-app',
8282 'fullscreen': true,
8383 'exec': '/usr/bin/mediaplayer-app'
8484 },
8585 '/usr/share/applications/evernote.desktop': {
86− 'name': 'Evernote',
86+ 'name': i18n.tr("Evernote"),
8787 'icon': 'evernote',
8888 'exec': ''
8989 },
9090 '/usr/share/applications/map.desktop': {
91− 'name': 'Map',
91+ 'name': i18n.tr("Map"),
9292 'icon': 'map',
9393 'exec': ''
9494 },
9595 '/usr/share/applications/pinterest.desktop': {
96− 'name': 'Pinterest',
96+ 'name': i18n.tr("Pinterest"),
9797 'icon': 'pinterest',
9898 'exec': ''
9999 },
100100 '/usr/share/applications/soundcloud.desktop': {
101− 'name': 'SoundCloud',
101+ 'name': i18n.tr("SoundCloud"),
102102 'icon': 'soundcloud',
103103 'exec': ''
104104 },
105105 '/usr/share/applications/wikipedia.desktop': {
106− 'name': 'Wikipedia',
106+ 'name': i18n.tr("Wikipedia"),
107107 'icon': 'wikipedia',
108108 'exec': ''
109109 },
110110 '/usr/share/applications/youtube.desktop': {
111− 'name': 'YouTube',
111+ 'name': i18n.tr("YouTube"),
112112 'icon': 'youtube',
113113 'exec': ''
114114 },
CODING+1−11
@@ -17,7 +17,7 @@ If its your first time, download & build deps
1717$ ./build -s
1818 this will:
1919 - add ppa:phablet-team/desktop-deps, ppa:canonical-qt5-edgers/qt5-proper, ppa:ubuntu-sdk-team
20− - build and install lp:libunity/phablet, lp:unity/phablet-mods, lp:hud/phablet and lp:unity-lens-people locally
20+ - build and install lp:libunity/phablet, lp:unity/phablet-mods, lp:hud/phablet locally
2121 - install build dependencies
2222
2323build Unity 8
@@ -33,10 +33,6 @@ $ ./build_unity
3333Running Unity 8 on your desktop
3434===============================
3535
36−run the People lens daemon
37−--------------------------
38−$ ~/unity/unity_build/libexec/unity-people-daemon
39−
4036run the Unity 8 shell
4137---------------------
4238$ cd ~/unity/unity8
@@ -45,12 +41,6 @@ $ ./run
4541Notes
4642-----
4743- to navigate, utilize the mouse left button as you would your finger
48−- if your contacts are empty
49− $ sudo apt-get install gir1.2-ebook-1.2
50− $ manage-address-book.py create
51− this will:
52− - create an EDS address book
53− - populate the address book with sample data
5444- to get the translations work, currently you have to do make install to
5545 put the *.mo files into correct structure. We'll look for a better solution
5646 later.
Components/Carousel.qml+152−121
@@ -18,26 +18,50 @@ import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import "carousel.js" as CarouselJS
2020
21+/*! The Carousel component presents the items of a model in a carousel view. It's similar to a
22+ cover flow. But it stops at it's boundaries (therefore no PathView is used).
23+ */
2124Item {
2225 id: carousel
2326
27+ /// The component to be used as delegate. This component has to be derived from BaseCarouselDelegate
2428 property Component itemComponent
25− property var model
26− property alias minimumTileWidth: flickable.minimumTileWidth
27− property alias pathItemCount: flickable.pathItemCount
28− property alias tileAspectRatio: flickable.tileAspectRatio
29− property int cacheBuffer: 0
29+ /// Model for the Carousel, which has to be a model usable by a ListView
30+ property alias model: listView.model
31+ /// A minimal width of a tile can be set here. Per default a best fit will be calculated
32+ property alias minimumTileWidth: listView.minimumTileWidth
33+ /// Sets the number of tiles that are visible
34+ property alias pathItemCount: listView.pathItemCount
35+ /// Aspect ratio of the tiles width/height
36+ property alias tileAspectRatio: listView.tileAspectRatio
37+ /// Used to cache some delegates for performance reasons. See the ListView documentation for details
38+ property alias cacheBuffer: listView.cacheBuffer
39+ /// Width of the "draw buffer" in pixel. The drawBuffer is an additional area at start/end where
40+ /// items drawn, even if it is not in the visible area.
41+ /// cacheBuffer controls only the to retain delegates outside the visible area (and is used on top of the drawBuffer)
42+ /// see https://bugreports.qt-project.org/browse/QTBUG-29173
43+ property int drawBuffer: width / pathItemCount // an "ok" value - but values used from the listView cause loops
44+ /// The selected item can be shown in a different size controlled by selectedItemScaleFactor
3045 property real selectedItemScaleFactor: 1.1
3146
47+ /// Emitted when the user clicked on an item
48+ /// @param index is the index of the clicked item
49+ /// @param delegateItem is the clicked component/delegate itself
50+ /// @param itemY is y of the clicked delegate
3251 signal clicked(int index, var delegateItem, real itemY)
3352
34− implicitHeight: flickable.tileHeight * selectedItemScaleFactor
53+ implicitHeight: listView.tileHeight * selectedItemScaleFactor
3554
36− /* TODO: evaluate if the component could be more efficient with a ListView,
37− using this technique https://bugreports.qt-project.org/browse/QTBUG-29173 */
55+ /* Basic idea behind the carousel effect is to move the items of the delegates (compacting /stuffing them).
56+ One drawback is, that more delegates have to be drawn than usually. As some items are moved from the
57+ invisible to the visible area. Setting the cacheBuffer does not fix this.
58+ See https://bugreports.qt-project.org/browse/QTBUG-29173
59+ Therefore the ListView has negative left and right anchors margins, and in addition a header
60+ and footer item to compensate that.
3861
39− Flickable {
40− id: flickable
62+ The scaling of the items is controlled by the variable continuousIndex, described below. */
63+ ListView {
64+ id: listView
4165
4266 property real minimumTileWidth: 0
4367 property real newContentX: -1
@@ -57,20 +81,27 @@ Item {
5781 - 'gapToEndPhase' gap in pixels between middle and end phase
5882 - 'kGapEnd' constant used to calculate 'continuousIndex' in end phase
5983 - 'kMiddleIndex' constant used to calculate 'continuousIndex' in middle phase
60− - 'kXBeginningEnd' constant used to calculate 'continuousIndex' in beginning and end phase. */
84+ - 'kXBeginningEnd' constant used to calculate 'continuousIndex' in beginning and end phase
85+ - 'realContentWidth' the width of all the delegates only (without header/footer)
86+ - 'realContentX' the 'contentX' of the listview ignoring the 'drawBuffer'
87+ - 'realWidth' the 'width' of the listview, as it is used as component. */
6188
62− readonly property real gapToMiddlePhase: Math.min(width / 2 - tileWidth / 2, (contentWidth - width) / 2)
63− readonly property real gapToEndPhase: contentWidth - width - gapToMiddlePhase
89+ readonly property real gapToMiddlePhase: Math.min(realWidth / 2 - tileWidth / 2, (realContentWidth - realWidth) / 2)
90+ readonly property real gapToEndPhase: realContentWidth - realWidth - gapToMiddlePhase
6491 readonly property real kGapEnd: kMiddleIndex * (1 - gapToEndPhase / gapToMiddlePhase)
65− readonly property real kMiddleIndex: (width / 2) / tileWidth - 0.5
92+ readonly property real kMiddleIndex: (realWidth / 2) / tileWidth - 0.5
6693 readonly property real kXBeginningEnd: 1 / tileWidth + kMiddleIndex / gapToMiddlePhase
67− readonly property real realPathItemCount: Math.min(width / tileWidth, pathItemCount)
68− readonly property real referenceGapToMiddlePhase: width / 2 - tileWidth / 2
94+ readonly property real maximumItemTranslation: (listView.tileWidth * 3) / listView.scaleFactor
95+ readonly property real realContentWidth: contentWidth - 2 * carousel.drawBuffer
96+ readonly property real realContentX: contentX + carousel.drawBuffer
97+ readonly property real realPathItemCount: Math.min(realWidth / tileWidth, pathItemCount)
98+ readonly property real realWidth: carousel.width
99+ readonly property real referenceGapToMiddlePhase: realWidth / 2 - tileWidth / 2
69100 readonly property real referencePathItemCount: referenceWidth / referenceTileWidth
70101 readonly property real referenceWidth: 848
71102 readonly property real referenceTileWidth: 175
72103 readonly property real scaleFactor: tileWidth / referenceTileWidth
73− readonly property real tileWidth: Math.max(width / pathItemCount, minimumTileWidth)
104+ readonly property real tileWidth: Math.max(realWidth / pathItemCount, minimumTileWidth)
74105 readonly property real tileHeight: tileWidth / tileAspectRatio
75106 readonly property real translationXViewFactor: 0.2 * (referenceGapToMiddlePhase / gapToMiddlePhase)
76107 readonly property real verticalMargin: (parent.height - tileHeight) / 2
@@ -80,20 +111,36 @@ Item {
80111 fill: parent
81112 topMargin: verticalMargin
82113 bottomMargin: verticalMargin
114+ // extending the "drawing area"
115+ leftMargin: -carousel.drawBuffer
116+ rightMargin: -carousel.drawBuffer
83117 }
84− contentWidth: view.width
85− contentHeight: height
118+
119+ /* The header and footer help to "extend" the area, the listview draws items.
120+ This together with anchors.leftMargin and anchors.rightMargin. */
121+ header: Item {
122+ width: carousel.drawBuffer
123+ height: listView.tileHeight
124+ }
125+ footer: Item {
126+ width: carousel.drawBuffer
127+ height: listView.tileHeight
128+ }
129+
86130 boundsBehavior: Flickable.StopAtBounds
87− flickDeceleration: Math.max(1500 * Math.pow(width / referenceWidth, 1.5), 1500) // 1500 is platform default
88− maximumFlickVelocity: Math.max(2500 * Math.pow(width / referenceWidth, 1.5), 2500) // 2500 is platform default
131+ cacheBuffer: carousel.cacheBuffer
132+ flickDeceleration: Math.max(1500 * Math.pow(realWidth / referenceWidth, 1.5), 1500) // 1500 is platform default
133+ maximumFlickVelocity: Math.max(2500 * Math.pow(realWidth / referenceWidth, 1.5), 2500) // 2500 is platform default
134+ orientation: ListView.Horizontal
89135
90136 function itemClicked(index, delegateItem) {
91137 var x = CarouselJS.getXFromContinuousIndex(index,
92− width,
93− contentWidth,
138+ realWidth,
139+ realContentWidth,
94140 tileWidth,
95141 gapToMiddlePhase,
96− gapToEndPhase)
142+ gapToEndPhase,
143+ carousel.drawBuffer)
97144
98145 if (Math.abs(x - contentX) < 1) {
99146 /* We're clicking the selected item and
@@ -116,22 +163,22 @@ Item {
116163 newContentX = -1
117164 }
118165 onMovementEnded: {
119− if (contentX > 0 && contentX < contentWidth - width)
166+ if (realContentX > 0 && realContentX < realContentWidth - realWidth)
120167 stepAnimation.start()
121168 }
122169
123170 SmoothedAnimation {
124171 id: stepAnimation
125172
126− target: flickable
173+ target: listView
127174 property: "contentX"
128− from: flickable.contentX
129− to: CarouselJS.getXFromContinuousIndex(view.selectedIndex,
130− flickable.width,
131− flickable.contentWidth,
132− flickable.tileWidth,
133− flickable.gapToMiddlePhase,
134− flickable.gapToEndPhase)
175+ to: CarouselJS.getXFromContinuousIndex(listView.selectedIndex,
176+ listView.realWidth,
177+ listView.realContentWidth,
178+ listView.tileWidth,
179+ listView.gapToMiddlePhase,
180+ listView.gapToEndPhase,
181+ carousel.drawBuffer)
135182 duration: 450
136183 velocity: 200
137184 easing.type: Easing.InOutQuad
@@ -141,112 +188,96 @@ Item {
141188 id: newContentXAnimation
142189
143190 NumberAnimation {
144− target: flickable
191+ target: listView
145192 property: "contentX"
146− from: flickable.contentX
147− to: flickable.newContentX
193+ from: listView.contentX
194+ to: listView.newContentX
148195 duration: 300
149196 easing.type: Easing.InOutQuad
150197 }
151198 ScriptAction {
152− script: flickable.newContentX = -1
199+ script: listView.newContentX = -1
153200 }
154201 }
155202
156− Row {
157− id: view
158−
159− readonly property int selectedIndex: Math.round(continuousIndex)
160− readonly property real continuousIndex: CarouselJS.getContinuousIndex(flickable.contentX,
161− flickable.tileWidth,
162− flickable.gapToMiddlePhase,
163− flickable.gapToEndPhase,
164− flickable.kGapEnd,
165− flickable.kMiddleIndex,
166− flickable.kXBeginningEnd)
167−
168− height: parent.height
169− anchors.verticalCenter: parent.verticalCenter
203+ readonly property int selectedIndex: Math.round(continuousIndex)
204+ readonly property real continuousIndex: CarouselJS.getContinuousIndex(listView.realContentX,
205+ listView.tileWidth,
206+ listView.gapToMiddlePhase,
207+ listView.gapToEndPhase,
208+ listView.kGapEnd,
209+ listView.kMiddleIndex,
210+ listView.kXBeginningEnd)
211+
212+ property real viewTranslation: CarouselJS.getViewTranslation(listView.realContentX,
213+ listView.tileWidth,
214+ listView.gapToMiddlePhase,
215+ listView.gapToEndPhase,
216+ listView.translationXViewFactor)
217+
218+ delegate: Loader {
219+ property bool explicitlyScaled: explicitScaleFactor == carousel.selectedItemScaleFactor
220+ property real explicitScaleFactor: explicitScale ? carousel.selectedItemScaleFactor : 1.0
221+ readonly property bool explicitScale: (!listView.moving ||
222+ listView.realContentX <= 0 ||
223+ listView.realContentX >= listView.realContentWidth - listView.realWidth) &&
224+ listView.newContentX < 0 &&
225+ index === listView.selectedIndex
226+ readonly property real cachedTiles: listView.realPathItemCount + carousel.drawBuffer / listView.tileWidth
227+ readonly property real distance: listView.continuousIndex - index
228+ readonly property real itemTranslationScale: CarouselJS.getItemScale(0.5,
229+ (index + 0.5), // good approximation of scale while changing selected item
230+ listView.count,
231+ listView.visibleTilesScaleFactor)
232+ readonly property real itemScale: CarouselJS.getItemScale(distance,
233+ listView.continuousIndex,
234+ listView.count,
235+ listView.visibleTilesScaleFactor)
236+ readonly property real translationX: CarouselJS.getItemTranslation(index,
237+ listView.selectedIndex,
238+ distance,
239+ itemScale,
240+ itemTranslationScale,
241+ listView.maximumItemTranslation)
242+
243+ width: listView.tileWidth
244+ height: listView.tileHeight
245+ scale: itemScale * explicitScaleFactor
246+ sourceComponent: itemComponent
247+ z: cachedTiles - Math.abs(index - listView.selectedIndex)
170248
171249 transform: Translate {
172− x: CarouselJS.getViewTranslation(flickable.contentX,
173− flickable.tileWidth,
174− flickable.gapToMiddlePhase,
175− flickable.gapToEndPhase,
176− flickable.translationXViewFactor)
250+ x: listView.viewTranslation + translationX * listView.scaleFactor
177251 }
178252
179− Repeater {
180− id: repeater
181−
182− model: carousel.model
183−
184− Loader {
185− property bool explicitlyScaled: explicitScaleFactor == carousel.selectedItemScaleFactor
186− property real explicitScaleFactor: explicitScale ? carousel.selectedItemScaleFactor : 1.0
187− readonly property bool explicitScale: (!flickable.moving ||
188− flickable.contentX <= 0 ||
189− flickable.contentX >= flickable.contentWidth - flickable.width) &&
190− flickable.newContentX < 0 &&
191− index === view.selectedIndex
192− readonly property real cachedTiles: flickable.realPathItemCount + carousel.cacheBuffer / flickable.tileWidth
193− readonly property real distance: view.continuousIndex - index
194− readonly property real itemTranslationScale: CarouselJS.getItemScale(0.5,
195− (index + 0.5), // good approximation of scale while changing selected item
196− repeater.count,
197− flickable.visibleTilesScaleFactor)
198− readonly property real itemScale: CarouselJS.getItemScale(distance,
199− view.continuousIndex,
200− repeater.count,
201− flickable.visibleTilesScaleFactor)
202− readonly property real translationFactor: (flickable.tileWidth * 3) / flickable.scaleFactor
203− readonly property real translationX: index === view.selectedIndex ? 0 :
204− CarouselJS.getItemTranslation(distance,
205− itemScale,
206− itemTranslationScale,
207− translationFactor)
208−
209− width: flickable.tileWidth
210− height: flickable.tileHeight
211− scale: itemScale * explicitScaleFactor
212− opacity: scale > 0.02 ? 1 : 0
213− sourceComponent: z > 0 ? itemComponent : undefined
214− z: cachedTiles - Math.abs(index - view.selectedIndex)
215−
216− transform: Translate {
217− x: translationX * flickable.scaleFactor
253+ Behavior on explicitScaleFactor {
254+ SequentialAnimation {
255+ ScriptAction {
256+ script: if (!explicitScale)
257+ explicitlyScaled = false
218258 }
219−
220− Behavior on explicitScaleFactor {
221− SequentialAnimation {
222− ScriptAction {
223− script: if (!explicitScale)
224− explicitlyScaled = false
225− }
226− NumberAnimation {
227− duration: explicitScaleFactor === 1.0 ? 250 : 150
228− easing.type: Easing.InOutQuad
229− }
230− ScriptAction {
231− script: if (explicitScale)
232− explicitlyScaled = true
233− }
234− }
259+ NumberAnimation {
260+ duration: explicitScaleFactor === 1.0 ? 250 : 150
261+ easing.type: Easing.InOutQuad
235262 }
236−
237− onLoaded: {
238− item.explicitlyScaled = Qt.binding(function() { return explicitlyScaled; })
239− item.model = Qt.binding(function() { return model; })
263+ ScriptAction {
264+ script: if (explicitScale)
265+ explicitlyScaled = true
240266 }
267+ }
268+ }
241269
242− MouseArea {
243− id: mouseArea
270+ onLoaded: {
271+ item.explicitlyScaled = Qt.binding(function() { return explicitlyScaled; })
272+ item.model = Qt.binding(function() { return model; })
273+ }
244274
245− anchors.fill: parent
275+ MouseArea {
276+ id: mouseArea
246277
247− onClicked: flickable.itemClicked(index, item)
248− }
249− }
278+ anchors.fill: parent
279+
280+ onClicked: listView.itemClicked(index, item)
250281 }
251282 }
252283 }
Components/Stage.qml+21−32
@@ -406,28 +406,6 @@ Showable {
406406 }
407407
408408 property real __startValue: stage.width
409− property real __hintValue: units.gu(1.5) // Should be 3, but 1.5 balances the not-Linear easing of switchToApplicationAnimation
410−
411− Binding {
412− target: switchToApplicationAnimationController
413− property: "progress"
414− value: stage.__dragValueToProgress(-rightEdgeDraggingArea.distance,
415− stage.__startValue, stage.applications.count)
416− when: rightEdgeDraggingArea.status === DirectionalDragArea.Recognized
417− }
418−
419− NumberAnimation {
420− id: hintProgressAnimation
421− target: switchToApplicationAnimationController
422− property: "progress"
423− easing.type: Easing.OutQuad
424− from: 0.0
425− to: stage.__dragValueToProgress(stage.__hintValue,
426− stage.__startValue,
427− stage.applications.count)
428− duration: 150
429−
430− }
431409
432410 AnimationControllerWithSignals {
433411 id: switchToApplicationAnimationController
@@ -463,7 +441,26 @@ Showable {
463441 direction: DirectionalDragArea.Leftwards
464442 maxDeviation: units.gu(1)
465443 wideningAngle: 20
466− distanceThreshold: units.gu(2)
444+ distanceThreshold: units.gu(3)
445+ minSpeed: units.gu(5)
446+
447+ onDistanceChanged: {
448+ if (status !== DirectionalDragArea.Recognized)
449+ return
450+
451+ var targetProgress = __dragValueToProgress(-distance, __startValue,
452+ stage.applications.count)
453+ var delta = targetProgress - switchToApplicationAnimationController.progress
454+
455+ // When the gesture finally gets recognized, the finger will likely be
456+ // reasonably far from the edge. If we made the progress immediately
457+ // follow the finger position it would be visually unpleasant as there
458+ // would be a jump to meet the finger's current position.
459+ //
460+ // The trick is not to go all the way (1.0) as it would cause the
461+ // aforementioned jump.
462+ switchToApplicationAnimationController.progress += 0.4 * delta
463+ }
467464
468465 property bool gotRejected: false
469466
@@ -471,10 +468,7 @@ Showable {
471468 if (status == DirectionalDragArea.Undecided) {
472469 gotRejected = false
473470 onUndecided();
474− } else if (status == DirectionalDragArea.Recognized) {
475− onRecognized();
476471 } else if (status == DirectionalDragArea.Rejected) {
477− hintProgressAnimation.stop()
478472 switchToApplicationAnimationController.completeToBeginningWithSignal();
479473 gotRejected = true;
480474 } else if (status == DirectionalDragArea.WaitingForTouch) {
@@ -490,18 +484,13 @@ Showable {
490484 if (stage.applications.count > 1) {
491485 nextApplication = stage.applications.get(1);
492486 }
487+ switchToApplicationAnimationController.progress = 0
493488 switchToApplicationAnimation.prepare(nextApplication);
494489 switchToApplicationAnimationController.animation = switchToApplicationAnimation;
495490
496− hintProgressAnimation.start()
497− }
498−
499− function onRecognized() {
500− hintProgressAnimation.stop()
501491 }
502492
503493 function onGestureEnded() {
504− hintProgressAnimation.stop()
505494 if (stage.applications.count > 1 && dragVelocityCalculator.calculate() < 0) {
506495 switchToApplicationAnimationController.completeToEndWithSignal();
507496 } else {
Components/WrongPasswordAnimation.qmlnew file+46
@@ -0,0 +1,46 @@
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+
19+SequentialAnimation {
20+ id: root
21+
22+ property var target
23+
24+ NumberAnimation {
25+ target: root.target
26+ property: "anchors.horizontalCenterOffset"
27+ duration: 50
28+ easing.type: Easing.InQuad
29+ to: units.gu(2)
30+ }
31+ NumberAnimation {
32+ target: root.target
33+ property: "anchors.horizontalCenterOffset"
34+ duration: 100
35+ easing.type: Easing.InOutQuad
36+ to: -units.gu(2)
37+ }
38+ NumberAnimation {
39+ target: root.target
40+ easing.type: Easing.OutElastic
41+ properties: "anchors.horizontalCenterOffset"
42+ to: 0
43+ duration: 400
44+ easing.overshoot: units.gu(2)
45+ }
46+}
Components/carousel.js+47−11
@@ -16,7 +16,15 @@
1616
1717.pragma library
1818
19−// get the element which is selected accordingly to x, the hero of the view
19+/*! get the element which is selected accordingly to x, the hero of the view
20+ @param x contentX of the ListView
21+ @param tileWidth width of a single tile
22+ @param gapToMiddlePhase gap in pixels between beginning and middle phase
23+ @param gapToEndPhase gap in pixels between middle and end phase
24+ @param kGapEnd
25+ @param kMiddleIndex
26+ @param kXBeginningEnd
27+*/
2028function getContinuousIndex(x, tileWidth, gapToMiddlePhase, gapToEndPhase, kGapEnd, kMiddleIndex, kXBeginningEnd) {
2129 if (x < gapToMiddlePhase) {
2230 // beginning
@@ -30,8 +38,16 @@ function getContinuousIndex(x, tileWidth, gapToMiddlePhase, gapToEndPhase, kGapE
3038 return x / tileWidth + kMiddleIndex
3139}
3240
33−// obtain x position relative to an index, essentially an inverse of getContinuousIndex()
34−function getXFromContinuousIndex(index, viewWidth, contentWidth, tileWidth, gapToMiddlePhase, gapToEndPhase) {
41+/*! obtain x position relative to an index, essentially an inverse of getContinuousIndex()
42+ @param index index of the item to calcualte the proper X value for
43+ @param viewWidth visible width of the view
44+ @param contentWidth width off all items in the view
45+ @param tileWidth width of one item
46+ @param gapToMiddlePhase
47+ @param gapToEndPhase
48+ @param drawBuffer width of the drawBuffer
49+*/
50+function getXFromContinuousIndex(index, viewWidth, contentWidth, tileWidth, gapToMiddlePhase, gapToEndPhase, drawBuffer) {
3551 var middleX = (index + 0.5) * tileWidth - viewWidth / 2
3652
3753 if (middleX < gapToMiddlePhase) {
@@ -40,6 +56,7 @@ function getXFromContinuousIndex(index, viewWidth, contentWidth, tileWidth, gapT
4056 ((1 / tileWidth) +
4157 (viewWidth / (2 * tileWidth * gapToMiddlePhase)) -
4258 1 / (2 * gapToMiddlePhase))
59+ - drawBuffer
4360 } else if (middleX > gapToEndPhase) {
4461 // inverse of 'middleIndex + kGap' of getContinuousIndex()
4562 return (index +
@@ -50,13 +67,19 @@ function getXFromContinuousIndex(index, viewWidth, contentWidth, tileWidth, gapT
5067 (1 / tileWidth +
5168 viewWidth / (2 * tileWidth * gapToMiddlePhase) -
5269 1 / (2 * gapToMiddlePhase))
70+ - drawBuffer
5371 }
5472
5573 // inverse of 'middleIndex' of getContinuousIndex()
56− return middleX
74+ return middleX - drawBuffer
5775}
5876
59−// get translation of the whole view, adds gaps on sides
77+/*! get translation of the whole view, adds gaps on sides
78+ @param x contentX of the ListView
79+ @param gapToMiddlePhase
80+ @param gapToEndPhase
81+ @param translationXViewFactor
82+*/
6083function getViewTranslation(x, tileWidth, gapToMiddlePhase, gapToEndPhase, translationXViewFactor) {
6184 if (x < gapToMiddlePhase) {
6285 // beginning
@@ -70,16 +93,29 @@ function getViewTranslation(x, tileWidth, gapToMiddlePhase, gapToEndPhase, trans
7093 return 0
7194}
7295
73−// item scale
74−function getItemScale(distance, continuousIndex, end, scaleFactor) {
96+/*! item scale
97+ @param distance is the difference of the item's index to the continuousIndex
98+ @param continuousIndex the current index in real number
99+ @param numberOfItems the total number of items in the model
100+ @param scaleFactor if bigger than 1, the scaling is done slower (more distance needed)
101+*/
102+function getItemScale(distance, continuousIndex, numberOfItems, scaleFactor) {
75103 var distanceAbs = Math.abs(distance)
76− var distanceToBounds = Math.min(continuousIndex, end - continuousIndex)
104+ var distanceToBounds = Math.min(continuousIndex, numberOfItems - continuousIndex)
77105 var k = Math.max(200 + 100 * (-distanceToBounds / (3 * scaleFactor)), 50)
78106 return Math.max(0.01, 1 - Math.pow(distanceAbs, 2.5) / (k * scaleFactor))
79107}
80108
81−// item translation
82−function getItemTranslation(distance, scale, maxScale, translationFactor) {
109+/*! item translation
110+ @param index index of the current item
111+ @param selectedIndex index of the selected item
112+ @param distance controls the direction wich is left/negative and right/positive
113+ @param scale is the current scale factor of the item
114+ @param maxScale the maximum scale factor (the one used when the index is on that item
115+ @param maxTranslation the maximum translation length in pixel
116+*/
117+function getItemTranslation(index, selectedIndex, distance, scale, maxScale, maxTranslation) {
118+ if (index === selectedIndex) return 0
83119 var sign = distance > 0 ? 1 : -1
84− return sign * (maxScale - scale) * translationFactor
120+ return sign * (maxScale - scale) * maxTranslation
85121}
Dash/Dash.qml+2
@@ -59,6 +59,7 @@ Showable {
5959
6060 DashContent {
6161 id: dashContent
62+ objectName: "dashContent"
6263 anchors.fill: parent
6364 model: filteredLenses
6465 lenses: lenses
@@ -79,6 +80,7 @@ Showable {
7980
8081 DashBar {
8182 id: dashbar
83+ objectName: "dashbar"
8284 anchors.bottom: parent.bottom
8385 anchors.left: parent.left
8486 anchors.right: parent.right
Dash/DashContent.qml+5−16
@@ -28,6 +28,8 @@ Item {
2828 property real contentProgress: Math.max(0, Math.min(dashContentList.contentX / (dashContentList.contentWidth - dashContentList.width), units.dp(1)))
2929 property alias currentIndex: dashContentList.currentIndex
3030
31+ property LensDelegateMapper lensMapper : LensDelegateMapper {}
32+
3133 signal movementStarted()
3234 signal movementEnded()
3335 signal contentFlickStarted()
@@ -79,14 +81,6 @@ Item {
7981 }
8082 }
8183
82− property var lensDelegateMapping: {"mockmusic.lens": "DashMusic.qml",
83− "applications.lens": "DashApps.qml",
84− "home.lens": "DashHome.qml",
85− "mockvideos.lens": "DashVideos.qml",
86− "people.lens": "DashPeople.qml",
87− }
88− property string genericLens: "GenericLensView.qml"
89−
9084 ListView {
9185 id: dashContentList
9286 objectName: "dashContentList"
@@ -121,14 +115,7 @@ Item {
121115 width: ListView.view.width
122116 height: ListView.view.height
123117 asynchronous: true
124− source: {
125− var customLens = lensDelegateMapping[lens.id]
126− if (customLens) {
127− return customLens
128− } else {
129− return genericLens
130− }
131− }
118+ source: lensMapper.map(lens.id)
132119 onLoaded: {
133120 item.lens = Qt.binding(function() { return lens })
134121 item.isCurrent = Qt.binding(function() { return ListView.isCurrentItem })
@@ -150,6 +137,8 @@ Item {
150137 }
151138 }
152139 }
140+
141+ Component.onDestruction: active = false
153142 }
154143 }
155144}
Dash/DashMusic.qml+8−1
@@ -23,6 +23,13 @@ import "Music"
2323LensView {
2424 id: lensView
2525
26+ property var categoryNames: [
27+ i18n.tr("Featured"),
28+ i18n.tr("Recent"),
29+ i18n.tr("New Releases"),
30+ i18n.tr("Top Charting")
31+ ]
32+
2633 onIsCurrentChanged: {
2734 pageHeader.resetSearch();
2835 }
@@ -84,7 +91,7 @@ LensView {
8491 sectionProperty: "name"
8592 sectionDelegate: ListItems.Header {
8693 width: categoryView.width
87− text: section
94+ text: i18n.tr(section)
8895 }
8996 pageHeader: PageHeader {
9097 id: pageHeader
Dash/DashPeople.qml+8−1
@@ -27,6 +27,13 @@ LensView {
2727 id: lensView
2828 property alias previewShown: previewLoader.onScreen
2929
30+ property var categoryNames: [
31+ i18n.tr("Favourites"),
32+ i18n.tr("Recently in touch"),
33+ i18n.tr("New Contacts"),
34+ i18n.tr("A-Z")
35+ ]
36+
3037 onIsCurrentChanged: {
3138 pageHeader.resetSearch();
3239 }
@@ -108,7 +115,7 @@ LensView {
108115 sectionProperty: "name"
109116 sectionDelegate: ListItems.Header {
110117 width: categoryView.width
111− text: section
118+ text: i18n.tr(section)
112119 }
113120 pageHeader: PageHeader {
114121 id: pageHeader
Dash/DashVideos.qml+8−1
@@ -24,6 +24,13 @@ LensView {
2424 id: lensView
2525 property alias previewShown: previewLoader.onScreen
2626
27+ property var categoryNames: [
28+ i18n.tr("Featured"),
29+ i18n.tr("Recent"),
30+ i18n.tr("New Releases"),
31+ i18n.tr("Popular Online")
32+ ]
33+
2734 onIsCurrentChanged: {
2835 pageHeader.resetSearch();
2936 }
@@ -139,7 +146,7 @@ LensView {
139146 sectionProperty: "name"
140147 sectionDelegate: ListItems.Header {
141148 width: categoryView.width
142− text: section
149+ text: i18n.tr(section)
143150 }
144151
145152 pageHeader: PageHeader {
Dash/LensDelegateMapper.qmlnew file+35
@@ -0,0 +1,35 @@
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+
19+QtObject {
20+ property var lensDelegateMapping: {"mockmusic.lens": "DashMusic.qml",
21+ "applications.lens": "DashApps.qml",
22+ "home.lens": "DashHome.qml",
23+ "mockvideos.lens": "DashVideos.qml",
24+ "people.lens": "DashPeople.qml",
25+ }
26+ property string genericLens: "GenericLensView.qml"
27+
28+ function map(lensId) {
29+ var customLens = lensDelegateMapping[lensId]
30+ if (customLens != undefined) {
31+ return customLens
32+ }
33+ return genericLens
34+ }
35+}
Dash/Video/VideoPreview.qml+3−3
@@ -95,7 +95,7 @@ DashPreview {
9595 color: "white"
9696 horizontalAlignment: Text.AlignRight
9797 width: parent.firstColWidth
98− text: "Directed by:"
98+ text: i18n.tr("Directed by:")
9999 style: Text.Raised
100100 styleColor: "black"
101101 }
@@ -118,7 +118,7 @@ DashPreview {
118118 horizontalAlignment: Text.AlignRight
119119 color: "white"
120120 width: parent.firstColWidth
121− text: "Starring:"
121+ text: i18n.tr("Starring:")
122122 style: Text.Raised
123123 styleColor: "black"
124124 }
@@ -141,7 +141,7 @@ DashPreview {
141141 horizontalAlignment: Text.AlignRight
142142 color: "white"
143143 width: parent.firstColWidth
144− text: "Author:"
144+ text: i18n.tr("Author:")
145145 style: Text.Raised
146146 styleColor: "black"
147147 }
Greeter/GreeterContent.qml+3−1
@@ -73,7 +73,9 @@ MouseArea {
7373 width: units.gu(29)
7474 height: parent.height
7575
76− source: greeter.multiUser ? "LoginList.qml" : ""
76+ // TODO: Once we have a system API for determining which mode we are
77+ // in, tablet/phone/desktop, that should be used instead of narrowMode.
78+ source: greeter.narrowMode ? "" : "LoginList.qml"
7779
7880 onLoaded: {
7981 item.currentIndex = greeterContentLoader.currentIndex
Greeter/Lockscreen.qmlnew file+149
@@ -0,0 +1,149 @@
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 LightDM 0.1 as LightDM
21+
22+Showable {
23+ id: root
24+
25+ // Determine if a numeric or alphanumeric pad is used.
26+ property bool alphaNumeric: false
27+
28+ // Placeholder text
29+ property string placeholderText: ""
30+
31+ // In case the Lockscreen can show a greeter message, this is the username
32+ property string username: ""
33+
34+ // As the numeric PIN pad doesn't have a OK button by design, we need to auto-confirm on a certain length.
35+ // This is ignored by the alphaNumeric lockscreen as that one is confirmed with pressing enter on the OSK.
36+ property int pinLength: 4
37+
38+ property url background: ""
39+
40+ signal unlocked()
41+ signal cancel()
42+ signal emergencyCall()
43+
44+ function reset() {
45+ pinPadLoader.resetting = true;
46+ pinPadLoader.resetting = false;
47+ }
48+
49+ Image {
50+ anchors.fill: parent
51+ source: root.required ? root.background : ""
52+ }
53+
54+ MouseArea {
55+ anchors.fill: root
56+ }
57+
58+ Loader {
59+ id: pinPadLoader
60+ objectName: "pinPadLoader"
61+ anchors {
62+ left: parent.left
63+ right: parent.right
64+ verticalCenter: parent.verticalCenter
65+ verticalCenterOffset: root.alphaNumeric ? -units.gu(10) : 0
66+ }
67+ property bool resetting: false
68+
69+ source: (!resetting && root.required) ? (root.alphaNumeric ? "PassphraseLockscreen.qml" : "PinLockscreen.qml") : ""
70+
71+ Connections {
72+ target: pinPadLoader.item
73+
74+ onEntered: {
75+ LightDM.Greeter.respond(passphrase);
76+ }
77+
78+ onCancel: {
79+ root.cancel()
80+ }
81+ }
82+
83+ Binding {
84+ target: pinPadLoader.item
85+ property: "pinLength"
86+ value: root.pinLength
87+ }
88+ Binding {
89+ target: pinPadLoader.item
90+ property: "placeholderText"
91+ value: root.placeholderText
92+ }
93+ Binding {
94+ target: pinPadLoader.item
95+ property: "username"
96+ value: root.username
97+ }
98+ }
99+
100+ Column {
101+ anchors {
102+ left: parent.left
103+ top: pinPadLoader.bottom
104+ topMargin: units.gu(4)
105+ right: parent.right
106+ bottom: parent.bottom
107+ }
108+ spacing: units.gu(1)
109+
110+ Icon {
111+ objectName: "emergencyCallIcon"
112+ height: units.gu(3)
113+ width: height
114+ anchors.horizontalCenter: parent.horizontalCenter
115+ name: "phone-app-call-symbolic"
116+ color: "white"
117+ opacity: 0.9
118+
119+ MouseArea {
120+ anchors.fill: parent
121+ onClicked: root.emergencyCall()
122+ }
123+ }
124+
125+ Label {
126+ text: i18n.tr("Emergency call")
127+ color: "white"
128+ opacity: 0.9
129+ fontSize: "medium"
130+ anchors.horizontalCenter: parent.horizontalCenter
131+ }
132+ }
133+
134+ Connections {
135+ target: LightDM.Greeter
136+
137+ onAuthenticationComplete: {
138+ if (LightDM.Greeter.promptless) {
139+ return;
140+ }
141+ if (LightDM.Greeter.authenticated) {
142+ root.unlocked();
143+ pinPadLoader.item.clear(false);
144+ } else {
145+ pinPadLoader.item.clear(true);
146+ }
147+ }
148+ }
149+}
Greeter/LoginList.qml+3−23
@@ -17,6 +17,7 @@
1717import QtQuick 2.0
1818import Ubuntu.Components 0.1
1919import LightDM 0.1 as LightDM
20+import "../Components"
2021
2122Item {
2223 id: root
@@ -218,30 +219,9 @@ Item {
218219 source: "graphics/icon_arrow.png"
219220 }
220221
221− SequentialAnimation {
222+ WrongPasswordAnimation {
222223 id: wrongPasswordAnimation
223− NumberAnimation {
224− target: passwordInput
225− property: "anchors.horizontalCenterOffset"
226− duration: 50
227− easing.type: Easing.InQuad
228− to: units.gu(2)
229− }
230− NumberAnimation {
231− target: passwordInput
232− property: "anchors.horizontalCenterOffset"
233− duration: 100
234− easing.type: Easing.InOutQuad
235− to: -units.gu(2)
236− }
237− NumberAnimation {
238− target: passwordInput
239− easing.type: Easing.OutElastic
240− properties: "anchors.horizontalCenterOffset"
241− to: 0
242− duration: 400
243− easing.overshoot: units.gu(2)
244− }
224+ target: passwordInput
245225 }
246226
247227 Connections {
Greeter/PassphraseLockscreen.qmlnew file+87
@@ -0,0 +1,87 @@
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+Item {
22+ id: root
23+ height: highlightItem.height
24+
25+ property alias placeholderText: pinentryField.placeholderText
26+ property string username: ""
27+
28+ signal entered(string passphrase)
29+ signal cancel()
30+
31+ function clear(playAnimation) {
32+ pinentryField.text = "";
33+ if (playAnimation) {
34+ wrongPasswordAnimation.start();
35+ } else {
36+ pinentryField.focus = false
37+ }
38+ }
39+
40+ Rectangle {
41+ id: highlightItem
42+ width: units.gu(32)
43+ height: units.gu(10)
44+ anchors.centerIn: parent
45+ color: Qt.rgba(0.1, 0.1, 0.1, 0.4)
46+ border.color: Qt.rgba(0.4, 0.4, 0.4, 0.4)
47+ border.width: units.dp(1)
48+ radius: units.gu(1.5)
49+ antialiasing: true
50+
51+ Label {
52+ objectName: "greeterLabel"
53+ anchors {
54+ left: parent.left
55+ top: parent.top
56+ right: parent.right
57+ margins: units.gu(1.5)
58+ }
59+ text: root.username.length > 0 ? i18n.tr("Hello %1").arg(root.username) : i18n.tr("Hello")
60+ color: "white"
61+ }
62+
63+ TextField {
64+ id: pinentryField
65+ objectName: "pinentryField"
66+ anchors {
67+ horizontalCenter: parent.horizontalCenter
68+ bottom: parent.bottom
69+ margins: units.gu(1)
70+ }
71+ height: units.gu(4.5)
72+ width: parent.width - units.gu(2)
73+ echoMode: TextInput.Password
74+ opacity: 0.9
75+ hasClearButton: false
76+
77+ onAccepted: {
78+ root.entered(pinentryField.text);
79+ }
80+ }
81+ }
82+
83+ WrongPasswordAnimation {
84+ id: wrongPasswordAnimation
85+ target: pinentryField
86+ }
87+}
Greeter/PinLockscreen.qmlnew file+111
@@ -0,0 +1,111 @@
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+Column {
22+ id: root
23+ anchors.centerIn: parent
24+ spacing: units.gu(2.5)
25+
26+ property alias placeholderText: pinentryField.placeholderText
27+ property int padWidth: units.gu(32)
28+ property int pinLength: 4
29+
30+ signal entered(string passphrase)
31+ signal cancel()
32+
33+ function clear(playAnimation) {
34+ pinentryField.text = "";
35+ if (playAnimation) {
36+ wrongPasswordAnimation.start();
37+ }
38+ }
39+
40+ TextField {
41+ id: pinentryField
42+ objectName: "pinentryField"
43+ anchors.horizontalCenter: parent.horizontalCenter
44+ width: units.gu(32)
45+ height: units.gu(5)
46+ echoMode: TextInput.Password
47+ font.pixelSize: units.dp(44)
48+ color: "white"
49+ opacity: 0.9
50+ hasClearButton: false
51+ horizontalAlignment: Text.AlignHCenter
52+
53+ onTextChanged: {
54+ if (pinentryField.text.length === root.pinLength) {
55+ root.entered(pinentryField.text);
56+ }
57+ }
58+
59+ // Using a MouseArea to eat clicks. We don't want to disable the TextField for styling reasons
60+ MouseArea {
61+ anchors.fill: parent
62+ }
63+ }
64+
65+ Grid {
66+ anchors {
67+ left: parent.left
68+ right: parent.right
69+ margins: (parent.width - root.padWidth) / 2
70+ }
71+
72+ columns: 3
73+ spacing: units.gu(1)
74+
75+ Repeater {
76+ model: 9
77+
78+ PinPadButton {
79+ objectName: "pinPadButton" + (index + 1)
80+ text: index + 1
81+
82+ onClicked: {
83+ pinentryField.text = pinentryField.text + text
84+ }
85+ }
86+ }
87+
88+ PinPadButton {
89+ objectName: "pinPadButtonBack"
90+ iconName: "back"
91+ onClicked: root.cancel();
92+
93+ }
94+ PinPadButton {
95+ objectName: "pinPadButton0"
96+ text: "0"
97+ onClicked: pinentryField.text = pinentryField.text + text
98+
99+ }
100+ PinPadButton {
101+ objectName: "pinPadButtonErase"
102+ iconName: "erase"
103+ onClicked: pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1)
104+ }
105+ }
106+
107+ WrongPasswordAnimation {
108+ id: wrongPasswordAnimation
109+ target: pinentryField
110+ }
111+}
Greeter/PinPadButton.qmlnew file+59
@@ -0,0 +1,59 @@
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+UbuntuShape {
21+ id: root
22+ width: units.gu(10)
23+ height: units.gu(7)
24+ radius: "medium"
25+
26+ property alias text: label.text
27+ property alias iconName: icon.name
28+
29+ signal clicked()
30+
31+ Behavior on color {
32+ ColorAnimation { duration: 100 }
33+ }
34+
35+ Label {
36+ id: label
37+ anchors.centerIn: parent
38+ color: "white"
39+ fontSize: "x-large"
40+ font.weight: Font.Light
41+ opacity: 0.9
42+ }
43+
44+ Icon {
45+ id: icon
46+ height: units.gu(3)
47+ width: height
48+ anchors.centerIn: parent
49+ color: "white"
50+ opacity: 0.9
51+ }
52+
53+ MouseArea {
54+ anchors.fill: parent
55+ onClicked: root.clicked()
56+ onPressed: root.color = Qt.rgba(0, 0, 0, 0.3)
57+ onReleased: root.color = Qt.rgba(0, 0, 0, 0)
58+ }
59+}
Launcher/Launcher.qml+16−5
@@ -188,18 +188,29 @@ Item {
188188
189189 // values to be tweaked and later removed from here and set in stone as defaults
190190 // once we are confident it's all good.
191− maxDeviation: units.gu(1.5)
191+ maxDeviation: units.gu(1)
192192 wideningAngle: 30
193− distanceThreshold: units.gu(4)
193+ distanceThreshold: units.gu(3)
194+ minSpeed: units.gu(5)
194195
195196 enabled: root.available && root.state !== "visible"
196197 width: root.dragAreaWidth
197198 height: root.height
198199
199200 onTouchXChanged: {
200− if (dragging) {
201− panel.x = Math.min(0, touchX - panel.width);
202− }
201+ if (status !== DirectionalDragArea.Recognized)
202+ return;
203+
204+ // When the gesture finally gets recognized, the finger will likely be
205+ // reasonably far from the edge. If we made the panel immediately
206+ // follow the finger position it would be visually unpleasant as it
207+ // would appear right next to the user's finger out of nowhere.
208+ // Instead, we make the panel go towards the user's finger in several
209+ // steps. ie., in an animated way.
210+ var targetPanelX = Math.min(0, touchX - panel.width)
211+ var delta = targetPanelX - panel.x
212+ // the trick is not to go all the way (1.0) as it would cause a sudden jump
213+ panel.x += 0.4 * delta
203214 }
204215
205216 onDraggingChanged: {
Panel/SearchIndicator.qml+1−1
@@ -23,7 +23,7 @@ Item {
2323 width: units.gu(9)
2424 height: units.gu(3)
2525
26− property string headerText: "Search"
26+ property string headerText: i18n.tr("Search")
2727
2828 signal clicked
2929
Shell.qml+60−24
@@ -67,7 +67,7 @@ FocusScope {
6767 }
6868
6969 readonly property bool fullscreenMode: {
70− if (greeter.shown) {
70+ if (greeter.shown || lockscreen.shown) {
7171 return false;
7272 } else if (mainStage.usingScreenshots) { // Window Manager animating so want to re-evaluate fullscreen mode
7373 return mainStage.switchingFromFullscreenToFullscreen;
@@ -124,7 +124,6 @@ FocusScope {
124124
125125 Item {
126126 id: underlay
127−
128127 anchors.fill: parent
129128 visible: !(panel.indicators.fullyOpened && shell.width <= panel.indicatorsMenuWidth)
130129 && (stages.fullyHidden
@@ -148,7 +147,7 @@ FocusScope {
148147 Dash {
149148 id: dash
150149
151− available: !greeter.shown
150+ available: !greeter.shown && !lockscreen.shown
152151 hides: [stages, launcher, panel.indicators]
153152 shown: disappearingAnimationProgress !== 1.0
154153 enabled: disappearingAnimationProgress === 0.0
@@ -219,26 +218,18 @@ FocusScope {
219218 Connections {
220219 target: shell.applicationManager
221220 onMainStageFocusedApplicationChanged: {
222− handleFocusedApplicationChange(mainStage, shell.applicationManager.mainStageFocusedApplication);
221+ if (shell.applicationManager.mainStageFocusedApplication) {
222+ mainStage.show();
223+ stages.show();
224+ }
223225 }
224226 onSideStageFocusedApplicationChanged: {
225− handleFocusedApplicationChange(sideStage, shell.applicationManager.sideStageFocusedApplication);
226− }
227− ignoreUnknownSignals: true
228−
229− function handleFocusedApplicationChange(stage, application) {
230− if (stages.shown) {
231− if (application) {
232− stage.show();
233− stages.show();
234− }
235− } else {
236− // focus changed while shell in foreground, ensure app remains unfocused
237− if (application) {
238− shell.applicationManager.unfocusCurrentApplication();
239− }
227+ if (shell.applicationManager.sideStageFocusedApplication) {
228+ sideStage.show();
229+ stages.show();
240230 }
241231 }
232+ ignoreUnknownSignals: true
242233 }
243234
244235
@@ -301,7 +292,7 @@ FocusScope {
301292 && sideStage[sideStageRevealer.boundProperty] == sideStageRevealer.openedValue
302293 shouldUseScreenshots: !fullyShown || mainStage.usingScreenshots || sideStageRevealer.pressed
303294
304− available: !greeter.shown && enabled
295+ available: !greeter.shown && !lockscreen.shown && enabled
305296 hides: [launcher, panel.indicators]
306297 shown: false
307298 showAnimation: StandardAnimation { property: "x"; duration: 350; to: sideStageRevealer.openedValue; easing.type: Easing.OutQuint }
@@ -352,6 +343,46 @@ FocusScope {
352343 orientation: Qt.Horizontal
353344 }
354345
346+ Lockscreen {
347+ id: lockscreen
348+ hides: [launcher, panel.indicators, hud]
349+ shown: false
350+ enabled: true
351+ showAnimation: StandardAnimation { property: "opacity"; to: 1 }
352+ hideAnimation: StandardAnimation { property: "opacity"; to: 0 }
353+ y: panel.panelHeight
354+ x: required ? 0 : - width
355+ width: parent.width
356+ height: parent.height - panel.panelHeight
357+ background: shell.background
358+
359+ onUnlocked: lockscreen.hide()
360+ onCancel: greeter.show()
361+
362+ Component.onCompleted: {
363+ if (LightDM.Users.count == 1) {
364+ LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole))
365+ }
366+ }
367+ }
368+
369+ Connections {
370+ target: LightDM.Greeter
371+
372+ onShowPrompt: {
373+ if (LightDM.Users.count == 1) {
374+ // TODO: There's no better way for now to determine if its a PIN or a passphrase.
375+ if (text == "PIN") {
376+ lockscreen.alphaNumeric = false
377+ } else {
378+ lockscreen.alphaNumeric = true
379+ }
380+ lockscreen.placeholderText = i18n.tr("Please enter %1:").arg(text);
381+ lockscreen.show();
382+ }
383+ }
384+ }
385+
355386 Greeter {
356387 id: greeter
357388
@@ -360,7 +391,6 @@ FocusScope {
360391 shown: true
361392 showAnimation: StandardAnimation { property: "x"; to: greeterRevealer.openedValue }
362393 hideAnimation: StandardAnimation { property: "x"; to: greeterRevealer.closedValue }
363−
364394 y: panel.panelHeight
365395 width: parent.width
366396 height: parent.height - panel.panelHeight
@@ -370,6 +400,12 @@ FocusScope {
370400
371401 onShownChanged: {
372402 if (shown) {
403+ lockscreen.reset();
404+ // If there is only one user, we start authenticating with that one here.
405+ // If there are more users, the Greeter will handle that
406+ if (LightDM.Users.count == 1) {
407+ LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
408+ }
373409 greeter.forceActiveFocus();
374410 // FIXME: *FocusedApplication are not updated when unfocused, hence the need to check whether
375411 // the stage was actually shown
@@ -397,7 +433,7 @@ FocusScope {
397433
398434 InputFilterArea {
399435 anchors.fill: parent
400− blockInput: greeter.shown
436+ blockInput: greeter.shown || lockscreen.shown
401437 }
402438
403439 Revealer {
@@ -426,7 +462,7 @@ FocusScope {
426462 hides: [launcher]
427463 }
428464 fullscreenMode: shell.fullscreenMode
429− searchVisible: !greeter.shown
465+ searchVisible: !greeter.shown && !lockscreen.shown
430466
431467 InputFilterArea {
432468 anchors.fill: parent
@@ -440,7 +476,7 @@ FocusScope {
440476 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
441477 height: parent.height
442478
443− available: !greeter.shown && !panel.indicators.shown
479+ available: !greeter.shown && !panel.indicators.shown && !lockscreen.shown
444480 shown: false
445481 showAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: 0; easing.type: Easing.Linear }
446482 hideAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: hudRevealer.closedValue; easing.type: Easing.Linear }
build+10−9
@@ -37,12 +37,13 @@ BUILD_TYPE="debug"
3737[ $# -eq 1 ] && BUILD_TYPE="$1"
3838
3939install_dependencies() {
40− sudo add-apt-repository -y ppa:phablet-team/desktop-deps || exit 1
41− sudo add-apt-repository -y ppa:canonical-qt5-edgers/qt5-proper || exit 2;
42− sudo add-apt-repository -y ppa:ubuntu-sdk-team/ppa || exit 3
40+ . /etc/lsb-release
41+ [ -f /etc/apt/sources.list.d/phablet-team-desktop-deps-${DISTRIB_CODENAME}.list ] || sudo add-apt-repository ppa:phablet-team/desktop-deps || exit 1
42+ [ -f /etc/apt/sources.list.d/canonical-qt5-edgers-qt5-proper-${DISTRIB_CODENAME}.list ] || sudo add-apt-repository ppa:canonical-qt5-edgers/qt5-proper || exit 2;
43+ [ -f /etc/apt/sources.list.d/ubuntu-sdk-team-ppa-${DISTRIB_CODENAME}.list ] || sudo add-apt-repository ppa:ubuntu-sdk-team/ppa || exit 3
4344 sudo apt-get update || exit 4
44− echo "Installing dependencies.."
45− sudo apt-get install -y qtdeclarative5-ubuntu-ui-toolkit-plugin qtdeclarative5-dee-plugin indicators-client indicators-client-plugin-* qtbase5-dev qtbase5-private-dev qtdeclarative5-dev qtdeclarative5-dev-tools qtdeclarative5-test-plugin libdee-qt5-dev libpulse-dev qtdeclarative5-xmllistmodel-plugin unity-lens-mock demo-assets ubuntu-mobile-icons || exit 6
45+ echo "Installing Unity 8 dependencies.."
46+ sudo apt-get install qtdeclarative5-ubuntu-ui-toolkit-plugin qtdeclarative5-dee-plugin indicators-client indicators-client-plugin-* qtbase5-dev qtbase5-private-dev qtdeclarative5-dev qtdeclarative5-dev-tools qtdeclarative5-test-plugin libdee-qt5-dev libpulse-dev qtdeclarative5-xmllistmodel-plugin unity-lens-mock demo-assets ubuntu-mobile-icons || exit 5
4647}
4748
4849if [ -f "/usr/bin/ninja" ] ; then
@@ -55,13 +56,13 @@ fi
5556
5657if $SETUP; then
5758 install_dependencies
58− ./build_unity --setup || exit 6
59− ./build_unity
59+ ./build_unity --setup || exit 1$?
60+ ./build_unity || exit 1$?
6061else
6162 if $CLEAN; then rm -rf builddir; fi
6263 mkdir -p builddir
6364 cd builddir
64− PKG_CONFIG_PATH=$UNITY_BUILD_DIR/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. ${GENERATOR}
65− ${BUILD_COMMAND}
65+ PKG_CONFIG_PATH=$UNITY_BUILD_DIR/lib/pkgconfig/:$PKG_CONFIG_PATH cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. ${GENERATOR} || exit 6
66+ ${BUILD_COMMAND} || exit 7
6667fi
6768
build_unity+31−51
@@ -11,7 +11,6 @@ LENSES="applications mockmusic mockvideos"
1111# verified working revisions
1212LIBUNITY_REV=215
1313UNITY_REV=3260
14−PEOPLE_LENS_REV=74
1514HUD_REV=252
1615
1716usage() {
@@ -39,52 +38,47 @@ do
3938 shift
4039done
4140
42−install_dependencies() {
41+install_utils() {
42+ echo "Installing build utilities.."
43+ sudo apt-get install devscripts equivs || exit 4
44+}
45+
46+mk_build_deps() {
4347 echo "Installing build dependencies.."
44− sudo apt-get build-dep -y libunity unity || exit 4
45− sudo apt-get install -y libgtest-dev gnome-common libfolks-dev libtelepathy-glib-dev || exit 5
46− # HUD dependencies
47− sudo apt-get install -y bamfdaemon debhelper dh-autoreconf gir1.2-dee-1.0 gnome-common gnome-doc-utils gobject-introspection gtk-doc-tools indicator-application indicator-appmenu indicator-appmenu-tools intltool libappindicator3-dev libbamf3-dev libdbusmenu-glib-dev libdbusmenu-gtk3-dev libdbusmenu-jsonloader-dev libdbustest1-dev libdee-dev libgirepository1.0-dev libgtk-3-dev libncurses5-dev libreadline-dev libsqlite3-dev metacity sqlite3 valac-0.18 libpocketsphinx-dev libsphinxbase-dev || exit 6
48+ cd $TARGET_DIR
49+ sudo mk-build-deps -B -i $TARGET_DIR/libunity/debian/control || exit 5
50+ sudo mk-build-deps -B -i $TARGET_DIR/unity/debian/control || exit 6
51+ sudo mk-build-deps -B -i $TARGET_DIR/hud/debian/control || exit 7
4852}
4953
5054branch_libunity() {
5155 echo "Branching libunity.."
52− bzr branch lp:libunity/phablet $TARGET_DIR/libunity
56+ bzr branch lp:libunity/phablet $TARGET_DIR/libunity || exit 8
5357}
5458
5559branch_unity() {
5660 echo "Branching Unity.."
57− bzr branch lp:unity/phablet-mods $TARGET_DIR/unity
58−}
59−
60−branch_people_lens() {
61− echo "Branching people lens.."
62− bzr branch lp:unity-lens-people $TARGET_DIR/people_lens
61+ bzr branch lp:unity/phablet-mods $TARGET_DIR/unity || exit 9
6362}
6463
6564branch_hud() {
6665 echo "Branching hud.."
67− bzr branch lp:hud $TARGET_DIR/hud
66+ bzr branch lp:hud $TARGET_DIR/hud || exit 10
6867}
6968
7069update_unity() {
7170 echo "Updating Unity.."
72− bzr pull -d $TARGET_DIR/unity
71+ bzr pull -d $TARGET_DIR/unity || exit 11
7372}
7473
7574update_libunity() {
7675 echo "Updating libunity.."
77− bzr pull -d $TARGET_DIR/libunity
78−}
79−
80−update_people_lens() {
81− echo "Updating people lens.."
82− bzr pull -d $TARGET_DIR/people_lens
76+ bzr pull -d $TARGET_DIR/libunity || exit 12
8377}
8478
8579update_hud() {
8680 echo "Updating hud"
87− bzr pull -d $TARGET_DIR/hud
81+ bzr pull -d $TARGET_DIR/hud || exit 13
8882}
8983
9084compile_libunity() {
@@ -93,12 +87,15 @@ compile_libunity() {
9387 if $CLEAN; then bzr clean-tree -d $TARGET_DIR/libunity --quiet --unknown --ignored --force; fi
9488
9589 cd $TARGET_DIR/libunity
96− bzr revert --quiet -r $LIBUNITY_REV || exit 8
90+ bzr revert --quiet -r $LIBUNITY_REV || exit 14
91+
92+ mkdir $TARGET_DIR/libunity/build
93+ cd $TARGET_DIR/libunity/build
9794
98− ./autogen.sh --prefix $BUILD_DIR --disable-debug
95+ ../autogen.sh --prefix $BUILD_DIR --disable-debug || exit 15
9996
10097 echo "Building libunity and installing in " $BUILD_DIR
101− make -j$NUM_JOBS install
98+ make -j$NUM_JOBS install || exit 16
10299
103100}
104101
@@ -108,32 +105,16 @@ compile_unity_core() {
108105 if $CLEAN; then bzr clean-tree -d $TARGET_DIR/unity --quiet --unknown --ignored --force; fi
109106
110107 cd $TARGET_DIR/unity
111− bzr revert --quiet -r $UNITY_REV || exit 9
108+ bzr revert --quiet -r $UNITY_REV || exit 17
112109
113110 mkdir $TARGET_DIR/unity/build
114111 cd $TARGET_DIR/unity/build
115112
116− PKG_CONFIG_PATH=$BUILD_DIR/lib/pkgconfig:$PKG_CONFIG_PATH cmake $TARGET_DIR/unity -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$BUILD_DIR -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON
113+ PKG_CONFIG_PATH=$BUILD_DIR/lib/pkgconfig:$PKG_CONFIG_PATH cmake $TARGET_DIR/unity -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$BUILD_DIR -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON || exit 18
117114
118115 echo "Building UnityCore and installing in " $BUILD_DIR
119116 cd UnityCore
120− make -j$NUM_JOBS
121− make install
122−
123−}
124−
125−compile_people_lens() {
126− echo "Configuring people lens.."
127−
128− if $CLEAN; then bzr clean-tree -d $TARGET_DIR/people_lens --quiet --unknown --ignored --force; fi
129−
130− cd $TARGET_DIR/people_lens
131− bzr revert --quiet -r $PEOPLE_LENS_REV || exit 10
132−
133− PKG_CONFIG_PATH=$BUILD_DIR/lib/pkgconfig:$PKG_CONFIG_PATH ./autogen.sh --prefix $BUILD_DIR --enable-localinstall
134−
135− echo "Building people lens and installing in " $BUILD_DIR
136− MAINTAINER_VALAFLAGS="--vapidir=${BUILD_DIR}/share/vala/vapi" make -j$NUM_JOBS install
117+ make -j$NUM_JOBS install || exit 19
137118
138119}
139120
@@ -143,15 +124,15 @@ compile_hud() {
143124 if $CLEAN; then bzr clean-tree -d $TARGET_DIR/hud --quiet --unknown --ignored --force; fi
144125
145126 cd $TARGET_DIR/hud
146− bzr revert -r $HUD_REV || exit 11
127+ bzr revert -r $HUD_REV || exit 20
147128
148129 mkdir $TARGET_DIR/hud/build
149130 cd $TARGET_DIR/hud/build
150131
151− cmake $TARGET_DIR/hud/ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$BUILD_DIR -DCMAKE_INSTALL_LIBDIR=lib -DLOCAL_INSTALL=ON -DENABLE_TESTS=OFF
132+ cmake $TARGET_DIR/hud/ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$BUILD_DIR -DCMAKE_INSTALL_LIBDIR=lib -DLOCAL_INSTALL=ON -DENABLE_TESTS=OFF || exit 21
152133
153134 echo "Building hud and installing in " $BUILD_DIR
154− make install
135+ make install || exit 22
155136
156137}
157138
@@ -165,23 +146,22 @@ link_lenses() {
165146
166147if $SETUP; then
167148 echo "Setting up environment for building Unity.."
168− install_dependencies
149+ install_utils
169150 mkdir -p $TARGET_DIR
170151 branch_libunity
171152 branch_unity
172− branch_people_lens
173153 branch_hud
154+ mk_build_deps
174155elif $UPDATE; then
175156 update_libunity
176157 update_unity
177− update_people_lens
178158 update_hud
159+ mk_build_deps
179160else
180161 if $CLEAN; then rm -Rf $BUILD_DIR; fi
181162 mkdir -p $BUILD_DIR
182163 compile_libunity
183164 compile_unity_core
184− compile_people_lens
185165 compile_hud
186166 link_lenses
187167fi
plugins/LightDM/CMakeLists.txt+1−1
@@ -40,4 +40,4 @@ install(TARGETS LightDM-qml
4040
4141install(FILES qmldir
4242 DESTINATION ${SHELL_APP_DIR}/plugins/LightDM
43− )
43+ )
plugins/Ubuntu/Gestures/AxisVelocityCalculator.cpp+1−1
@@ -85,7 +85,7 @@ void AxisVelocityCalculator::processMovement(qreal movement)
8585
8686qreal AxisVelocityCalculator::calculate() const
8787{
88− if (numSamples() < 2) {
88+ if (numSamples() < MIN_SAMPLES_NEEDED) {
8989 return 0.0;
9090 }
9191
plugins/Ubuntu/Gestures/AxisVelocityCalculator.h+7−2
@@ -95,6 +95,13 @@ public:
9595 */
9696 Q_INVOKABLE void reset();
9797
98+ int numSamples() const;
99+
100+ /*
101+ The minimum amount of samples needed for a velocity calculation.
102+ */
103+ static const int MIN_SAMPLES_NEEDED = 2;
104+
98105 /*
99106 Maximum number of movement samples stored
100107 */
@@ -115,8 +122,6 @@ private:
115122 */
116123 void processMovement(qreal movement);
117124
118− int numSamples() const;
119−
120125 class Sample
121126 {
122127 public:
plugins/Ubuntu/Gestures/CMakeLists.txt+3
@@ -16,6 +16,9 @@ add_library(UbuntuGestureQml MODULE ${UbuntuGestureQml_SOURCES})
1616
1717qt5_use_modules(UbuntuGestureQml Core Quick)
1818
19+# So that Foo.cpp can #include "Foo.moc"
20+include_directories(${CMAKE_CURRENT_BINARY_DIR})
21+
1922# copy files into build directory for shadow builds
2023add_custom_target(UbuntuGestureQmlDirFile ALL
2124 COMMAND cp "${CMAKE_CURRENT_SOURCE_DIR}/qmldir" ${CMAKE_CURRENT_BINARY_DIR}
plugins/Ubuntu/Gestures/DirectionalDragArea.cpp+121
@@ -17,6 +17,25 @@
1717#include "DirectionalDragArea.h"
1818
1919#include <QtCore/qmath.h>
20+#include <QtCore/QTimer>
21+
22+// Essentially a QTimer wrapper
23+class RecognitionTimer : public UbuntuGestures::AbstractTimer
24+{
25+ Q_OBJECT
26+public:
27+ RecognitionTimer(QObject *parent) : UbuntuGestures::AbstractTimer(parent) {
28+ m_timer.setSingleShot(false);
29+ connect(&m_timer, &QTimer::timeout,
30+ this, &UbuntuGestures::AbstractTimer::timeout);
31+ }
32+ virtual int interval() const { return m_timer.interval(); }
33+ virtual void setInterval(int msecs) { m_timer.setInterval(msecs); }
34+ virtual void start() { m_timer.start(); UbuntuGestures::AbstractTimer::start(); }
35+ virtual void stop() { m_timer.stop(); UbuntuGestures::AbstractTimer::stop(); }
36+private:
37+ QTimer m_timer;
38+};
2039
2140DirectionalDragArea::DirectionalDragArea(QQuickItem *parent)
2241 : QQuickItem(parent)
@@ -26,7 +45,17 @@ DirectionalDragArea::DirectionalDragArea(QQuickItem *parent)
2645 , m_wideningAngle(0)
2746 , m_wideningFactor(0)
2847 , m_distanceThreshold(0)
48+ , m_minSpeed(0)
49+ , m_maxSilenceTime(200)
50+ , m_silenceTime(0)
51+ , m_numSamplesOnLastSpeedCheck(0)
52+ , m_recognitionTimer(0)
53+ , m_velocityCalculator(0)
2954{
55+ setRecognitionTimer(new RecognitionTimer(this));
56+ m_recognitionTimer->setInterval(60);
57+
58+ m_velocityCalculator = new AxisVelocityCalculator(this);
3059}
3160
3261DirectionalDragArea::Direction DirectionalDragArea::direction() const
@@ -73,6 +102,53 @@ void DirectionalDragArea::setDistanceThreshold(qreal value)
73102 }
74103}
75104
105+void DirectionalDragArea::setMinSpeed(qreal value)
106+{
107+ if (m_minSpeed != value) {
108+ m_minSpeed = value;
109+ Q_EMIT minSpeedChanged(value);
110+ }
111+}
112+
113+void DirectionalDragArea::setMaxSilenceTime(int value)
114+{
115+ if (m_maxSilenceTime != value) {
116+ m_maxSilenceTime = value;
117+ Q_EMIT maxSilenceTimeChanged(value);
118+ }
119+}
120+
121+void DirectionalDragArea::setRecognitionTimer(UbuntuGestures::AbstractTimer *timer)
122+{
123+ int interval = 0;
124+ bool timerWasRunning = false;
125+
126+ // can be null when called from the constructor
127+ if (m_recognitionTimer) {
128+ interval = m_recognitionTimer->interval();
129+ timerWasRunning = m_recognitionTimer->isRunning();
130+ if (m_recognitionTimer->parent() == this) {
131+ delete m_recognitionTimer;
132+ }
133+ }
134+
135+ m_recognitionTimer = timer;
136+ timer->setInterval(interval);
137+ connect(timer, &UbuntuGestures::AbstractTimer::timeout,
138+ this, &DirectionalDragArea::checkSpeed);
139+ if (timerWasRunning) {
140+ m_recognitionTimer->start();
141+ }
142+}
143+
144+void DirectionalDragArea::setAxisVelocityCalculator(AxisVelocityCalculator *newVelCalc)
145+{
146+ if (m_velocityCalculator->parent() == this)
147+ delete m_velocityCalculator;
148+
149+ m_velocityCalculator = newVelCalc;
150+}
151+
76152qreal DirectionalDragArea::distance() const
77153{
78154 if (directionIsHorizontal()) {
@@ -122,6 +198,10 @@ void DirectionalDragArea::touchEvent_absent(QTouchEvent *event)
122198 m_startPos = event->touchPoints()[0].pos();
123199 m_touchId = event->touchPoints()[0].id();
124200 m_dampedPos.reset(m_startPos);
201+ updateVelocityCalculator(m_startPos);
202+ m_velocityCalculator->reset();
203+ m_numSamplesOnLastSpeedCheck = 0;
204+ m_silenceTime = 0;
125205 setPreviousPos(m_startPos);
126206 setStatus(Undecided);
127207 }
@@ -148,6 +228,7 @@ void DirectionalDragArea::touchEvent_undecided(QTouchEvent *event)
148228 m_previousDampedPos.setX(m_dampedPos.x());
149229 m_previousDampedPos.setY(m_dampedPos.y());
150230 m_dampedPos.update(touchPos);
231+ updateVelocityCalculator(touchPos);
151232
152233 if (!pointInsideAllowedArea()) {
153234 setStatus(Rejected);
@@ -238,6 +319,29 @@ bool DirectionalDragArea::movedFarEnough(const QPointF &point) const
238319 return qFabs(point.y() - m_startPos.y()) > m_distanceThreshold;
239320}
240321
322+void DirectionalDragArea::checkSpeed()
323+{
324+ if (m_velocityCalculator->numSamples() >= AxisVelocityCalculator::MIN_SAMPLES_NEEDED) {
325+ qreal speed = qFabs(m_velocityCalculator->calculate());
326+ qreal minSpeedMsecs = m_minSpeed / 1000.0;
327+
328+ if (speed < minSpeedMsecs) {
329+ setStatus(Rejected);
330+ }
331+ }
332+
333+ if (m_velocityCalculator->numSamples() == m_numSamplesOnLastSpeedCheck) {
334+ m_silenceTime += m_recognitionTimer->interval();
335+
336+ if (m_silenceTime > m_maxSilenceTime) {
337+ setStatus(Rejected);
338+ }
339+ } else {
340+ m_silenceTime = 0;
341+ }
342+ m_numSamplesOnLastSpeedCheck = m_velocityCalculator->numSamples();
343+}
344+
241345void DirectionalDragArea::setStatus(DirectionalDragArea::Status newStatus)
242346{
243347 if (newStatus == m_status)
@@ -245,6 +349,10 @@ void DirectionalDragArea::setStatus(DirectionalDragArea::Status newStatus)
245349
246350 DirectionalDragArea::Status oldStatus = m_status;
247351
352+ if (oldStatus == Undecided) {
353+ m_recognitionTimer->stop();
354+ }
355+
248356 m_status = newStatus;
249357 Q_EMIT statusChanged(m_status);
250358
@@ -255,6 +363,7 @@ void DirectionalDragArea::setStatus(DirectionalDragArea::Status newStatus)
255363 }
256364 break;
257365 case Undecided:
366+ m_recognitionTimer->start();
258367 Q_EMIT draggingChanged(true);
259368 break;
260369 case Rejected:
@@ -288,6 +397,15 @@ void DirectionalDragArea::setPreviousPos(QPointF point)
288397 }
289398}
290399
400+void DirectionalDragArea::updateVelocityCalculator(QPointF point)
401+{
402+ if (directionIsHorizontal()) {
403+ m_velocityCalculator->setTrackedPosition(point.x());
404+ } else {
405+ m_velocityCalculator->setTrackedPosition(point.y());
406+ }
407+}
408+
291409bool DirectionalDragArea::directionIsHorizontal() const
292410{
293411 return m_direction == Leftwards || m_direction == Rightwards;
@@ -297,3 +415,6 @@ bool DirectionalDragArea::directionIsVertical() const
297415{
298416 return m_direction == Upwards || m_direction == Downwards;
299417}
418+
419+// Because we are defining a new QObject-based class (RecognitionTimer) here.
420+#include "DirectionalDragArea.moc"
plugins/Ubuntu/Gestures/DirectionalDragArea.h+60
@@ -18,9 +18,28 @@
1818#define DIRECTIONAL_DRAG_AREA_H
1919
2020#include <QtQuick/QQuickItem>
21+#include "AxisVelocityCalculator.h"
2122#include "UbuntuGesturesGlobal.h"
2223#include "Damper.h"
2324
25+namespace UbuntuGestures {
26+/* Defines an interface for a Timer. */
27+class UBUNTUGESTURES_EXPORT AbstractTimer : public QObject {
28+ Q_OBJECT
29+public:
30+ AbstractTimer(QObject *parent) : QObject(parent), m_isRunning(false) {}
31+ virtual int interval() const = 0;
32+ virtual void setInterval(int msecs) = 0;
33+ virtual void start() { m_isRunning = true; };
34+ virtual void stop() { m_isRunning = false; }
35+ bool isRunning() const { return m_isRunning; }
36+Q_SIGNALS:
37+ void timeout();
38+private:
39+ bool m_isRunning;
40+};
41+}
42+
2443/*
2544 An area that detects axis-aligned single-finger drag gestures
2645
@@ -74,6 +93,21 @@ class UBUNTUGESTURES_EXPORT DirectionalDragArea : public QQuickItem {
7493 Q_PROPERTY(qreal distanceThreshold READ distanceThreshold WRITE setDistanceThreshold
7594 NOTIFY distanceThresholdChanged)
7695
96+ // Minimum speed a gesture needs to have in order to be recognized as a
97+ // directional drag.
98+ // In pixels per second
99+ Q_PROPERTY(qreal minSpeed READ minSpeed WRITE setMinSpeed NOTIFY minSpeedChanged)
100+
101+ // A gesture will be rejected if more than maxSilenceTime milliseconds has
102+ // passed since we last got an input event from it (during Undecided state).
103+ //
104+ // Silence (i.e., lack of new input events) doesn't necessarily mean that the user's
105+ // finger is still (zero drag speed). In some cases the finger might be moving but
106+ // the driver's high noise filtering might cause those silence periods, specially
107+ // in the moments succeeding a press (talking about Galaxy Nexus here).
108+ Q_PROPERTY(int maxSilenceTime READ maxSilenceTime
109+ WRITE setMaxSilenceTime
110+ NOTIFY maxSilenceTimeChanged)
77111 //
78112 /////
79113
@@ -130,6 +164,20 @@ public:
130164 qreal distanceThreshold() const { return m_distanceThreshold; }
131165 void setDistanceThreshold(qreal value);
132166
167+ qreal minSpeed() const { return m_minSpeed; }
168+ void setMinSpeed(qreal value);
169+
170+ int maxSilenceTime() const { return m_maxSilenceTime; }
171+ void setMaxSilenceTime(int value);
172+
173+ // Replaces the existing Timer with the given one.
174+ //
175+ // Useful for providing a fake timer when testing.
176+ void setRecognitionTimer(UbuntuGestures::AbstractTimer *timer);
177+
178+ // Useful for testing, where a calculator with a fake time source can be supplied
179+ void setAxisVelocityCalculator(AxisVelocityCalculator *velCalc);
180+
133181Q_SIGNALS:
134182 void directionChanged(Direction direction);
135183 void statusChanged(Status value);
@@ -138,12 +186,17 @@ Q_SIGNALS:
138186 void maxDeviationChanged(qreal value);
139187 void wideningAngleChanged(qreal value);
140188 void distanceThresholdChanged(qreal value);
189+ void minSpeedChanged(qreal value);
190+ void maxSilenceTimeChanged(int value);
141191 void touchXChanged(qreal value);
142192 void touchYChanged(qreal value);
143193
144194protected:
145195 virtual void touchEvent(QTouchEvent *event);
146196
197+private Q_SLOTS:
198+ void checkSpeed();
199+
147200private:
148201 void touchEvent_absent(QTouchEvent *event);
149202 void touchEvent_undecided(QTouchEvent *event);
@@ -155,6 +208,7 @@ private:
155208 const QTouchEvent::TouchPoint *fetchTargetTouchPoint(QTouchEvent *event);
156209 void setStatus(Status newStatus);
157210 void setPreviousPos(QPointF point);
211+ void updateVelocityCalculator(QPointF point);
158212
159213 // convenience functions
160214 bool directionIsHorizontal() const;
@@ -175,6 +229,12 @@ private:
175229 qreal m_wideningAngle; // in degrees
176230 qreal m_wideningFactor; // it's tan(degreesToRadian(m_wideningAngle))
177231 qreal m_distanceThreshold;
232+ qreal m_minSpeed;
233+ int m_maxSilenceTime; // in milliseconds
234+ int m_silenceTime; // in milliseconds
235+ int m_numSamplesOnLastSpeedCheck;
236+ UbuntuGestures::AbstractTimer *m_recognitionTimer;
237+ AxisVelocityCalculator *m_velocityCalculator;
178238};
179239
180240#endif // DIRECTIONAL_DRAG_AREA_H
po/ar.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-04 18:45+0000\n"
12−"Last-Translator: Ibrahim Saed <ibraheem5000@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Arabic <ar@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-05 06:34+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr "فيديوهات رائجة على الإنترنت"
65133msgid "Home"
66134msgstr "الرئيسية"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "موسيقى"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "أشخاص"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "فيديوهات"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "التأكيد"
@@ -105,6 +221,10 @@ msgstr "الجهاز"
105221msgid "Flight mode"
106222msgstr "نمط الطيران"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "ابحث"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "عذراً، لا يوجد ما يطابق بحثك."
@@ -112,7 +232,3 @@ msgstr "عذراً، لا يوجد ما يطابق بحثك."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "الشاشة الرئيسية"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "ابحث"
po/az.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 19:34+0000\n"
12−"Last-Translator: Emin Mastizada <emin25@ovi.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 05:59+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Ev"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Musiqi"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "İnsanlar"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Videolar"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Təsdiqlə"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Axtar"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
@@ -112,7 +232,3 @@ msgstr "Bağışlayın, amma axtarışınıza heç bir nəticə uyğun gəlmir."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Əsas Ekran"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Axtar"
po/ca.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-03 11:50+0000\n"
12−"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-04 06:27+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr "Vídeos populars en línia"
65133msgid "Home"
66134msgstr "Inici"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Música"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Gent"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Vídeos"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Confirma"
@@ -105,6 +221,10 @@ msgstr "Dispositiu"
105221msgid "Flight mode"
106222msgstr "Mode d'avió"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Cerca"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "No hi ha res que coincideixi amb la cerca"
@@ -112,7 +232,3 @@ msgstr "No hi ha res que coincideixi amb la cerca"
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Pantalla d'inici"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Cerca"
po/de.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-04 08:17+0000\n"
12−"Last-Translator: Friedrich <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-05 06:34+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr "Beliebte Online-Videos"
65133msgid "Home"
66134msgstr "Start"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Musik"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Personen"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Videos"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Bestätigen"
@@ -105,6 +221,10 @@ msgstr "Gerät"
105221msgid "Flight mode"
106222msgstr "Flugmodus"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Suchen"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Entschuldigung, es wurden keine Treffer erzielt."
@@ -112,7 +232,3 @@ msgstr "Entschuldigung, es wurden keine Treffer erzielt."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Startseite"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Suchen"
po/el.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-28 10:04+0000\n"
12−"Last-Translator: Filippos Kolyvas <fkolyvas@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Greek <el@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Αρχή"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Μουσική"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Πρόσωπα"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Βίντεο"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Επιβεβαίωση"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Αναζήτηση"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να ταιριάζει στην αναζήτησή σας."
@@ -112,7 +232,3 @@ msgstr "Λυπούμαστε, δεν υπάρχει τίποτα που να τ
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Αρχική οθόνη"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Αναζήτηση"
po/en_AU.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 10:39+0000\n"
12−"Last-Translator: Jared Norris <jrnorris@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Home"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Music"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "People"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Videos"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Confirm"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Search"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Sorry, there is nothing that matches your search."
@@ -112,7 +232,3 @@ msgstr "Sorry, there is nothing that matches your search."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Home screen"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Search"
po/eo.po+127−11
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-28 20:03+0000\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Esperanto <eo@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr ""
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr ""
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr ""
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr ""
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr ""
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr ""
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -112,7 +232,3 @@ msgstr ""
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr ""
po/es.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-01 23:11+0000\n"
12−"Last-Translator: Adolfo Jayme Barrientos <fitoschido@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-02 06:31+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr "Vídeos populares en línea"
65133msgid "Home"
66134msgstr "Inicio"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Música"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Gente"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Vídeos"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Confirmar"
@@ -105,6 +221,10 @@ msgstr "Dispositivo"
105221msgid "Flight mode"
106222msgstr "Modo de vuelo"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Buscar"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "No hay nada que coincida con su búsqueda."
@@ -112,7 +232,3 @@ msgstr "No hay nada que coincida con su búsqueda."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Pantalla de inicio"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Buscar"
po/fi.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-03 08:52+0000\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-10 16:19+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"
17−"X-Launchpad-Export-Date: 2013-06-04 06:27+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr "Puhelin"
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr "Kamera"
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr "Galleria"
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr "Facebook"
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr "Selain"
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr "Twitter"
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr "GMail"
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr "Sää"
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr "Muistio"
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr "Kalenteri"
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr "Mediasoitin"
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr "Evernote"
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr "Kartta"
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr "Pinterest"
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr "SoundCloud"
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr "Wikipedia"
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr "YouTube"
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -63,20 +131,68 @@ msgstr "Suositut verkkovideot"
63131
64132#: Dash/DashHome.qml:197 plugins/Unity/lenses.cpp:38
65133msgid "Home"
66−msgstr "Alkuun"
134+msgstr "Kotinäyttö"
135+
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr "Suositellut"
67139
68−#: Dash/DashMusic.qml:92
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr "Viimeisimmät"
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr "Uudet julkaisut"
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr "Nousukiidossa"
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Musiikki"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr "Suosikit"
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr "Viimeksi yhteydessä"
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr "Uudet yhteystiedot"
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Ihmiset"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr "Suosittua verkossa"
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Videot"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr "Ohjannut:"
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr "Pääosissa:"
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr "Laatinut:"
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Hyväksy"
@@ -105,6 +221,10 @@ msgstr "Laite"
105221msgid "Flight mode"
106222msgstr "Lentokonetila"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Hae"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Hakuun täsmääviä tuloksia ei löydy."
@@ -112,7 +232,3 @@ msgstr "Hakuun täsmääviä tuloksia ei löydy."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Kotinäyttö"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Hae"
po/fo.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 10:57+0000\n"
12−"Last-Translator: Jógvan Olsen <jeggy@jebster.net>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Heim"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Tónleikur"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Fólk"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Sjónbond"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Vátta"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Leita"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
@@ -112,7 +232,3 @@ msgstr "Tíanverri er tað einki sum hóskar til tína leiting."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Heimaskíggi"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Leita"
po/fr.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-31 09:36+0000\n"
12−"Last-Translator: ymadec <ymadec@myopera.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: French <fr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr ""
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Musique"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr ""
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Vidéos"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr ""
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr ""
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -112,7 +232,3 @@ msgstr ""
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr ""
po/gl.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-03 19:28+0000\n"
12−"Last-Translator: Miguel Anxo Bouzada <mbouzada@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-04 06:27+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr "Vídeos populares en liña"
65133msgid "Home"
66134msgstr "Cartafol persoal"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Música"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Persoas"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Vídeos"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Confirmar"
@@ -105,6 +221,10 @@ msgstr "Dispositivo"
105221msgid "Flight mode"
106222msgstr "Modo de voo"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Buscar"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Sentímolo, non hai nada que coincida con esta busca."
@@ -112,7 +232,3 @@ msgstr "Sentímolo, non hai nada que coincida con esta busca."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Pantalla de inicio"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Buscar"
po/he.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 10:12+0000\n"
12−"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "בית"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "מוזיקה"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "אנשים"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "סרטונים"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "אישור"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "חיפוש"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה."
@@ -112,7 +232,3 @@ msgstr "שום דבר אינו תואם לחיפוש שלך, עמך הסליחה
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "מסך הבית"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "חיפוש"
po/hr.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 14:42+0000\n"
12−"Last-Translator: Saša Teković <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Croatian <hr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Početna"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Glazba"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Osobe"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Video"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Potvrdi"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Pretraživanje"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
@@ -112,7 +232,3 @@ msgstr "Nažalost, ne postoji ništa što odgovara vašoj pretrazi."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Početni zaslon"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Pretraživanje"
po/hu.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-04 10:34+0000\n"
12−"Last-Translator: Kristóf Kiszel <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-05 06:34+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Kezdőoldal"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Zene"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Emberek"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Videók"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Megerősítés"
@@ -105,6 +221,10 @@ msgstr "Eszköz"
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Keresés"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Elnézést, nincs találat a keresésre."
@@ -112,7 +232,3 @@ msgstr "Elnézést, nincs találat a keresésre."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Kezdőképernyő"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Keresés"
po/hy.ponew file+234
@@ -0,0 +1,234 @@
1+# Armenian translation for unity
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-07 12:42+0000\n"
12+"Last-Translator: iAbaS <sosabazyan@yandex.ru>\n"
13+"Language-Team: Armenian <hy@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+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
87+
88+#: Components/PageHeader.qml:300
89+msgid "Recent searches"
90+msgstr "Վերջին որոնումներ"
91+
92+#: Dash/DashApps.qml:65
93+msgid "Running apps"
94+msgstr "Բացած ծրագրեր"
95+
96+#: Dash/DashApps.qml:68
97+msgid "Frequently used"
98+msgstr "Վերջին բացածները"
99+
100+#: Dash/DashApps.qml:71
101+msgid "Installed"
102+msgstr "Տեղադրված"
103+
104+#: Dash/DashApps.qml:74
105+msgid "Available for download"
106+msgstr "Հասանելի ծրագրեր"
107+
108+#: Dash/DashApps.qml:178
109+msgid "Apps"
110+msgstr "Ծրագրեր"
111+
112+#: Dash/DashHome.qml:43
113+msgid "Frequent Apps"
114+msgstr "Հաճախակի ծրագրերը"
115+
116+#: Dash/DashHome.qml:46
117+msgid "Favourite People"
118+msgstr "Ֆավորիտներ"
119+
120+#: Dash/DashHome.qml:49
121+msgid "People Recently in Touch"
122+msgstr "Վերջին մարդիկ"
123+
124+#: Dash/DashHome.qml:52
125+msgid "Recent Music"
126+msgstr "Վերջին երգերը"
127+
128+#: Dash/DashHome.qml:55
129+msgid "Videos Popular Online"
130+msgstr "Հայտնի օնլայն վիդեոներ"
131+
132+#: Dash/DashHome.qml:197 plugins/Unity/lenses.cpp:38
133+msgid "Home"
134+msgstr "Տուն"
135+
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
153+msgid "Music"
154+msgstr "Երգեր"
155+
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
173+msgid "People"
174+msgstr "Մարդիկ"
175+
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
181+msgid "Videos"
182+msgstr "Վիդեոներ"
183+
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
196+#: Hud/HudParametrizedActionsPage.qml:132
197+msgid "Confirm"
198+msgstr "Հաստատել"
199+
200+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
201+msgid "Type or say a command"
202+msgstr "Գրիր կամ ասա կոմմենտը"
203+
204+#: Hud/Hud.qml:84
205+msgid "Loading. Please Wait..."
206+msgstr "Խնդրում ենք սպասել..."
207+
208+#: Hud/Hud.qml:89
209+msgid "Speak Now..."
210+msgstr "Խոսի՛ր"
211+
212+#: Hud/Hud.qml:94
213+msgid "Speaking..."
214+msgstr "Խոսում եմ..."
215+
216+#: Panel/MenuContent.qml:192
217+msgid "Device"
218+msgstr "Սարք"
219+
220+#: Panel/Menus/Overview/FlightModeWidget.qml:42
221+msgid "Flight mode"
222+msgstr "Անկապ րեժիմ"
223+
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Որոնում"
227+
228+#: plugins/Unity/lens.cpp:333
229+msgid "Sorry, there is nothing that matches your search."
230+msgstr "Կներերք, բայց Ձեր հարցումով ոչինչ չկար"
231+
232+#: plugins/Unity/lenses.cpp:39
233+msgid "Home screen"
234+msgstr "Տուն"
po/id.po+127−11
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 17:23+0000\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Indonesian <id@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr ""
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr ""
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr ""
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr ""
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr ""
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr ""
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -112,7 +232,3 @@ msgstr ""
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr ""
po/it.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 13:20+0000\n"
12−"Last-Translator: Corasaaa <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Home"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Musica"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Contatti"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Video"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Conferma"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Cerca"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Nessun risultato corrispondente alla ricerca."
@@ -112,7 +232,3 @@ msgstr "Nessun risultato corrispondente alla ricerca."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Home"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Cerca"
po/kn.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 16:23+0000\n"
12−"Last-Translator: Sai Ranjan <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Kannada <kn@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "ಮನೆ (Home)"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "ಸಂಗೀತ"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "ಜನರು"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "ವೀಡಿಯೋಗಳು"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "ಖಚಿತಪಡಿಸು"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "ಹುಡುಕು"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯಾದ ಹೊಂದಾಣಿಕೆಗಳು ದೊರಕುತ್ತಿಲ್ಲ"
@@ -112,7 +232,3 @@ msgstr "ಕ್ಷಮಿಸಿ ನಿಮ್ಮ ಶೋಧನೆಗೆ ಸರಿಯ
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "ಹೋಮ್ ಸ್ಕ್ರೀನ್"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "ಹುಡುಕು"
po/ko.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-02 17:25+0000\n"
12−"Last-Translator: Jinkyu Yi <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-03 06:52+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr ""
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "음악"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr ""
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr ""
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr ""
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "찾기"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -112,7 +232,3 @@ msgstr ""
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "찾기"
po/ky.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 10:24+0000\n"
12−"Last-Translator: Chynggyz Jumaliev <translatorky@lavabit.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Kirghiz <ky@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Үй папкасы"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Музыка"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Адамдар"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Видеолор"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Аныктоо"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Издөө"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Тилекке каршы, сиздин издөөңүзгө эч нерсе дал келген жок."
@@ -112,7 +232,3 @@ msgstr "Тилекке каршы, сиздин издөөңүзгө эч нер
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Башкы экран"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Издөө"
po/lv.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-27 19:58+0000\n"
12−"Last-Translator: admresdeserv. <jeanmarc.gailis@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Mājas"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Mūzika"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Cilvēki"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Video"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Apstiprināt"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Meklēt"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
@@ -112,7 +232,3 @@ msgstr "Diemžēl nekas neatbilst jūsu meklētajam."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Mājas ekrāns"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Meklēt"
po/my.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-27 11:28+0000\n"
12−"Last-Translator: Pyae Sone <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "ပင်မ"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "တေးဂီတ"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "လူ"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "ဗီဒီယိုများ"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "အတည်ပြုပါ"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "ရှာဖွေ"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့်တူညီတာဘာမှမရှိပါ။"
@@ -112,7 +232,3 @@ msgstr "ဆောရီး၊ သင်၏ရှာဖွေမူနှင့
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "ရှာဖွေ"
po/nb.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-04 14:38+0000\n"
12−"Last-Translator: Joakim Langvand <jlangvand@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-05 06:34+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Hjem"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Musikk"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Personer"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Videoer"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Bekreft"
@@ -105,6 +221,10 @@ msgstr "Enhet"
105221msgid "Flight mode"
106222msgstr "Flymodus"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Søk"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Søket ga ingen treff."
@@ -112,7 +232,3 @@ msgstr "Søket ga ingen treff."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Hjemmeskjerm"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Søk"
po/nl.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 11:00+0000\n"
12−"Last-Translator: Hannie Dumoleyn <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Hoofdvenster"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Muziek"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Mensen"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Video's"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Bevestigen"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Zoeken"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
@@ -112,7 +232,3 @@ msgstr "Er is helaas niets dat met uw zoekopdracht overeenkomt."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Startscherm"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Zoeken"
po/pl.po+145−31
@@ -1,23 +1,89 @@
1−# Unity 8 translation for Polish language.
2−# Copyright (C) 2013 Canonical Ltd.
1+# Polish translation for unity
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
33# This file is distributed under the same license as the unity package.
4−# Michał Sawicz <michal.sawicz@canonical.com> 2013
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
55#
66msgid ""
77msgstr ""
8−"Project-Id-Version: unity8\n"
9−"Report-Msgid-Bugs-To: Ubuntu Developers <ubuntu-devel-"
10−"discuss@lists.ubuntu.com>\n"
11−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
12−"PO-Revision-Date: 2013-05-24 22:38+0000\n"
13−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
14−"Language-Team: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>\n"
8+"Project-Id-Version: unity\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:43+0000\n"
12+"Last-Translator: Piotr Merski <Unknown>\n"
13+"Language-Team: Polish <pl@li.org>\n"
1514"MIME-Version: 1.0\n"
1615"Content-Type: text/plain; charset=UTF-8\n"
1716"Content-Transfer-Encoding: 8bit\n"
18−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
19−"X-Generator: Launchpad (build 16660)\n"
20−"Language: pl\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
2187
2288#: Components/PageHeader.qml:300
2389msgid "Recent searches"
@@ -25,19 +91,19 @@ msgstr "Ostatnie wyszukiwania"
2591
2692#: Dash/DashApps.qml:65
2793msgid "Running apps"
28−msgstr ""
94+msgstr "Uruchomione aplikacje"
2995
3096#: Dash/DashApps.qml:68
3197msgid "Frequently used"
32−msgstr ""
98+msgstr "Najczęściej używane"
3399
34100#: Dash/DashApps.qml:71
35101msgid "Installed"
36−msgstr ""
102+msgstr "Zainstalowane"
37103
38104#: Dash/DashApps.qml:74
39105msgid "Available for download"
40−msgstr ""
106+msgstr "Dostępne do pobrania"
41107
42108#: Dash/DashApps.qml:178
43109msgid "Apps"
@@ -45,40 +111,88 @@ msgstr "Aplikacje"
45111
46112#: Dash/DashHome.qml:43
47113msgid "Frequent Apps"
48−msgstr ""
114+msgstr "Często używane aplikacje"
49115
50116#: Dash/DashHome.qml:46
51117msgid "Favourite People"
52−msgstr ""
118+msgstr "Ulubione kontakty"
53119
54120#: Dash/DashHome.qml:49
55121msgid "People Recently in Touch"
56−msgstr ""
122+msgstr "Osoby ostatnio w kontakcie"
57123
58124#: Dash/DashHome.qml:52
59125msgid "Recent Music"
60−msgstr ""
126+msgstr "Najnowsza muzyka"
61127
62128#: Dash/DashHome.qml:55
63129msgid "Videos Popular Online"
64−msgstr ""
130+msgstr "Wideo popularne online"
65131
66132#: Dash/DashHome.qml:197 plugins/Unity/lenses.cpp:38
67133msgid "Home"
68134msgstr "Dom"
69135
70−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
71153msgid "Music"
72154msgstr "Muzyka"
73155
74−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
75173msgid "People"
76174msgstr "Ludzie"
77175
78−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
79181msgid "Videos"
80182msgstr "Filmy"
81183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
82196#: Hud/HudParametrizedActionsPage.qml:132
83197msgid "Confirm"
84198msgstr "Potwierdź"
@@ -101,11 +215,15 @@ msgstr "Rozpoznanie..."
101215
102216#: Panel/MenuContent.qml:192
103217msgid "Device"
104−msgstr ""
218+msgstr "Urządzenie"
105219
106220#: Panel/Menus/Overview/FlightModeWidget.qml:42
107221msgid "Flight mode"
108−msgstr ""
222+msgstr "Tryb samolotowy"
223+
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Szukaj"
109227
110228#: plugins/Unity/lens.cpp:333
111229msgid "Sorry, there is nothing that matches your search."
@@ -114,7 +232,3 @@ msgstr "Nie znaleziono pasujących wyników."
114232#: plugins/Unity/lenses.cpp:39
115233msgid "Home screen"
116234msgstr "Ekran domowy"
117−
118−#: plugins/Unity/lenses.cpp:40
119−msgid "Search"
120−msgstr "Szukaj"
po/pt_BR.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 12:30+0000\n"
12−"Last-Translator: Rafael Neri <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Início"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Músicas"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Pessoas"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Vídeos"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Confirmar"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Pesquisar"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
@@ -112,7 +232,3 @@ msgstr "Desculpe, não há nada que corresponda à sua pesquisa."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Tela inicial"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Pesquisar"
po/ro.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 21:03+0000\n"
12−"Last-Translator: Vlad Paul Paval <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Acasă"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Muzică"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Persoane"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Video"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Confirmați"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Căutare"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -113,7 +233,3 @@ msgstr ""
113233#: plugins/Unity/lenses.cpp:39
114234msgid "Home screen"
115235msgstr "Ecran principal"
116−
117−#: plugins/Unity/lenses.cpp:40
118−msgid "Search"
119−msgstr "Căutare"
po/ru.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-04 04:19+0000\n"
12−"Last-Translator: Den <epicodes@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-05 06:34+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr "Популярные видео из сети"
65133msgid "Home"
66134msgstr "Главная"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Музыка"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Люди"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Видео"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Подвердить"
@@ -105,6 +221,10 @@ msgstr "Устройство"
105221msgid "Flight mode"
106222msgstr "Режим полета"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Поиск"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Извините, поиск не дал результатов."
@@ -112,7 +232,3 @@ msgstr "Извините, поиск не дал результатов."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Главный экран"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Поиск"
po/si.po+127−11
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-28 19:05+0000\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Sinhalese <si@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr ""
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr ""
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr ""
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr ""
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr ""
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr ""
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -112,7 +232,3 @@ msgstr ""
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr ""
po/sl.po+134−18
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 14:26+0000\n"
12−"Last-Translator: Andrej Znidarsic <andrej.znidarsic@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-09 10:23+0000\n"
12+"Last-Translator: Damir Jerovšek <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -27,15 +95,15 @@ msgstr ""
2795
2896#: Dash/DashApps.qml:68
2997msgid "Frequently used"
30−msgstr ""
98+msgstr "Pogosto uporabljano"
3199
32100#: Dash/DashApps.qml:71
33101msgid "Installed"
34−msgstr ""
102+msgstr "Nameščeno"
35103
36104#: Dash/DashApps.qml:74
37105msgid "Available for download"
38−msgstr ""
106+msgstr "Na voljo za prejem"
39107
40108#: Dash/DashApps.qml:178
41109msgid "Apps"
@@ -55,7 +123,7 @@ msgstr ""
55123
56124#: Dash/DashHome.qml:52
57125msgid "Recent Music"
58−msgstr ""
126+msgstr "Nedavna glasba"
59127
60128#: Dash/DashHome.qml:55
61129msgid "Videos Popular Online"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Domov"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Glasba"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Ljudje"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Videi"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Potrdi"
@@ -99,11 +215,15 @@ msgstr "Govorjenje ..."
99215
100216#: Panel/MenuContent.qml:192
101217msgid "Device"
102−msgstr ""
218+msgstr "Naprava"
103219
104220#: Panel/Menus/Overview/FlightModeWidget.qml:42
105221msgid "Flight mode"
106−msgstr ""
222+msgstr "Način letenja"
223+
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Iskanje"
107227
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
@@ -112,7 +232,3 @@ msgstr "Nič se ne ujema z vašim iskalnim nizom."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Domači zaslon"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Išči"
po/sr.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 19:56+0000\n"
12−"Last-Translator: Марко М. Костић <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Serbian <sr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Почетна"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Музика"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Људи"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Видео"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Потврди"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Претрага"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Нажалост, претрага није наишла на икакво подударање."
@@ -112,7 +232,3 @@ msgstr "Нажалост, претрага није наишла на икакв
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Почетни екран"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Претрага"
po/sv.po+127−11
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 10:12+0000\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
1212"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Swedish <sv@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr ""
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr ""
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr ""
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr ""
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr ""
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr ""
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -112,7 +232,3 @@ msgstr ""
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr ""
po/te.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-27 18:24+0000\n"
12−"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Telugu <te@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "నివాసం"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "సంగీతం"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr ""
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr ""
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr ""
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr ""
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -112,7 +232,3 @@ msgstr ""
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr ""
po/tr.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-03 19:10+0000\n"
12−"Last-Translator: Volkan Gezer <Unknown>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-04 06:27+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr "Çevrimiçi Yaygın Videolar"
65133msgid "Home"
66134msgstr "Ev"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Müzik"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Kişiler"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Videolar"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Onayla"
@@ -105,6 +221,10 @@ msgstr "Aygıt"
105221msgid "Flight mode"
106222msgstr "Uçak kipi"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Ara"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
@@ -112,7 +232,3 @@ msgstr "Üzgünüz, aramanızla eşleşen hiçbir şey yok."
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Başlangıç ekranı"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Ara"
po/ug.ponew file+234
@@ -0,0 +1,234 @@
1+# Uyghur translation for unity
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
3+# This file is distributed under the same license as the unity package.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
5+#
6+msgid ""
7+msgstr ""
8+"Project-Id-Version: unity\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-06 07:40+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13+"Language-Team: Uyghur <ug@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+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
87+
88+#: Components/PageHeader.qml:300
89+msgid "Recent searches"
90+msgstr "يېقىنقى ئىزدەشلەر"
91+
92+#: Dash/DashApps.qml:65
93+msgid "Running apps"
94+msgstr "ئىجرا بولۇۋاتقان ئەپلەر"
95+
96+#: Dash/DashApps.qml:68
97+msgid "Frequently used"
98+msgstr "كوپ ئىشلىتىلگەنلىرى"
99+
100+#: Dash/DashApps.qml:71
101+msgid "Installed"
102+msgstr "ئورنىتىلغانلىرى"
103+
104+#: Dash/DashApps.qml:74
105+msgid "Available for download"
106+msgstr "چۈشۈرگىلى بولىدىغانلىرى"
107+
108+#: Dash/DashApps.qml:178
109+msgid "Apps"
110+msgstr "ئەپلەر"
111+
112+#: Dash/DashHome.qml:43
113+msgid "Frequent Apps"
114+msgstr "دائىم ئىشلىتىلىدىغان ئەپلەر"
115+
116+#: Dash/DashHome.qml:46
117+msgid "Favourite People"
118+msgstr "ھەمىشە ئالاقە قىلىدىغان كىشىلەر"
119+
120+#: Dash/DashHome.qml:49
121+msgid "People Recently in Touch"
122+msgstr "يېقىندا ئالاقە قىلغان كىشىلەر"
123+
124+#: Dash/DashHome.qml:52
125+msgid "Recent Music"
126+msgstr "يېقىندا ئاڭلىغان مۇزىكىلار"
127+
128+#: Dash/DashHome.qml:55
129+msgid "Videos Popular Online"
130+msgstr "توردىكى ئالقىشقا ئېرىشكەن سىنلار"
131+
132+#: Dash/DashHome.qml:197 plugins/Unity/lenses.cpp:38
133+msgid "Home"
134+msgstr "ماكان"
135+
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
153+msgid "Music"
154+msgstr "مۇزىكا"
155+
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
173+msgid "People"
174+msgstr "كىشىلەر"
175+
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
181+msgid "Videos"
182+msgstr "سىنلار"
183+
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
196+#: Hud/HudParametrizedActionsPage.qml:132
197+msgid "Confirm"
198+msgstr "جەزملە"
199+
200+#: Hud/Hud.qml:61 Hud/Hud.qml:99 Hud/Hud.qml:372
201+msgid "Type or say a command"
202+msgstr "بۇيرۇق كىرگۈزۈڭ ياكى دەڭ"
203+
204+#: Hud/Hud.qml:84
205+msgid "Loading. Please Wait..."
206+msgstr "ئوقۇۋاتىدۇ، سەل كۈتۈڭ…"
207+
208+#: Hud/Hud.qml:89
209+msgid "Speak Now..."
210+msgstr "ئەمدى سۆزلەڭ…"
211+
212+#: Hud/Hud.qml:94
213+msgid "Speaking..."
214+msgstr "سۆزلەۋاتىسىز…"
215+
216+#: Panel/MenuContent.qml:192
217+msgid "Device"
218+msgstr "ئۈسكۈنە"
219+
220+#: Panel/Menus/Overview/FlightModeWidget.qml:42
221+msgid "Flight mode"
222+msgstr "ئايروپىلاندا"
223+
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "ئىزدە"
227+
228+#: plugins/Unity/lens.cpp:333
229+msgid "Sorry, there is nothing that matches your search."
230+msgstr "كەچۈرۈڭ، ئىزدىگىنىڭىزگە ماس نەتىجە تېپىلمىدى."
231+
232+#: plugins/Unity/lenses.cpp:39
233+msgid "Home screen"
234+msgstr "ماكان ئېكران"
po/uk.po+128−12
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-05-25 10:19+0000\n"
12−"Last-Translator: Yuri Chornoivan <yurchor@gmail.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\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"
17−"X-Launchpad-Export-Date: 2013-06-01 06:00+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr "Домівка"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "Музика"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "Люди"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "Відео"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "Підтвердити"
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "Пошук"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "Вибачте, для вказаних вами ключових слів нічого не знайдено."
@@ -112,7 +232,3 @@ msgstr "Вибачте, для вказаних вами ключових слі
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "Екран домівки"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "Пошук"
po/unity8.pot+124−8
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,6 +17,74 @@ msgstr ""
1717"Content-Type: text/plain; charset=CHARSET\n"
1818"Content-Transfer-Encoding: 8bit\n"
1919
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
87+
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
2290msgstr ""
@@ -65,18 +133,66 @@ msgstr ""
65133msgid "Home"
66134msgstr ""
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr ""
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr ""
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr ""
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr ""
@@ -105,6 +221,10 @@ msgstr ""
105221msgid "Flight mode"
106222msgstr ""
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr ""
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr ""
@@ -112,7 +232,3 @@ msgstr ""
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr ""
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr ""
po/update-unity-pot+1−1
@@ -9,7 +9,7 @@ PROGNAME=$(basename $0)
99GETTEXT_FILES=$(mktemp --tmpdir uitk-unity.lst.XXXXX)
1010trap 'rm -f "$GETTEXT_FILES"' EXIT
1111cd ..
12−find \( -name '*.h' -o -name '*.cpp' -o -name '*.qml' \) \
12+find \( -name '*.h' -o -name '*.cpp' -o -name '*.qml' -o -name '*.js' \) \
1313 -a ! \( -path './debian/*' -o -path './builddir/*' -o -path './build/*' -o -path './.bzr/*' \) | sort \
1414> $GETTEXT_FILES
1515
po/zh_CN.po+129−13
@@ -7,15 +7,83 @@ msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-04 16:10+0000\n"
12−"Last-Translator: wushanjun <sjwuny@126.com>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-05 06:34+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
1987
2088#: Components/PageHeader.qml:300
2189msgid "Recent searches"
@@ -65,18 +133,66 @@ msgstr "热门在线视频"
65133msgid "Home"
66134msgstr "主页"
67135
68−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
69153msgid "Music"
70154msgstr "音乐"
71155
72−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
73173msgid "People"
74174msgstr "联系人"
75175
76−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
77181msgid "Videos"
78182msgstr "视频"
79183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
80196#: Hud/HudParametrizedActionsPage.qml:132
81197msgid "Confirm"
82198msgstr "确认"
@@ -87,7 +203,7 @@ msgstr "输入或说出一个命令"
87203
88204#: Hud/Hud.qml:84
89205msgid "Loading. Please Wait..."
90−msgstr "正在加载,请稍侯..."
206+msgstr "正在加载,请稍候..."
91207
92208#: Hud/Hud.qml:89
93209msgid "Speak Now..."
@@ -105,6 +221,10 @@ msgstr "设备"
105221msgid "Flight mode"
106222msgstr "飞行模式"
107223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "搜索"
227+
108228#: plugins/Unity/lens.cpp:333
109229msgid "Sorry, there is nothing that matches your search."
110230msgstr "对不起,没有找到您想要的结果。"
@@ -112,7 +232,3 @@ msgstr "对不起,没有找到您想要的结果。"
112232#: plugins/Unity/lenses.cpp:39
113233msgid "Home screen"
114234msgstr "主页"
115−
116−#: plugins/Unity/lenses.cpp:40
117−msgid "Search"
118−msgstr "搜索"
po/zh_TW.po+133−18
@@ -1,22 +1,89 @@
1−# Unity 8 translation for Traditional Chinese language.
2−# Copyright (C) 2013 Canonical Ltd
1+# Chinese (Traditional) translation for unity
2+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
33# This file is distributed under the same license as the unity package.
4−# Ying-Chun Liu (PaulLiu) <paul.liu@canonical.com>, 2013.
4+# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
55#
66msgid ""
77msgstr ""
88"Project-Id-Version: unity\n"
9−"Report-Msgid-Bugs-To: \n"
10−"POT-Creation-Date: 2013-05-30 21:08+0800\n"
11−"PO-Revision-Date: 2013-06-04 12:35+0000\n"
12−"Last-Translator: Ying-Chun Liu <paul.liu@canonical.com>\n"
13−"Language-Team: Ubuntu Touch Team <ubuntu-phone@lists.ubuntu.com>\n"
9+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10+"POT-Creation-Date: 2013-06-08 14:40+0200\n"
11+"PO-Revision-Date: 2013-06-05 22:20+0000\n"
12+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13+"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2013-06-05 06:34+0000\n"
18−"X-Generator: Launchpad (build 16660)\n"
19−"Language: \n"
17+"X-Launchpad-Export-Date: 2013-06-11 06:34+0000\n"
18+"X-Generator: Launchpad (build 16667)\n"
19+
20+#: Applications/applications.js:23
21+msgid "Phone"
22+msgstr ""
23+
24+#: Applications/applications.js:29
25+msgid "Camera"
26+msgstr ""
27+
28+#: Applications/applications.js:35
29+msgid "Gallery"
30+msgstr ""
31+
32+#: Applications/applications.js:40
33+msgid "Facebook"
34+msgstr ""
35+
36+#: Applications/applications.js:46
37+msgid "Browser"
38+msgstr ""
39+
40+#: Applications/applications.js:51
41+msgid "Twitter"
42+msgstr ""
43+
44+#: Applications/applications.js:57
45+msgid "GMail"
46+msgstr ""
47+
48+#: Applications/applications.js:62
49+msgid "Weather"
50+msgstr ""
51+
52+#: Applications/applications.js:68
53+msgid "Notepad"
54+msgstr ""
55+
56+#: Applications/applications.js:74
57+msgid "Calendar"
58+msgstr ""
59+
60+#: Applications/applications.js:80
61+msgid "Media Player"
62+msgstr ""
63+
64+#: Applications/applications.js:86
65+msgid "Evernote"
66+msgstr ""
67+
68+#: Applications/applications.js:91
69+msgid "Map"
70+msgstr ""
71+
72+#: Applications/applications.js:96
73+msgid "Pinterest"
74+msgstr ""
75+
76+#: Applications/applications.js:101
77+msgid "SoundCloud"
78+msgstr ""
79+
80+#: Applications/applications.js:106
81+msgid "Wikipedia"
82+msgstr ""
83+
84+#: Applications/applications.js:111
85+msgid "YouTube"
86+msgstr ""
2087
2188#: Components/PageHeader.qml:300
2289msgid "Recent searches"
@@ -66,18 +133,66 @@ msgstr "線上熱門的影片"
66133msgid "Home"
67134msgstr "家屋"
68135
69−#: Dash/DashMusic.qml:92
136+#: Dash/DashMusic.qml:27 Dash/DashVideos.qml:28
137+msgid "Featured"
138+msgstr ""
139+
140+#: Dash/DashMusic.qml:28 Dash/DashVideos.qml:29
141+msgid "Recent"
142+msgstr ""
143+
144+#: Dash/DashMusic.qml:29 Dash/DashVideos.qml:30
145+msgid "New Releases"
146+msgstr ""
147+
148+#: Dash/DashMusic.qml:30
149+msgid "Top Charting"
150+msgstr ""
151+
152+#: Dash/DashMusic.qml:99
70153msgid "Music"
71154msgstr "音樂"
72155
73−#: Dash/DashPeople.qml:116
156+#: Dash/DashPeople.qml:31
157+msgid "Favourites"
158+msgstr ""
159+
160+#: Dash/DashPeople.qml:32
161+msgid "Recently in touch"
162+msgstr ""
163+
164+#: Dash/DashPeople.qml:33
165+msgid "New Contacts"
166+msgstr ""
167+
168+#: Dash/DashPeople.qml:34
169+msgid "A-Z"
170+msgstr ""
171+
172+#: Dash/DashPeople.qml:123
74173msgid "People"
75174msgstr "朋友"
76175
77−#: Dash/DashVideos.qml:148
176+#: Dash/DashVideos.qml:31
177+msgid "Popular Online"
178+msgstr ""
179+
180+#: Dash/DashVideos.qml:155
78181msgid "Videos"
79182msgstr "影片"
80183
184+#: Dash/Video/VideoPreview.qml:98
185+msgid "Directed by:"
186+msgstr ""
187+
188+#: Dash/Video/VideoPreview.qml:121
189+msgid "Starring:"
190+msgstr ""
191+
192+#: Dash/Video/VideoPreview.qml:144
193+msgid "Author:"
194+msgstr ""
195+
81196#: Hud/HudParametrizedActionsPage.qml:132
82197msgid "Confirm"
83198msgstr "確認"
@@ -106,6 +221,10 @@ msgstr "裝置"
106221msgid "Flight mode"
107222msgstr "飛航模式"
108223
224+#: Panel/SearchIndicator.qml:26 plugins/Unity/lenses.cpp:40
225+msgid "Search"
226+msgstr "搜尋"
227+
109228#: plugins/Unity/lens.cpp:333
110229msgid "Sorry, there is nothing that matches your search."
111230msgstr "很抱歉,找不到符合您想搜尋的結果。"
@@ -113,7 +232,3 @@ msgstr "很抱歉,找不到符合您想搜尋的結果。"
113232#: plugins/Unity/lenses.cpp:39
114233msgid "Home screen"
115234msgstr "家屋畫面"
116−
117−#: plugins/Unity/lenses.cpp:40
118−msgid "Search"
119−msgstr "搜尋"
run+17−1
@@ -4,6 +4,8 @@ QML_PHONE_SHELL_PATH=./builddir/unity8
44export LD_LIBRARY_PATH=$PWD/../unity_build/build/lib
55GDB=false
66FAKE=false
7+PINLOCK=false
8+KEYLOCK=false
79MOUSE_TOUCH=true
810
911usage() {
@@ -11,6 +13,8 @@ usage() {
1113 echo "Script to run the shell.\n" >&2
1214 echo "OPTIONS:" >&2
1315 echo " -f, --fake Force use of fake Qml modules." >&2
16+ echo " -p, --pinlock Use a pin protected user." >&2
17+ echo " -k, --keylock Use a passphrase protected user." >&2
1418 echo " -g, --gdb Run through gdb." >&2
1519 echo " -h, --help Show this help." >&2
1620 echo " -m, --nomousetouch Run without -mousetouch argument." >&2
@@ -18,7 +22,7 @@ usage() {
1822 exit 1
1923}
2024
21−ARGS=`getopt -n$0 -u -a --longoptions="fake,gdb,help,nomousetouch" -o "fghm" -- "$@"`
25+ARGS=`getopt -n$0 -u -a --longoptions="fake,pinlock,keylock,gdb,help,nomousetouch" -o "fpkghm" -- "$@"`
2226[ $? -ne 0 ] && usage
2327eval set -- "$ARGS"
2428
@@ -26,6 +30,8 @@ while [ $# -gt 0 ]
2630do
2731 case "$1" in
2832 -f|--fake) FAKE=true;;
33+ -p|--pinlock) PINLOCK=true;;
34+ -k|--keylock) KEYLOCK=true;;
2935 -g|--gdb) GDB=true;;
3036 -h|--help) usage;;
3137 -m|--nomousetouch) MOUSE_TOUCH=false;;
@@ -39,6 +45,16 @@ if $FAKE; then
3945 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/builddir/tests/mocks/LightDM/single
4046fi
4147
48+if $PINLOCK; then
49+ export QML2_IMPORT_PATH=$PWD/builddir/tests/mocks:$PWD/builddir/plugins
50+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/builddir/tests/mocks/LightDM/single-pin
51+fi
52+
53+if $KEYLOCK; then
54+ export QML2_IMPORT_PATH=$PWD/builddir/tests/mocks:$PWD/builddir/plugins
55+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/builddir/tests/mocks/LightDM/single-passphrase
56+fi
57+
4258# Force icon theme if running on the desktop, otherwise gnome theme (if running
4359# on Ubuntu Desktop) will be used and icons won't be found
4460if [ -n "$DESKTOP_SESSION" ]; then
run_on_device+26−9
@@ -11,6 +11,8 @@ TARGET_DEBUG_PORT=3768
1111RUN_OPTIONS=-qmljsdebugger=port:$TARGET_DEBUG_PORT
1212SETUP=false
1313GDB=false
14+PINLOCK=false
15+KEYLOCK=false
1416SUDO="echo $PASSWORD | sudo -S"
1517NUM_JOBS='$(( `grep -c ^processor /proc/cpuinfo` + 1 ))'
1618
@@ -19,6 +21,8 @@ usage() {
1921 echo "Script to setup a build environment for the shell and sync build and run it on the device\n"
2022 echo "OPTIONS:"
2123 echo " -s, --setup Setup the build environment"
24+ echo " -p, --pinlock Enable a PIN lock screen when running"
25+ echo " -k, --keylock Enable a Keyboard lock screen when running"
2226 echo ""
2327 echo "IMPORTANT:"
2428 echo " * Make sure to have the networking and PPAs setup on the device beforehand (phablet-deploy-networking && phablet-ppa-fetch)."
@@ -33,6 +37,7 @@ exec_with_ssh() {
3337exec_with_adb() {
3438 adb shell chroot /data/ubuntu /usr/bin/env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin "$@"
3539}
40+
3641adb_root() {
3742 adb root
3843 adb wait-for-device
@@ -55,39 +60,49 @@ setup_adb_forwarding() {
5560
5661install_dependencies() {
5762 exec_with_adb apt-get -y install openssh-server
58− exec_with_ssh $SUDO apt-get -y install build-essential rsync bzr ccache gdb ninja-build
63+ exec_with_ssh $SUDO apt-get -y install build-essential rsync bzr ccache gdb ninja-build devscripts equivs
5964 exec_with_ssh $SUDO add-apt-repository -y ppa:canonical-qt5-edgers/qt5-proper
6065 exec_with_ssh $SUDO add-apt-repository -s -y ppa:phablet-team/ppa
6166 exec_with_ssh $SUDO apt-get update
62− exec_with_ssh $SUDO apt-get -y build-dep $PACKAGE
6367}
6468
6569sync_code() {
66− bzr export --uncommitted --format=dir /tmp/$CODE_DIR
70+ [ -e .bzr ] && bzr export --uncommitted --format=dir /tmp/$CODE_DIR
71+ [ -e .git ] && git checkout-index -a -f --prefix=/tmp/$CODE_DIR/
6772 rsync -crlOzv -e "ssh -p $TARGET_SSH_PORT -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" /tmp/$CODE_DIR/ $USER@$TARGET_IP:$CODE_DIR/
6873 rm -rf /tmp/$CODE_DIR
6974}
7075
7176build() {
77+ exec_with_ssh "[ $CODE_DIR/debian/control -nt unity8-build-deps*deb ] && $SUDO mk-build-deps --tool=\\\"apt-get -y --no-install-recommends\\\" --build-dep --install $CODE_DIR/debian/control"
7278 exec_with_ssh PATH=/usr/lib/ccache:$PATH "cd $CODE_DIR/ && PATH=/usr/lib/ccache:$PATH ./build"
7379}
7480
7581run() {
7682 SERVICEFILE="/data/ubuntu/etc/device-services"
77− adb shell "grep $BINARY $SERVICEFILE"
83+ adb shell "egrep '$BINARY|qml-phone-shell' $SERVICEFILE"
7884 CONTAINS_SHELL=$?
7985 if [ $CONTAINS_SHELL -eq 0 ]; then
8086 echo "Modifying $SERVICEFILE on device. Old contents will be saved in $SERVICEFILE.backup"
8187 adb shell cp $SERVICEFILE $SERVICEFILE.backup
82− adb shell sed -i /$BINARY/d $SERVICEFILE
88+ adb shell sed -i "/$BINARY\\\\\|qml-phone-shell/d" $SERVICEFILE
8389 adb shell "chroot /data/ubuntu /usr/bin/service ubuntu-session restart"
8490 fi
91+ adb shell pkill qml-phone-shell
8592 adb shell pkill $BINARY
93+ ARGS="--nomousetouch"
8694 if $GDB; then
87− exec_with_ssh "cd $CODE_DIR/ && ./run --gdb --nomousetouch -- $RUN_OPTIONS"
88− else
89− exec_with_ssh "cd $CODE_DIR && ./run --nomousetouch -- $RUN_OPTIONS"
95+ ARGS="$ARGS --gdb"
96+ fi
97+ if $PINLOCK; then
98+ ARGS="$ARGS -p"
99+ fi
100+ if $KEYLOCK; then
101+ ARGS="$ARGS -k"
90102 fi
103+
104+ exec_with_ssh "cd $CODE_DIR/ && ./run $ARGS -- $RUN_OPTIONS"
105+
91106 if [ $CONTAINS_SHELL -eq 0 ]; then
92107 echo "Restoring $SERVICEFILE on device from $SERVICEFILE.backup"
93108 adb shell cp $SERVICEFILE.backup $SERVICEFILE
@@ -95,7 +110,7 @@ run() {
95110 fi
96111}
97112
98−set -- `getopt -n$0 -u -a --longoptions="setup,gdb,help" "sgh" "$@"`
113+set -- `getopt -n$0 -u -a --longoptions="setup,gdb,pinlock,keylock,help" "sgpkh" "$@"`
99114
100115# FIXME: giving incorrect arguments does not call usage and exit
101116while [ $# -gt 0 ]
@@ -103,6 +118,8 @@ do
103118 case "$1" in
104119 -s|--setup) SETUP=true;;
105120 -g|--gdb) GDB=true;;
121+ -p|--pinlock) PINLOCK=true;;
122+ -k|--keylock) KEYLOCK=true;;
106123 -h|--help) usage;;
107124 --) shift;break;;
108125 esac
tests/autopilot/unity8/emulators/main_window.py+12
@@ -47,3 +47,15 @@ class MainWindow(object):
4747
4848 def get_launcher(self):
4949 return self.app.select_single("Launcher")
50+
51+ def get_pinPadLoader(self):
52+ return self.app.select_single("QQuickLoader", objectName="pinPadLoader")
53+
54+ def get_pinPadButton(self, buttonId):
55+ return self.app.select_single("PinPadButton", objectName="pinPadButton%i" % buttonId)
56+
57+ def get_lockscreen(self):
58+ return self.app.select_single("Lockscreen")
59+
60+ def get_pinentryField(self):
61+ return self.app.select_single("TextField", objectName="pinentryField")
tests/autopilot/unity8/tests/testcases.py → tests/autopilot/unity8/tests/testhud.pyrenamed+2−2
@@ -40,7 +40,7 @@ import os
4040from os import path
4141
4242
43−class TestShell(ShellTestCase, TestShellHelpers):
43+class TestHud(ShellTestCase, TestShellHelpers):
4444
4545 """Tests the Shell"""
4646
@@ -70,7 +70,7 @@ class TestShell(ShellTestCase, TestShellHelpers):
7070 divisor = 1
7171 while (sg.get_screen_width() < self.app_width / divisor or sg.get_screen_height() < self.app_height / divisor):
7272 divisor = divisor * 2
73− super(TestShell, self).setUp("%sx%s" % (self.app_width / divisor, self.app_height / divisor), "%s" % (self.grid_unit_px / divisor))
73+ super(TestHud, self).setUp("%sx%s" % (self.app_width / divisor, self.app_height / divisor), "%s" % (self.grid_unit_px / divisor))
7474
7575 dash = self.main_window.get_dash()
7676 self.assertThat(dash.showLensOnLoaded, Eventually(Equals(""), timeout=30))
tests/autopilot/unity8/tests/testlockscreen.pynew file+118
@@ -0,0 +1,118 @@
1+# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
2+# Copyright 2013 Canonical
3+#
4+# This program is free software: you can redistribute it and/or modify it
5+# under the terms of the GNU General Public License version 3, as published
6+# by the Free Software Foundation.
7+
8+
9+# This file contains general purpose test cases for Unity.
10+# Each test written in this file will be executed for a variety of
11+# configurations, such as Phone, Tablet or Desktop form factors.
12+#
13+# Sometimes there is the need to disable a certain test for a particular
14+# configuration. To do so, add this in a new line directly below your test:
15+#
16+# test_testname.blacklist = (FormFactors.Tablet, FormFactors.Desktop,)
17+#
18+# Available form factors are:
19+# FormFactors.Phone
20+# FormFactors.Tablet
21+# FormFactors.Desktop
22+
23+
24+"""Tests for the Shell"""
25+
26+from __future__ import absolute_import
27+
28+from unity8.tests import ShellTestCase, FormFactors
29+from unity8.tests.helpers import TestShellHelpers
30+
31+from autopilot.input import Mouse, Touch, Pointer
32+from testtools.matchers import Equals, NotEquals, GreaterThan, MismatchError
33+from autopilot.matchers import Eventually
34+from autopilot.display import Display
35+from autopilot.platform import model
36+
37+import unittest
38+import time
39+import os
40+from os import path
41+
42+
43+class TestLockscreens(ShellTestCase, TestShellHelpers):
44+
45+ """Tests the Lockscreens"""
46+
47+ # Scenarios:
48+ # Fill in the scenarios to run the whole test suite with multiple configurations.
49+ # Use app_width, app_height and grid_unit_px to set the apps geometry.
50+ # Set app_width and app_height to 0 to use fullscreen.
51+ # Set grid_unit_px to 0 to use the current system environment.
52+
53+ if model() == 'Desktop':
54+ scenarios = [
55+ ('Pinlock', dict(app_width=768, app_height=1280, grid_unit_px=18, lightdm_mock="single-pin")),
56+ ('Keylock', dict(app_width=768, app_height=1280, grid_unit_px=18, lightdm_mock="single-passphrase")),
57+ ]
58+ else:
59+ scenarios = [
60+ ('Pinlock', dict(app_width=0, app_height=0, grid_unit_px=0, lightdm_mock="single-pin")),
61+ ('Keylock', dict(app_width=0, app_height=0, grid_unit_px=0, lightdm_mock="single-key")),
62+ ]
63+
64+ def setUp(self):
65+ self.touch = Touch.create()
66+
67+ sg = Display().create()
68+ divisor = 1
69+ while (sg.get_screen_width() < self.app_width / divisor or sg.get_screen_height() < self.app_height / divisor):
70+ divisor = divisor * 2
71+ super(TestLockscreens, self).setUp("%sx%s" % (self.app_width / divisor, self.app_height / divisor), "%s" % (self.grid_unit_px / divisor))
72+
73+ dash = self.main_window.get_dash()
74+ self.assertThat(dash.showLensOnLoaded, Eventually(Equals(""), timeout=30))
75+
76+ def test_unlock(self):
77+ self.unlock_greeter()
78+
79+ pinPadLoader = self.main_window.get_pinPadLoader();
80+ self.assertThat(pinPadLoader.progress, Eventually(Equals(1)))
81+ lockscreen = self.main_window.get_lockscreen();
82+ self.assertThat(lockscreen.shown, Eventually(Equals(True)))
83+
84+ if self.lightdm_mock == "single-pin":
85+ self.touch.tap_object(self.main_window.get_pinPadButton(1))
86+ self.touch.tap_object(self.main_window.get_pinPadButton(2))
87+ self.touch.tap_object(self.main_window.get_pinPadButton(3))
88+ self.touch.tap_object(self.main_window.get_pinPadButton(4))
89+ self.assertThat(lockscreen.shown, Eventually(Equals(False)))
90+ else:
91+ pinentryField = self.main_window.get_pinentryField()
92+ self.touch.tap_object(pinentryField)
93+ self.keyboard.type("password\n")
94+ self.assertThat(lockscreen.shown, Eventually(Equals(False)))
95+
96+ def test_unlock_wrong(self):
97+ self.unlock_greeter()
98+
99+ pinPadLoader = self.main_window.get_pinPadLoader();
100+ self.assertThat(pinPadLoader.progress, Eventually(Equals(1)))
101+ lockscreen = self.main_window.get_lockscreen();
102+ self.assertThat(lockscreen.shown, Eventually(Equals(True)))
103+ pinentryField = self.main_window.get_pinentryField()
104+
105+ if self.lightdm_mock == "single-pin":
106+ self.touch.tap_object(self.main_window.get_pinPadButton(4))
107+ self.touch.tap_object(self.main_window.get_pinPadButton(3))
108+ self.touch.tap_object(self.main_window.get_pinPadButton(2))
109+ self.assertThat(pinentryField.text, Eventually(Equals("432")))
110+ self.touch.tap_object(self.main_window.get_pinPadButton(1))
111+
112+ self.assertThat(pinentryField.text, Eventually(Equals("")))
113+ self.assertThat(lockscreen.shown, Eventually(Equals(True)))
114+ else:
115+ self.touch.tap_object(pinentryField)
116+ self.keyboard.type("foobar\n")
117+ self.assertThat(pinentryField.text, Eventually(Equals("")))
118+ self.assertThat(lockscreen.shown, Eventually(Equals(True)))
tests/mocks/LightDM/CMakeLists.txt+2
@@ -7,6 +7,8 @@
77add_subdirectory(demo)
88add_subdirectory(full)
99add_subdirectory(single)
10+add_subdirectory(single-pin)
11+add_subdirectory(single-passphrase)
1012
1113include_directories(
1214 ${CMAKE_CURRENT_SOURCE_DIR}
tests/mocks/LightDM/full/GreeterPrivate.cpp+7−1
@@ -53,6 +53,8 @@ void GreeterPrivate::handleAuthenticate()
5353 if (authenticationUser == "no-password") {
5454 authenticated = true;
5555 Q_EMIT q->authenticationComplete();
56+ } else if (authenticationUser == "has-pin"){
57+ Q_EMIT q->showPrompt("PIN", Greeter::PromptTypeSecret);
5658 } else if (authenticationUser == "auth-error") {
5759 authenticated = false;
5860 Q_EMIT q->authenticationComplete();
@@ -85,7 +87,11 @@ void GreeterPrivate::handleRespond(const QString &response)
8587 return;
8688 }
8789
88− authenticated = (response == "password");
90+ if (authenticationUser == "has-pin") {
91+ authenticated = (response == "1234");
92+ } else {
93+ authenticated = (response == "password");
94+ }
8995 Q_EMIT q->authenticationComplete();
9096}
9197
tests/mocks/LightDM/full/UsersModelPrivate.cpp+1
@@ -27,6 +27,7 @@ UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
2727 entries =
2828 {
2929 { "has-password", "Has Password", 0, 0, false, false, 0, 0 },
30+ { "has-pin", "Has PIN", 0, 0, false, false, 0, 0 },
3031 { "different-prompt", "Different Prompt", 0, 0, false, false, 0, 0 },
3132 { "no-password", "No Password", 0, 0, false, false, 0, 0 },
3233 { "auth-error", "Auth Error", 0, 0, false, false, 0, 0 },
tests/mocks/LightDM/single-passphrase/CMakeLists.txtnew file+21
@@ -0,0 +1,21 @@
1+set(LibLightDM_SOURCES
2+ ../Greeter.cpp
3+ ../UsersModel.cpp
4+ ../InfographicModel.cpp
5+ GreeterPrivate.cpp
6+ UsersModelPrivate.cpp
7+ InfographicModelPrivate.cpp
8+ ${CMAKE_SOURCE_DIR}/plugins/Utils/qvariantlistmodel.cpp
9+ )
10+
11+
12+add_library(MockLightDM-single-passphrase SHARED ${LibLightDM_SOURCES})
13+
14+qt5_use_modules(MockLightDM-single-passphrase Gui)
15+
16+set_target_properties(MockLightDM-single-passphrase PROPERTIES
17+ OUTPUT_NAME lightdm-qt5-2)
18+
19+install(TARGETS MockLightDM-single-passphrase
20+ DESTINATION ${SHELL_APP_DIR}/plugins/mocks/LightDM/single-passphrase
21+ )
tests/mocks/LightDM/single-passphrase/GreeterPrivate.cppnew file+53
@@ -0,0 +1,53 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Author: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#include "../Greeter.h"
20+#include "../GreeterPrivate.h"
21+
22+#include <QDebug>
23+
24+namespace QLightDM
25+{
26+
27+GreeterPrivate::GreeterPrivate(Greeter* parent)
28+ : authenticated(false),
29+ authenticationUser(),
30+ q_ptr(parent)
31+{
32+}
33+
34+void GreeterPrivate::handleAuthenticate()
35+{
36+ Q_Q(Greeter);
37+
38+ qDebug() << "handleAuthentication called!" << authenticationUser;
39+
40+ Q_EMIT q->showPrompt("Password:", Greeter::PromptTypeSecret);
41+}
42+
43+void GreeterPrivate::handleRespond(const QString &response)
44+{
45+ Q_Q(Greeter);
46+
47+
48+ authenticated = (response == "password");
49+ qDebug() << "responding" << response << authenticated;
50+ Q_EMIT q->authenticationComplete();
51+}
52+
53+}
tests/mocks/LightDM/single-passphrase/InfographicModelPrivate.cppnew file+61
@@ -0,0 +1,61 @@
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: Pete Woods <pete.woods@canonical.com>
17+ */
18+
19+#include "../InfographicModelPrivate.h"
20+
21+namespace QLightDM
22+{
23+
24+void InfographicModelPrivate::generateFakeData()
25+{
26+ std::default_random_engine generator;
27+ std::normal_distribution<qreal> distribution(0.5, 0.2);
28+ auto rand = std::bind(distribution, generator);
29+
30+ QColor orange = QColor::fromRgbF(0.9, 0.3, 0.1, 1.0);
31+ QColor yellow = QColor::fromRgbF(1.0, 0.6, 0.0, 1.0);
32+ QColor red = QColor::fromRgbF(0.8, 0.0, 0.0, 1.0);
33+ QColor darkPurple = QColor::fromRgbF(0.5, 0.2, 0.3, 1.0);
34+ QColor lightPurple = QColor::fromRgbF(0.8, 0.1, 0.8, 1.0);
35+ QColor pink(QColor::fromRgbF(0.75, 0.13, 0.75));
36+
37+ InfographicColorTheme orangeTheme(orange, orange, orange);
38+ InfographicColorTheme yellowTheme(yellow, yellow, yellow);
39+ InfographicColorTheme redTheme(red, red, red);
40+ InfographicColorTheme darkPurpleTheme(darkPurple, darkPurple, darkPurple);
41+ InfographicColorTheme lightPurpleTheme(lightPurple, lightPurple,
42+ lightPurple);
43+ InfographicColorTheme pinkTheme(pink, pink, pink);
44+
45+ {
46+ QVariantList firstMonth;
47+ while (firstMonth.size() < 17)
48+ firstMonth.push_back(QVariant(rand()));
49+ while (firstMonth.size() < 31)
50+ firstMonth.push_back(QVariant());
51+ QVariantList secondMonth;
52+ while (secondMonth.size() < 31)
53+ secondMonth.push_back(QVariant(rand()));
54+ QSharedPointer<InfographicData> data(
55+ new InfographicData("<b>5km</b> travelled", yellowTheme,
56+ firstMonth, orangeTheme, secondMonth, this));
57+ m_fakeData.insert("has-pin", data);
58+ }
59+}
60+
61+}
tests/mocks/LightDM/single-passphrase/UsersModelPrivate.cppnew file+33
@@ -0,0 +1,33 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Author: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#include "../UsersModelPrivate.h"
20+
21+namespace QLightDM
22+{
23+
24+UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
25+ : q_ptr(parent)
26+{
27+ entries =
28+ {
29+ { "has-pin", "Has PIN", 0, 0, false, false, 0, 0 },
30+ };
31+}
32+
33+}
tests/mocks/LightDM/single-pin/CMakeLists.txtnew file+21
@@ -0,0 +1,21 @@
1+set(LibLightDM_SOURCES
2+ ../Greeter.cpp
3+ ../UsersModel.cpp
4+ ../InfographicModel.cpp
5+ GreeterPrivate.cpp
6+ UsersModelPrivate.cpp
7+ InfographicModelPrivate.cpp
8+ ${CMAKE_SOURCE_DIR}/plugins/Utils/qvariantlistmodel.cpp
9+ )
10+
11+
12+add_library(MockLightDM-single-pin SHARED ${LibLightDM_SOURCES})
13+
14+qt5_use_modules(MockLightDM-single-pin Gui)
15+
16+set_target_properties(MockLightDM-single-pin PROPERTIES
17+ OUTPUT_NAME lightdm-qt5-2)
18+
19+install(TARGETS MockLightDM-single-pin
20+ DESTINATION ${SHELL_APP_DIR}/plugins/mocks/LightDM/single-pin
21+ )
tests/mocks/LightDM/single-pin/GreeterPrivate.cppnew file+53
@@ -0,0 +1,53 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Author: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#include "../Greeter.h"
20+#include "../GreeterPrivate.h"
21+
22+#include <QDebug>
23+
24+namespace QLightDM
25+{
26+
27+GreeterPrivate::GreeterPrivate(Greeter* parent)
28+ : authenticated(false),
29+ authenticationUser(),
30+ q_ptr(parent)
31+{
32+}
33+
34+void GreeterPrivate::handleAuthenticate()
35+{
36+ Q_Q(Greeter);
37+
38+ qDebug() << "handleAuthentication called!" << authenticationUser;
39+
40+ Q_EMIT q->showPrompt("PIN:", Greeter::PromptTypeSecret);
41+}
42+
43+void GreeterPrivate::handleRespond(const QString &response)
44+{
45+ Q_Q(Greeter);
46+
47+
48+ authenticated = (response == "1234");
49+ qDebug() << "responding" << response << authenticated;
50+ Q_EMIT q->authenticationComplete();
51+}
52+
53+}
tests/mocks/LightDM/single-pin/InfographicModelPrivate.cppnew file+61
@@ -0,0 +1,61 @@
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: Pete Woods <pete.woods@canonical.com>
17+ */
18+
19+#include "../InfographicModelPrivate.h"
20+
21+namespace QLightDM
22+{
23+
24+void InfographicModelPrivate::generateFakeData()
25+{
26+ std::default_random_engine generator;
27+ std::normal_distribution<qreal> distribution(0.5, 0.2);
28+ auto rand = std::bind(distribution, generator);
29+
30+ QColor orange = QColor::fromRgbF(0.9, 0.3, 0.1, 1.0);
31+ QColor yellow = QColor::fromRgbF(1.0, 0.6, 0.0, 1.0);
32+ QColor red = QColor::fromRgbF(0.8, 0.0, 0.0, 1.0);
33+ QColor darkPurple = QColor::fromRgbF(0.5, 0.2, 0.3, 1.0);
34+ QColor lightPurple = QColor::fromRgbF(0.8, 0.1, 0.8, 1.0);
35+ QColor pink(QColor::fromRgbF(0.75, 0.13, 0.75));
36+
37+ InfographicColorTheme orangeTheme(orange, orange, orange);
38+ InfographicColorTheme yellowTheme(yellow, yellow, yellow);
39+ InfographicColorTheme redTheme(red, red, red);
40+ InfographicColorTheme darkPurpleTheme(darkPurple, darkPurple, darkPurple);
41+ InfographicColorTheme lightPurpleTheme(lightPurple, lightPurple,
42+ lightPurple);
43+ InfographicColorTheme pinkTheme(pink, pink, pink);
44+
45+ {
46+ QVariantList firstMonth;
47+ while (firstMonth.size() < 17)
48+ firstMonth.push_back(QVariant(rand()));
49+ while (firstMonth.size() < 31)
50+ firstMonth.push_back(QVariant());
51+ QVariantList secondMonth;
52+ while (secondMonth.size() < 31)
53+ secondMonth.push_back(QVariant(rand()));
54+ QSharedPointer<InfographicData> data(
55+ new InfographicData("<b>5km</b> travelled", yellowTheme,
56+ firstMonth, orangeTheme, secondMonth, this));
57+ m_fakeData.insert("has-pin", data);
58+ }
59+}
60+
61+}
tests/mocks/LightDM/single-pin/UsersModelPrivate.cppnew file+33
@@ -0,0 +1,33 @@
1+/*
2+ * Copyright (C) 2013 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ *
16+ * Author: Michael Terry <michael.terry@canonical.com>
17+ */
18+
19+#include "../UsersModelPrivate.h"
20+
21+namespace QLightDM
22+{
23+
24+UsersModelPrivate::UsersModelPrivate(UsersModel* parent)
25+ : q_ptr(parent)
26+{
27+ entries =
28+ {
29+ { "has-pin", "Has PIN", 0, 0, false, false, 0, 0 },
30+ };
31+}
32+
33+}
tests/plugins/Ubuntu/Gestures/CMakeLists.txt+5−3
@@ -11,9 +11,9 @@ set(testCommand
1111 -o ${CMAKE_BINARY_DIR}/DirectionalDragAreaTest.xml,xunitxml
1212 -o -,txt)
1313
14−add_custom_target(DirectionalDragAreaTest ${testCommand})
15−add_dependencies(qmluitests DirectionalDragAreaTest)
16−add_dependencies(DirectionalDragAreaTest DirectionalDragAreaTestExec UbutunGesturesTestQmlFiles)
14+add_custom_target(testDirectionalDragArea ${testCommand})
15+add_dependencies(qmluitests testDirectionalDragArea)
16+add_dependencies(testDirectionalDragArea DirectionalDragAreaTestExec UbutunGesturesTestQmlFiles)
1717
1818add_executable(DirectionalDragAreaTestExec tst_DirectionalDragArea.cpp)
1919qt5_use_modules(DirectionalDragAreaTestExec Test Core Qml Gui Quick)
@@ -27,6 +27,8 @@ add_custom_target(UbuntuGesturesTestQmlFiles ALL
2727 DEPENDS ${qmlFiles}
2828)
2929
30+########## other tests
31+
3032macro(add_gesture_test CLASSNAME)
3133 set(testCommand
3234 ${CLASSNAME}TestExec -o ${CMAKE_BINARY_DIR}/test${CLASSNAME}.xml,xunitxml -o -,txt)
tests/plugins/Ubuntu/Gestures/RightwardsLauncher.qml+1
@@ -54,6 +54,7 @@ Item {
5454 maxDeviation: units.gu(2)
5555 wideningAngle: 10
5656 distanceThreshold: units.gu(4)
57+ minSpeed: 50
5758
5859 onStatusChanged: {
5960 switch (status) {
tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.cpp+203−16
@@ -22,6 +22,30 @@
2222
2323#include <DirectionalDragArea.h>
2424
25+class FakeTimer : public UbuntuGestures::AbstractTimer
26+{
27+ Q_OBJECT
28+public:
29+ FakeTimer(QObject *parent = 0)
30+ : UbuntuGestures::AbstractTimer(parent)
31+ {}
32+
33+ virtual int interval() const { return m_duration; }
34+ virtual void setInterval(int msecs) { m_duration = msecs; }
35+
36+ void emitTimeout() {Q_EMIT timeout();}
37+private:
38+ int m_duration;
39+};
40+
41+class FakeTimeSource : public AxisVelocityCalculator::TimeSource
42+{
43+public:
44+ FakeTimeSource() { m_msecsSinceReference = 0; }
45+ virtual qint64 msecsSinceReference() {return m_msecsSinceReference;}
46+ qint64 m_msecsSinceReference;
47+};
48+
2549class tst_DirectionalDragArea: public QObject
2650{
2751 Q_OBJECT
@@ -31,13 +55,24 @@ private Q_SLOTS:
3155 void initTestCase(); // will be called before the first test function is executed
3256 void cleanupTestCase(); // will be called after the last test function was executed.
3357
58+ void init(); // called right before each and every test function is executed
59+ void cleanup(); // called right after each and every test function is executed
60+
3461 void edgeDrag();
3562 void edgeDrag_data();
3663 void dragWithShortDirectionChange();
64+ void minSpeed();
65+ void minSpeed_data();
66+ void recognitionTimerUsage();
67+ void maxSilenceTime();
3768
3869private:
3970 QQuickView *createView();
71+ QQuickView *view;
4072 QTouchDevice *device;
73+ FakeTimer *fakeTimer;
74+ FakeTimeSource *fakeTimeSource;
75+ AxisVelocityCalculator *velCalcWithFakeTiming;
4176};
4277
4378void tst_DirectionalDragArea::initTestCase()
@@ -47,12 +82,42 @@ void tst_DirectionalDragArea::initTestCase()
4782 device->setType(QTouchDevice::TouchScreen);
4883 QWindowSystemInterface::registerTouchDevice(device);
4984 }
85+
86+ view = 0;
5087}
5188
5289void tst_DirectionalDragArea::cleanupTestCase()
5390{
5491}
5592
93+void tst_DirectionalDragArea::init()
94+{
95+ view = createView();
96+ view->setSource(QUrl::fromLocalFile("edgeDragExample.qml"));
97+ view->show();
98+ QVERIFY(QTest::qWaitForWindowExposed(view));
99+ QVERIFY(view->rootObject() != 0);
100+ qApp->processEvents();
101+
102+ fakeTimer = new FakeTimer;
103+ fakeTimeSource = new FakeTimeSource;
104+ velCalcWithFakeTiming = new AxisVelocityCalculator(fakeTimeSource);
105+}
106+
107+void tst_DirectionalDragArea::cleanup()
108+{
109+ delete view;
110+ view = 0;
111+
112+ delete fakeTimer;
113+ fakeTimer = 0;
114+
115+ // will bring fakeTimeSource down with it
116+ delete velCalcWithFakeTiming;
117+ fakeTimeSource = 0;
118+ velCalcWithFakeTiming = 0;
119+}
120+
56121QQuickView *tst_DirectionalDragArea::createView()
57122{
58123 QQuickView *window = new QQuickView(0);
@@ -119,17 +184,11 @@ void tst_DirectionalDragArea::edgeDrag()
119184 QFETCH(qreal, dragDistanceFactor);
120185 QFETCH(int, expectedGestureRecognition);
121186
122− QQuickView *view = createView();
123− QScopedPointer<QQuickView> scope(view);
124− view->setSource(QUrl::fromLocalFile("edgeDragExample.qml"));
125− view->show();
126− QVERIFY(QTest::qWaitForWindowExposed(view));
127− QVERIFY(view->rootObject() != 0);
128− qApp->processEvents();
129−
130187 DirectionalDragArea *edgeDragArea =
131188 view->rootObject()->findChild<DirectionalDragArea*>(dragAreaObjectName);
132189 QVERIFY(edgeDragArea != 0);
190+ edgeDragArea->setRecognitionTimer(fakeTimer);
191+ edgeDragArea->setAxisVelocityCalculator(velCalcWithFakeTiming);
133192
134193 QSignalSpy draggingSpy(edgeDragArea, SIGNAL(draggingChanged(bool)));
135194
@@ -230,17 +289,11 @@ void tst_DirectionalDragArea::edgeDrag_data()
230289 */
231290void tst_DirectionalDragArea::dragWithShortDirectionChange()
232291{
233− QQuickView *view = createView();
234− QScopedPointer<QQuickView> scope(view);
235− view->setSource(QUrl::fromLocalFile("edgeDragExample.qml"));
236− view->show();
237− QVERIFY(QTest::qWaitForWindowExposed(view));
238− QVERIFY(view->rootObject() != 0);
239− qApp->processEvents();
240−
241292 DirectionalDragArea *edgeDragArea =
242293 view->rootObject()->findChild<DirectionalDragArea*>("hpDragArea");
243294 QVERIFY(edgeDragArea != 0);
295+ edgeDragArea->setRecognitionTimer(fakeTimer);
296+ edgeDragArea->setAxisVelocityCalculator(velCalcWithFakeTiming);
244297
245298 QPointF initialTouchPos = calculateInitialTouchPos(edgeDragArea, view);
246299 QPointF touchPoint = initialTouchPos;
@@ -272,6 +325,140 @@ void tst_DirectionalDragArea::dragWithShortDirectionChange()
272325 QTest::touchEvent(view, device).release(0, touchPoint.toPoint());
273326}
274327
328+/*
329+ Checks that a gesture will be rejected if it's slower than minSpeed while
330+ status is Undecided.
331+ */
332+void tst_DirectionalDragArea::minSpeed()
333+{
334+ QFETCH(int, minSpeedMsecsDeviation);
335+ QFETCH(int, expectedStatusAfterSpeedCheck);
336+
337+ DirectionalDragArea *edgeDragArea =
338+ view->rootObject()->findChild<DirectionalDragArea*>("hpDragArea");
339+ QVERIFY(edgeDragArea != 0);
340+ edgeDragArea->setRecognitionTimer(fakeTimer);
341+ edgeDragArea->setAxisVelocityCalculator(velCalcWithFakeTiming);
342+
343+ QPointF initialTouchPos = calculateInitialTouchPos(edgeDragArea, view);
344+ QPointF touchPoint = initialTouchPos;
345+
346+ QPointF dragDirectionVector(1.0, 0.0);
347+ qreal distanceStep = edgeDragArea->distanceThreshold() * 0.1f;
348+ QPointF touchMovement = dragDirectionVector * distanceStep;
349+ qreal minSpeedMsecs = edgeDragArea->minSpeed() / 1000.0;
350+ qint64 timeStepMsecs = qFloor(distanceStep / minSpeedMsecs) + minSpeedMsecsDeviation;
351+
352+ // if it fails it means the params set in the QML file are not in harmony with the values
353+ // used in this test
354+ Q_ASSERT(timeStepMsecs > 0);
355+
356+ fakeTimeSource->m_msecsSinceReference = 0;
357+ QTest::touchEvent(view, device).press(0, touchPoint.toPoint());
358+
359+ // Move a bit in the proper direction
360+ for (int i=0; i < 4; ++i) {
361+ touchPoint += touchMovement;
362+ fakeTimeSource->m_msecsSinceReference += timeStepMsecs;
363+ QTest::touchEvent(view, device).move(0, touchPoint.toPoint());
364+ }
365+
366+ QCOMPARE((int)edgeDragArea->status(), (int)DirectionalDragArea::Undecided);
367+
368+ // Force the periodic speed check.
369+ fakeTimer->emitTimeout();
370+
371+ QCOMPARE((int)edgeDragArea->status(), expectedStatusAfterSpeedCheck);
372+}
373+
374+void tst_DirectionalDragArea::minSpeed_data()
375+{
376+ QTest::addColumn<int>("minSpeedMsecsDeviation");
377+ QTest::addColumn<int>("expectedStatusAfterSpeedCheck");
378+
379+ QTest::newRow("slower than minSpeed") << 20 << (int)DirectionalDragArea::Rejected;
380+ QTest::newRow("faster than minSpeed") << -20 << (int)DirectionalDragArea::Undecided;
381+}
382+
383+/*
384+ Checks that the recognition timer is started and stopped appropriately.
385+ I.e., check that it's running only while gesture recognition is taking place
386+ (status == Undecided)
387+ */
388+void tst_DirectionalDragArea::recognitionTimerUsage()
389+{
390+ DirectionalDragArea *edgeDragArea =
391+ view->rootObject()->findChild<DirectionalDragArea*>("hpDragArea");
392+ QVERIFY(edgeDragArea != 0);
393+ edgeDragArea->setRecognitionTimer(fakeTimer);
394+ edgeDragArea->setAxisVelocityCalculator(velCalcWithFakeTiming);
395+
396+ QPointF initialTouchPos = calculateInitialTouchPos(edgeDragArea, view);
397+ QPointF touchPoint = initialTouchPos;
398+
399+ QPointF dragDirectionVector(1.0, 0.0);
400+ QPointF touchMovement = dragDirectionVector * (edgeDragArea->distanceThreshold() * 0.2f);
401+
402+ QVERIFY(!fakeTimer->isRunning());
403+
404+ QTest::touchEvent(view, device).press(0, touchPoint.toPoint());
405+
406+ QVERIFY(fakeTimer->isRunning());
407+
408+ // Move a bit in the proper direction
409+ for (int i=0; i < 3; ++i) {
410+ touchPoint += touchMovement;
411+ QTest::touchEvent(view, device).move(0, touchPoint.toPoint());
412+ }
413+
414+ QVERIFY(fakeTimer->isRunning());
415+
416+ // Move beyond distance threshold
417+ touchPoint += 3*touchMovement;
418+ QTest::touchEvent(view, device).move(0, touchPoint.toPoint());
419+
420+ QCOMPARE((int)edgeDragArea->status(), (int)DirectionalDragArea::Recognized);
421+
422+ QVERIFY(!fakeTimer->isRunning());
423+}
424+
425+/*
426+ A gesture should be rejected if too much time has passed without any new input
427+ events from it.
428+ */
429+void tst_DirectionalDragArea::maxSilenceTime()
430+{
431+ DirectionalDragArea *edgeDragArea =
432+ view->rootObject()->findChild<DirectionalDragArea*>("hpDragArea");
433+ QVERIFY(edgeDragArea != 0);
434+ edgeDragArea->setRecognitionTimer(fakeTimer);
435+ edgeDragArea->setAxisVelocityCalculator(velCalcWithFakeTiming);
436+
437+ QPointF initialTouchPos = calculateInitialTouchPos(edgeDragArea, view);
438+ QPointF touchPoint = initialTouchPos;
439+
440+ fakeTimeSource->m_msecsSinceReference = 0;
441+ QTest::touchEvent(view, device).press(0, touchPoint.toPoint());
442+
443+ QCOMPARE((int)edgeDragArea->status(), (int)DirectionalDragArea::Undecided);
444+
445+ int neededTimeouts = qCeil((qreal)edgeDragArea->maxSilenceTime() / (qreal)fakeTimer->interval());
446+ if ((edgeDragArea->maxSilenceTime() % fakeTimer->interval()) == 0) {
447+ ++neededTimeouts;
448+ }
449+
450+ // Force the periodic speed check.
451+ for (int i = 0; i < neededTimeouts; ++i) {
452+ fakeTimer->emitTimeout();
453+
454+ if (i < neededTimeouts - 1) {
455+ QCOMPARE((int)edgeDragArea->status(), (int)DirectionalDragArea::Undecided);
456+ }
457+ }
458+
459+ QCOMPARE((int)edgeDragArea->status(), (int)DirectionalDragArea::Rejected);
460+}
461+
275462QTEST_MAIN(tst_DirectionalDragArea)
276463
277464#include "tst_DirectionalDragArea.moc"
tests/qmltests/CMakeLists.txt+3
@@ -37,6 +37,7 @@ add_qml_test(Components Stage IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS}
3737 ${CMAKE_BINARY_DIR}/plugins)
3838add_qml_test(Components Tile)
3939add_qml_test(Components PageHeader)
40+add_qml_test(Dash Dash IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
4041add_qml_test(Dash DashBar IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${CMAKE_CURRENT_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
4142add_qml_test(Dash DashContent IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS})
4243add_qml_test(Dash DashPreview)
@@ -47,6 +48,8 @@ add_qml_test(Dash FilterGrids IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMA
4748 ${CMAKE_BINARY_DIR}/tests/mocks)
4849add_qml_test(Dash/Apps RunningApplicationsGrid IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
4950add_qml_test(Dash/People PeopleFilterGrid IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${CMAKE_CURRENT_SOURCE_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
51+add_qml_test(Greeter Lockscreen IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins ${CMAKE_BINARY_DIR}/tests/mocks
52+ PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
5053add_qml_test(Greeter Tablet IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins ${CMAKE_BINARY_DIR}/tests/mocks
5154 ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
5255add_qml_test(Greeter Phone IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins ${CMAKE_BINARY_DIR}/tests/mocks
tests/qmltests/Components/tst_Carousel.qml+38−34
@@ -19,6 +19,7 @@ import QtTest 1.0
1919import "../../../Components/carousel.js" as Carousel
2020
2121TestCase {
22+ id: root
2223 name: "Carousel"
2324
2425 property real carouselWidth
@@ -49,9 +50,9 @@ TestCase {
4950 }
5051
5152 function test_getContinuousIndex(data) {
52− carouselWidth = data.carouselWidth
53− tileWidth = data.tileWidth
54− itemCount = data.itemCount
53+ root.carouselWidth = data.carouselWidth
54+ root.tileWidth = data.tileWidth
55+ root.itemCount = data.itemCount
5556
5657 var index = Carousel.getContinuousIndex(data.x,
5758 data.tileWidth,
@@ -69,23 +70,23 @@ TestCase {
6970 index: 0, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:0, result: 0},
7071 {tag:"in startup",
7172 index: 2, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:0, result: 100},
72−// {tag:"in startup with drawBuffer",
73−// index: 2, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:100, result: 0},
73+ {tag:"in startup with drawBuffer",
74+ index: 2, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:100, result: 0},
7475 {tag:"in the middle",
7576 index: 5, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:0, result: 350},
76−// {tag:"in the middle with drawBuffer",
77−// index: 5, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:100, result: 250},
77+ {tag:"in the middle with drawBuffer",
78+ index: 5, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:100, result: 250},
7879 {tag:"at end",
7980 index: 9, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:0, result: 600},
80−// {tag:"at end with drawBuffer",
81−// index: 9, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:100, result: 500},
81+ {tag:"at end with drawBuffer",
82+ index: 9, carouselWidth:400, tileWidth:100, itemCount:10, drawBuffer:100, result: 500},
8283 ]
8384 }
8485
8586 function test_getXFromContinuousIndex(data) {
86− carouselWidth = data.carouselWidth
87− tileWidth = data.tileWidth
88− itemCount = data.itemCount
87+ root.carouselWidth = data.carouselWidth
88+ root.tileWidth = data.tileWidth
89+ root.itemCount = data.itemCount
8990
9091 var x = Carousel.getXFromContinuousIndex(data.index,
9192 data.carouselWidth,
@@ -113,14 +114,14 @@ TestCase {
113114 }
114115
115116 function test_getViewTranslation(data) {
116− carouselWidth = data.carouselWidth
117− tileWidth = data.tileWidth
118− itemCount = data.itemCount
117+ root.carouselWidth = data.carouselWidth
118+ root.tileWidth = data.tileWidth
119+ root.itemCount = data.itemCount
119120
120121 var x = Carousel.getViewTranslation(data.x,
121122 data.tileWidth,
122− gapToMiddlePhase,
123− gapToEndPhase,
123+ root.gapToMiddlePhase,
124+ root.gapToEndPhase,
124125 data.translationXViewFactor)
125126 compare(x, data.result)
126127 }
@@ -158,30 +159,33 @@ TestCase {
158159
159160 // test for the getItemTranslation() function
160161 function test_getItemTranslation_data() {
161− return [ // tests if distance only affects the sign
162− {distance: 1, scale: 0, maxScale: 1, maxTranslation: 10, result: 10},
163−// {distance: 99, scale: 0, maxScale: 1, maxTranslation: 10, result: 10},
164− {distance: 0, scale: 0, maxScale: 1, maxTranslation: 10, result: -10},
165− {distance: -1, scale: 0, maxScale: 1, maxTranslation: 10, result: -10},
162+ return [ // tests for index and selectedIndex
163+ {index: 1, selectedIndex: 1, distance: 1, scale: 1, maxScale: 1, maxTranslation: 10, result: 0},
164+ // tests if distance only affects the sign
165+ {index: 1, selectedIndex: 2, distance: 1, scale: 0, maxScale: 1, maxTranslation: 10, result: 10},
166+ {index: 1, selectedIndex: 2, distance: 99, scale: 0, maxScale: 1, maxTranslation: 10, result: 10},
167+ {index: 1, selectedIndex: 2, distance: -1, scale: 0, maxScale: 1, maxTranslation: 10, result: -10},
168+ {index: 1, selectedIndex: 2, distance: -99, scale: 0, maxScale: 1, maxTranslation: 10, result: -10},
166169 // tests for the scale
167− {distance: 1, scale: 1, maxScale: 1, maxTranslation: 10, result: 0},
168− {distance: 1, scale: 0, maxScale: 1, maxTranslation: 10, result: 10},
169− {distance: 1, scale: 0.5, maxScale: 1, maxTranslation: 10, result: 5},
170+ {index: 1, selectedIndex: 2, distance: 1, scale: 1, maxScale: 1, maxTranslation: 10, result: 0},
171+ {index: 1, selectedIndex: 2, distance: 1, scale: 0, maxScale: 1, maxTranslation: 10, result: 10},
172+ {index: 1, selectedIndex: 2, distance: 1, scale: 0.5, maxScale: 1, maxTranslation: 10, result: 5},
170173 // tests for maxScale
171− {distance: 1, scale: 1, maxScale: 1, maxTranslation: 10, result: 0},
172− {distance: 1, scale: 1, maxScale: 2, maxTranslation: 10, result: 10},
173−// {distance: 1, scale: 1, maxScale: 0, maxTranslation: 10, result: 0},
174−// {distance: 1, scale: 1, maxScale: 99, maxTranslation: 10, result: 10},
174+ {index: 1, selectedIndex: 2, distance: 1, scale: 0, maxScale: 0.98, maxTranslation: 10, result: 9.8},
175+ {index: 1, selectedIndex: 2, distance: 1, scale: 0.5, maxScale: 0.95, maxTranslation: 10, result: 4.5},
176+ {index: 1, selectedIndex: 2, distance: 1, scale: 0.8, maxScale: 0.93, maxTranslation: 10, result: 1.3},
175177 // test for maxTranslation
176− {distance: 1, scale: 1, maxScale: 1, maxTranslation: 1, result: 0},
177− {distance: 1, scale: 0, maxScale: 1, maxTranslation: 1, result: 1},
178− {distance: 1, scale: 0, maxScale: 1, maxTranslation: 10, result: 10},
179− {distance: 1, scale: 0, maxScale: 1, maxTranslation: 0, result: 0},
178+ {index: 1, selectedIndex: 2, distance: 1, scale: 1, maxScale: 1, maxTranslation: 1, result: 0},
179+ {index: 1, selectedIndex: 2, distance: 1, scale: 0, maxScale: 1, maxTranslation: 1, result: 1},
180+ {index: 1, selectedIndex: 2, distance: 1, scale: 0, maxScale: 1, maxTranslation: 10, result: 10},
181+ {index: 1, selectedIndex: 2, distance: 1, scale: 0, maxScale: 1, maxTranslation: 0, result: 0},
180182 ]
181183 }
182184
183185 function test_getItemTranslation(data) {
184− var scale = Carousel.getItemTranslation(data.distance,
186+ var scale = Carousel.getItemTranslation(data.index,
187+ data.selectedIndex,
188+ data.distance,
185189 data.scale,
186190 data.maxScale,
187191 data.maxTranslation)
tests/qmltests/Components/tst_Stage.qml+5−48
@@ -195,51 +195,6 @@ Rectangle {
195195 name: "Stage"
196196 when: windowShown
197197
198− /* If you press Stage's right edge it should show the hint that it's possible to
199− switch to the next running application. This means (graphically) sliding the
200− next application window from Stage's right edge for a small part of its width */
201− function test_pressingRightEdgeShowsHint() {
202− redControl.checked = true
203−
204− tryCompare(stage, "usingScreenshots", true) // wait for the animation to start
205− tryCompare(stage, "usingScreenshots", false) // and then for it to end
206− compare(fakeAppManager.mainStageFocusedApplication.desktopFile, "red")
207− compare(fakeAppManager.mainStageApplications.get(0).desktopFile, "red")
208−
209− greenControl.checked = true
210−
211− tryCompare(stage, "usingScreenshots", true) // wait for the animation to start
212− tryCompare(stage, "usingScreenshots", false) // and then for it to end
213− compare(fakeAppManager.mainStageFocusedApplication.desktopFile, "green")
214− compare(fakeAppManager.mainStageApplications.get(0).desktopFile, "green")
215−
216− var draggingAreaCenterX = stage.width - (stage.rightEdgeDraggingAreaWidth / 2)
217− var draggingAreaCenterY = stage.height / 2
218− touchPress(stage, draggingAreaCenterX, draggingAreaCenterY)
219−
220− // wait for the animation to start
221− tryCompare(stage, "usingScreenshots", true)
222−
223− // "red" should be the new/next application being shown
224− compare(newAppScreenshot.application.desktopFile, "red")
225− tryCompareFunction(isShowingABitOfNewApp, true);
226−
227− // "green" should be the current application being shown
228− compare(oldAppScreenshot.application.desktopFile, "green")
229− tryCompareFunction(isCurrentAppFadingOut, true);
230−
231− touchRelease(stage, draggingAreaCenterX, draggingAreaCenterY)
232− }
233−
234− function isShowingABitOfNewApp() {
235− // it should come from the right and take less than half of the screen
236− // but at least 5% of it
237− return newAppScreenshot.x > stage.width/2
238− && newAppScreenshot.x < stage.width*(95/100)
239− && newAppScreenshot.y === 0
240− && newAppScreenshot.visible
241− }
242−
243198 function isCurrentAppFadingOut() {
244199 // it should get a bit translucent and smaller
245200 return oldAppScreenshot.opacity < 0.99
@@ -307,15 +262,17 @@ Rectangle {
307262
308263 var draggingAreaCenterX = stage.width - (stage.rightEdgeDraggingAreaWidth / 2)
309264 var draggingAreaCenterY = stage.height / 2
310− touchPress(stage, draggingAreaCenterX, draggingAreaCenterY)
265+ var finalTouchX = draggingAreaCenterX - units.gu(5)
266+ touchFlick(stage, draggingAreaCenterX, draggingAreaCenterY,
267+ finalTouchX, draggingAreaCenterY,
268+ true /* beginTouch */, false /* endTouch */)
311269
312270 // wait for the animation to start
313271 tryCompare(stage, "usingScreenshots", true)
314272
315273 compare(newAppScreenshot.withBackground, false, "switched app does have background enabled")
316274
317− tryCompareFunction(isShowingABitOfNewApp, true); // wait for the hint animation to finish
318− touchRelease(stage, draggingAreaCenterX, draggingAreaCenterY)
275+ touchRelease(stage, finalTouchX, draggingAreaCenterY)
319276 }
320277 }
321278}
tests/qmltests/Dash/qml/FakeLensView.qml+69−42
@@ -22,71 +22,98 @@ FocusScope {
2222 property Lens lens : null
2323 property bool isCurrent : false
2424
25− property alias rect_color1 : rect1.color
26− property alias rect_color2 : rect2.color
27− property alias rect_color3 : rect3.color
28−
2925 property ListModel searchHistory
3026
3127 signal endReached
3228 signal movementStarted
3329 signal positionedAtBeginning
3430
31+ property alias backColor : back.color
32+
3533 onEndReached: {
36− if (shell != undefined && shell.lens_status != undefined) {
37− shell.lens_status[lens.id].endReached++;
34+ if (shell != undefined && shell.lensStatus != undefined) {
35+ shell.lensStatus[lens.id].endReached++;
3836 }
3937 }
4038 onMovementStarted: {
41− if (shell != undefined && shell.lens_status != undefined) {
42− shell.lens_status[lens.id].movementStarted++;
39+ if (shell != undefined && shell.lensStatus != undefined) {
40+ shell.lensStatus[lens.id].movementStarted++;
4341 }
4442 }
4543 onPositionedAtBeginning: {
46− if (shell != undefined && shell.lens_status != undefined) {
47− shell.lens_status[lens.id].positionedAtBeginning++;
44+ if (shell != undefined && shell.lensStatus != undefined) {
45+ shell.lensStatus[lens.id].positionedAtBeginning++;
4846 }
4947 }
5048
49+ Rectangle {
50+ id: back
51+ anchors.fill: parent
52+ color: "grey"
53+ }
54+
55+ function randomBg()
56+ {
57+ var hex1=new Array("4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F")
58+ var bg="#"+hex1[Math.floor(Math.random()*hex1.length)]+
59+ hex1[Math.floor(Math.random()*hex1.length)]+
60+ hex1[Math.floor(Math.random()*hex1.length)]+
61+ hex1[Math.floor(Math.random()*hex1.length)]+
62+ hex1[Math.floor(Math.random()*hex1.length)]+
63+ hex1[Math.floor(Math.random()*hex1.length)]
64+ return bg
65+ }
5166
52− Column {
67+
68+ ListView {
69+ id: listView
5370 anchors.fill: parent
54− Rectangle {
55− id: rect1
56− height: parent.height/3; width: parent.width;
71+ model: lens ? lens.categories : null
72+ orientation: ListView.Vertical
5773
58− Text {
59− id: label1
60− anchors.fill: parent
61− verticalAlignment: Text.AlignVCenter
62− horizontalAlignment: Text.AlignHCenter
63− text: lens ? lens.id : ""
64− }
65− }
74+ delegate: Column {
75+ id: column
76+ width: listView.width
77+ height: childrenRect.height
6678
67− Rectangle {
68− id: rect2
69− height: parent.height/3; width: parent.width
79+ Rectangle {
80+ width: listView.width
81+ height: units.gu(3)
82+ color: randomBg()
7083
71− Text {
72− id: label2
73− anchors.fill: parent
74− verticalAlignment: Text.AlignVCenter
75− horizontalAlignment: Text.AlignHCenter
76− text: lens ? lens.id : ""
84+ Text {
85+ text: name
86+ font.family: "Ubuntu"
87+ font.weight: Font.Bold
88+ font.pixelSize: 20
89+ anchors.horizontalCenter: parent.horizontalCenter
90+ }
7791 }
78− }
79−
80− Rectangle {
81− id: rect3
82− height: parent.height/3; width: parent.width
92+ GridView {
93+ id: resultsGrid
94+ model: results
95+ cellWidth: units.gu(10); cellHeight: units.gu(10)
96+ height: childrenRect.height
97+ width: listView.width
98+ interactive: false
8399
84− Text {
85− id: label3
86− anchors.fill: parent
87− verticalAlignment: Text.AlignVCenter
88− horizontalAlignment: Text.AlignHCenter
89− text: lens ? lens.id : ""
100+ delegate: Component {
101+ id: resultDelegate
102+ Item {
103+ width: resultsGrid.cellWidth; height: resultsGrid.cellHeight
104+ Column {
105+ anchors.verticalCenter: parent.verticalCenter
106+ anchors.horizontalCenter: parent.horizontalCenter
107+ Image {
108+ width: units.gu(5)
109+ height: units.gu(5)
110+ source: column_1
111+ anchors.horizontalCenter: parent.horizontalCenter
112+ }
113+ Text { text: column_4; anchors.horizontalCenter: parent.horizontalCenter }
114+ }
115+ }
116+ }
90117 }
91118 }
92119 }
tests/qmltests/Dash/qml/fake_generic_lensView.qml+1−3
@@ -20,7 +20,5 @@ FakeLensView {
2020 id: fake_generic_lensView
2121 objectName: "fake_generic_lensView"
2222
23− rect_color1: "blue"
24− rect_color2: "orange"
25− rect_color3: "teal"
23+ backColor: "#D0D0D0"
2624}
tests/qmltests/Dash/qml/fake_lensView1.qml+1−3
@@ -20,7 +20,5 @@ FakeLensView {
2020 id: fake_lensView1
2121 objectName: "fake_lensView1"
2222
23− rect_color1: "red"
24− rect_color2: "green"
25− rect_color3: "blue"
23+ backColor: "#909090"
2624}
tests/qmltests/Dash/qml/fake_lensView2.qml+1−3
@@ -20,7 +20,5 @@ FakeLensView {
2020 id: fake_lensView2
2121 objectName: "fake_lensView2"
2222
23− rect_color1: "orange"
24− rect_color2: "grey"
25− rect_color3: "purple"
23+ backColor: "#A0A0A0"
2624}
tests/qmltests/Dash/qml/fake_lensView3.qml+1−3
@@ -20,7 +20,5 @@ FakeLensView {
2020 id: fake_lensView3
2121 objectName: "fake_lensView3"
2222
23− rect_color1: "yellow"
24− rect_color2: "cyan"
25− rect_color3: "white"
23+ backColor: "#B0B0B0"
2624}
tests/qmltests/Dash/qml/fake_lensView4.qml+1−3
@@ -20,7 +20,5 @@ FakeLensView {
2020 id: fake_lensView4
2121 objectName: "fake_lensView4"
2222
23− rect_color1: "grey"
24− rect_color2: "purple"
25− rect_color3: "red"
23+ backColor: "#C0C0C0"
2624}
tests/qmltests/Dash/tst_Dash.qmlnew file+133
@@ -0,0 +1,133 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import QtTest 1.0
19+import "../../../Dash"
20+import Ubuntu.Components 0.1
21+import Unity.Test 0.1 as UT
22+
23+Item {
24+ id: shell
25+ width: units.gu(40)
26+ height: units.gu(80)
27+
28+ property ListModel searchHistory : ListModel {}
29+
30+ Dash {
31+ id: dash
32+ anchors.fill: parent
33+ showLensOnLoaded: "MockLens2"
34+ }
35+
36+ LensDelegateMapper {
37+ id: lensDelegateMapper
38+ lensDelegateMapping: {
39+ "MockLens1": "../tests/qmltests/Dash/qml/fake_lensView1.qml",
40+ "MockLens2": "../tests/qmltests/Dash/qml/fake_lensView2.qml",
41+ "MockLens3": "../tests/qmltests/Dash/qml/fake_lensView3.qml",
42+ "MockLens4": "../tests/qmltests/Dash/qml/fake_lensView4.qml"
43+ }
44+ genericLens: "../tests/qmltests/Dash/qml/fake_generic_lensView.qml"
45+ }
46+
47+ UT.UnityTestCase {
48+ name: "Dash"
49+ when: windowShown
50+
51+ property var lenses
52+
53+ Component.onCompleted: {
54+ var dashContent = findChild(dash, "dashContent");
55+ dashContent.lensMapper = lensDelegateMapper;
56+ lenses = dashContent.lenses;
57+ }
58+
59+ function init() {
60+ // clear and reload the lenses.
61+ lenses.clear();
62+ var dashContentList = findChild(dash, "dashContentList");
63+ verify(dashContentList != undefined);
64+ tryCompare(dashContentList, "count", 0);
65+ lenses.load();
66+ }
67+
68+ function get_lens_data() {
69+ return [
70+ { tag: "MockLens1", visualIndex: 0, shouldBeVisible: true },
71+ { tag: "MockLens2", visualIndex: -1, shouldBeVisible: false },
72+ { tag: "MockLens3", visualIndex: 1, shouldBeVisible: true },
73+ { tag: "MockLens4", visualIndex: 2, shouldBeVisible: true },
74+ { tag: "MockLens5", visualIndex: 3, shouldBeVisible: true },
75+ ]
76+ }
77+
78+ function test_set_current_lens_data() {
79+ return get_lens_data()
80+ }
81+
82+ function test_set_current_lens(data) {
83+ // wait for lenses to load
84+ tryCompare(lenses, "loaded", true);
85+
86+ var dashbar = findChild(dash, "dashbar");
87+ verify(dashbar != undefined)
88+ var dashContent = findChild(dash, "dashContent");
89+ var current_index = dashContent.currentIndex;
90+
91+ dash.setCurrentLens(data.tag, true /* animate */, false /* reset */);
92+ compare(dashContent.currentIndex, data.shouldBeVisible ? data.visualIndex : current_index);
93+ compare(dashbar.currentIndex, data.shouldBeVisible ? data.visualIndex : current_index);
94+ }
95+
96+ function test_show_lens_on_load_data() {
97+ return get_lens_data()
98+ }
99+
100+ function test_show_lens_on_load(data) {
101+ if (data.shouldBeVisible == false) {
102+ console.log("Not testing " + data.tag + ": not visible");
103+ return;
104+ }
105+ dash.showLensOnLoaded = data.tag
106+
107+ var dashContentList = findChild(dash, "dashContentList");
108+ verify(dashContentList != undefined);
109+ tryCompare(dashContentList, "currentIndex", data.visualIndex);
110+ }
111+
112+ function test_dash_bar_set_index_connection_data() {
113+ return get_lens_data()
114+ }
115+
116+ function test_dash_bar_set_index_connection(data) {
117+ if (data.shouldBeVisible == false) {
118+ console.log("Not testing " + data.tag + ": not visible");
119+ return;
120+ }
121+ // wait for lenses to load
122+ tryCompare(lenses, "loaded", true);
123+
124+ var dashbar = findChild(dash, "dashbar");
125+ verify(dashbar != undefined)
126+ var dashContent = findChild(dash, "dashContent");
127+ var current_index = dashContent.currentIndex;
128+
129+ dashbar.itemSelected(data.visualIndex);
130+ compare(dashContent.currentIndex, data.shouldBeVisible ? data.visualIndex : current_index);
131+ }
132+ }
133+}
tests/qmltests/Dash/tst_DashContent.qml+61−56
@@ -28,7 +28,7 @@ Item {
2828
2929 property ListModel searchHistory: ListModel {}
3030
31− property var lens_status: {
31+ property var lensStatus: {
3232 'MockLens1': { 'movementStarted': 0, 'positionedAtBeginning': 0 },
3333 'MockLens2': { 'movementStarted': 0, 'positionedAtBeginning': 0 },
3434 'MockLens3': { 'movementStarted': 0, 'positionedAtBeginning': 0 },
@@ -41,53 +41,58 @@ Item {
4141 }
4242
4343 DashContent {
44− id: dash_content
44+ id: dashContent
4545 anchors.fill: parent
4646
4747 model: lensesModel
4848 lenses : lensesModel
4949
50− lensDelegateMapping: { "MockLens3" : "../tests/qmltests/Dash/qml/fake_lensView3.qml",
51− "MockLens2" : "../tests/qmltests/Dash/qml/fake_lensView2.qml",
52− "MockLens1" : "../tests/qmltests/Dash/qml/fake_lensView1.qml",
53− "MockLens4" : "../tests/qmltests/Dash/qml/fake_lensView4.qml"
54− }
50+ lensMapper : lensDelegateMapper
51+ }
5552
53+ LensDelegateMapper {
54+ id: lensDelegateMapper
55+ lensDelegateMapping: {
56+ "MockLens1": "../tests/qmltests/Dash/qml/fake_lensView1.qml",
57+ "MockLens2": "../tests/qmltests/Dash/qml/fake_lensView2.qml",
58+ "MockLens3": "../tests/qmltests/Dash/qml/fake_lensView3.qml",
59+ "MockLens4": "../tests/qmltests/Dash/qml/fake_lensView4.qml"
60+ }
5661 genericLens: "../tests/qmltests/Dash/qml/fake_generic_lensView.qml"
5762 }
5863
5964 function clear_lens_status() {
60− lens_status["MockLens1"].movementStarted = 0;
61− lens_status["MockLens1"].positionedAtBeginning = 0;
65+ lensStatus["MockLens1"].movementStarted = 0;
66+ lensStatus["MockLens1"].positionedAtBeginning = 0;
6267
63− lens_status["MockLens2"].movementStarted = 0;
64− lens_status["MockLens2"].positionedAtBeginning = 0;
68+ lensStatus["MockLens2"].movementStarted = 0;
69+ lensStatus["MockLens2"].positionedAtBeginning = 0;
6570
66− lens_status["MockLens3"].movementStarted = 0;
67− lens_status["MockLens3"].positionedAtBeginning = 0;
71+ lensStatus["MockLens3"].movementStarted = 0;
72+ lensStatus["MockLens3"].positionedAtBeginning = 0;
6873
69− lens_status["MockLens4"].movementStarted = 0;
70− lens_status["MockLens4"].positionedAtBeginning = 0;
74+ lensStatus["MockLens4"].movementStarted = 0;
75+ lensStatus["MockLens4"].positionedAtBeginning = 0;
7176
72− lens_status["MockLens5"].movementStarted = 0;
73− lens_status["MockLens5"].positionedAtBeginning = 0;
77+ lensStatus["MockLens5"].movementStarted = 0;
78+ lensStatus["MockLens5"].positionedAtBeginning = 0;
7479 }
7580
7681 SignalSpy {
77− id: lensLoaded_spy
78− target: dash_content
82+ id: lensLoadedSpy
83+ target: dashContent
7984 signalName: "lensLoaded"
8085 }
8186
8287 SignalSpy {
83− id: movementStarted_spy
84− target: dash_content
88+ id: movementStartedSpy
89+ target: dashContent
8590 signalName: "movementStarted"
8691 }
8792
8893 SignalSpy {
89− id: contentEndReached_spy
90− target: dash_content
94+ id: contentEndReachedSpy
95+ target: dashContent
9196 signalName: "contentEndReached"
9297 }
9398
@@ -96,13 +101,13 @@ Item {
96101 when: windowShown
97102
98103 function init() {
99− lensLoaded_spy.clear();
100− movementStarted_spy.clear();
101− contentEndReached_spy.clear()
104+ lensLoadedSpy.clear();
105+ movementStartedSpy.clear();
106+ contentEndReachedSpy.clear()
102107 clear_lens_status();
103108
104109 // clear, wait for dahs to empty and load lenses.
105− var dashContentList = findChild(dash_content, "dashContentList");
110+ var dashContentList = findChild(dashContent, "dashContentList");
106111 verify(dashContentList != undefined)
107112 lensesModel.clear();
108113 tryCompare(dashContentList, "count", 0);
@@ -110,47 +115,47 @@ Item {
110115 }
111116
112117 function test_movement_started_signal() {
113− dash_content.setCurrentLensAtIndex(3, true, false);
118+ dashContent.setCurrentLensAtIndex(3, true, false);
114119
115− var dashContentList = findChild(dash_content, "dashContentList");
120+ var dashContentList = findChild(dashContent, "dashContentList");
116121 verify(dashContentList != undefined)
117− tryCompare(lensLoaded_spy, "count", 5);
122+ tryCompare(lensLoadedSpy, "count", 5);
118123
119124 dashContentList.movementStarted();
120− compare(movementStarted_spy.count, 1, "DashContent should have emitted movementStarted signal when content list did.");
121− compare(lens_status["MockLens1"].movementStarted, 1, "MockLens1 should have emitted movementStarted signal when content list did.");
122− compare(lens_status["MockLens2"].movementStarted, 1, "MockLens2 should have emitted movementStarted signal when content list did.");
123− compare(lens_status["MockLens3"].movementStarted, 1, "MockLens3 should have emitted movementStarted signal when content list did.");
124− compare(lens_status["MockLens4"].movementStarted, 1, "MockLens4 should have emitted movementStarted signal when content list did.");
125− compare(lens_status["MockLens5"].movementStarted, 1, "MockLens5 should have emitted movementStarted signal when content list did.");
125+ compare(movementStartedSpy.count, 1, "DashContent should have emitted movementStarted signal when content list did.");
126+ compare(lensStatus["MockLens1"].movementStarted, 1, "MockLens1 should have emitted movementStarted signal when content list did.");
127+ compare(lensStatus["MockLens2"].movementStarted, 1, "MockLens2 should have emitted movementStarted signal when content list did.");
128+ compare(lensStatus["MockLens3"].movementStarted, 1, "MockLens3 should have emitted movementStarted signal when content list did.");
129+ compare(lensStatus["MockLens4"].movementStarted, 1, "MockLens4 should have emitted movementStarted signal when content list did.");
130+ compare(lensStatus["MockLens5"].movementStarted, 1, "MockLens5 should have emitted movementStarted signal when content list did.");
126131 }
127132
128133 function test_positioned_at_beginning_signal() {
129− dash_content.setCurrentLensAtIndex(3, true, false);
134+ dashContent.setCurrentLensAtIndex(3, true, false);
130135
131− tryCompare(lensLoaded_spy, "count", 5);
136+ tryCompare(lensLoadedSpy, "count", 5);
132137
133− dash_content.positionedAtBeginning();
134− compare(lens_status["MockLens1"].positionedAtBeginning, 1, "MockLens1 should have emitted positionedAtBeginning signal when DashContent did.");
135− compare(lens_status["MockLens2"].positionedAtBeginning, 1, "MockLens2 should have emitted positionedAtBeginning signal when DashContent did.");
136− compare(lens_status["MockLens3"].positionedAtBeginning, 1, "MockLens3 should have emitted positionedAtBeginning signal when DashContent did.");
137− compare(lens_status["MockLens4"].positionedAtBeginning, 1, "MockLens4 should have emitted positionedAtBeginning signal when DashContent did.");
138− compare(lens_status["MockLens5"].positionedAtBeginning, 1, "MockLens5 should have emitted positionedAtBeginning signal when DashContent did.");
138+ dashContent.positionedAtBeginning();
139+ compare(lensStatus["MockLens1"].positionedAtBeginning, 1, "MockLens1 should have emitted positionedAtBeginning signal when DashContent did.");
140+ compare(lensStatus["MockLens2"].positionedAtBeginning, 1, "MockLens2 should have emitted positionedAtBeginning signal when DashContent did.");
141+ compare(lensStatus["MockLens3"].positionedAtBeginning, 1, "MockLens3 should have emitted positionedAtBeginning signal when DashContent did.");
142+ compare(lensStatus["MockLens4"].positionedAtBeginning, 1, "MockLens4 should have emitted positionedAtBeginning signal when DashContent did.");
143+ compare(lensStatus["MockLens5"].positionedAtBeginning, 1, "MockLens5 should have emitted positionedAtBeginning signal when DashContent did.");
139144 }
140145
141146 function test_lens_loaded() {
142− tryCompare(lensLoaded_spy, "count", 5);
147+ tryCompare(lensLoadedSpy, "count", 5);
143148 }
144149
145150 function test_content_end_reached() {
146− var dashContentList = findChild(dash_content, "dashContentList");
151+ var dashContentList = findChild(dashContent, "dashContentList");
147152 verify(dashContentList != undefined);
148− tryCompare(lensLoaded_spy, "count", 5);
153+ tryCompare(lensLoadedSpy, "count", 5);
149154
150− dash_content.setCurrentLensAtIndex(0, true, false);
155+ dashContent.setCurrentLensAtIndex(0, true, false);
151156 dashContentList.currentItem.item.endReached();
152157
153− compare(contentEndReached_spy.count, 1);
158+ compare(contentEndReachedSpy.count, 1);
154159 }
155160
156161 // This tests that setting the current lens index will end up at the correct index even if
@@ -159,19 +164,19 @@ Item {
159164 verify(lensesModel.loaded == false);
160165
161166 // next index is 1 if current is -1, otherwise it's current + 1
162− var next_index = ((dash_content.currentIndex == -1 ? 0 : dash_content.currentIndex) + 1) % 5
167+ var next_index = ((dashContent.currentIndex == -1 ? 0 : dashContent.currentIndex) + 1) % 5
163168
164− dash_content.setCurrentLensAtIndex(next_index, true, false);
165− tryCompare(dash_content, "currentIndex", next_index);
169+ dashContent.setCurrentLensAtIndex(next_index, true, false);
170+ tryCompare(dashContent, "currentIndex", next_index);
166171 verify(lensesModel.loaded == true);
167172
168173 // test greater than lens count.
169− dash_content.setCurrentLensAtIndex(lensesModel.count, true, false);
170− compare(dash_content.currentIndex, 4);
174+ dashContent.setCurrentLensAtIndex(lensesModel.count, true, false);
175+ compare(dashContent.currentIndex, 4);
171176 }
172177
173178 function get_current_item_object_name() {
174− var dashContentList = findChild(dash_content, "dashContentList");
179+ var dashContentList = findChild(dashContent, "dashContentList");
175180 verify(dashContentList != undefined);
176181
177182 if (dashContentList.currentItem != undefined) {
@@ -193,7 +198,7 @@ Item {
193198 }
194199
195200 function test_lens_mapping(data) {
196− dash_content.setCurrentLensAtIndex(data.index, true, false);
201+ dashContent.setCurrentLensAtIndex(data.index, true, false);
197202 tryCompareFunction(get_current_item_object_name, data.objectName)
198203 }
199204
tests/qmltests/Greeter/tst_Lockscreen.qmlnew file+205
@@ -0,0 +1,205 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import QtTest 1.0
19+import ".."
20+import "../../../Greeter"
21+import Ubuntu.Components 0.1
22+import LightDM 0.1 as LightDM
23+import Unity.Test 0.1 as UT
24+
25+Rectangle {
26+ width: units.gu(60)
27+ height: units.gu(80)
28+ color: "orange"
29+
30+ Lockscreen {
31+ id: lockscreen
32+ anchors.fill: parent
33+ anchors.rightMargin: units.gu(18)
34+ placeholderText: "Please enter your PIN"
35+ alphaNumeric: pinPadCheckBox.checked
36+ pinLength: pinLengthTextField.text
37+ username: "Lola"
38+ }
39+
40+ Connections {
41+ target: lockscreen
42+
43+ onEmergencyCall: emergencyCheckBox.checked = true
44+ onUnlocked: unlockedCheckBox.checked = true
45+ }
46+
47+ Connections {
48+ target: LightDM.Greeter
49+
50+ onShowPrompt: {
51+ if (text.indexOf("PIN") >= 0) {
52+ lockscreen.alphaNumeric = false
53+ } else {
54+ lockscreen.alphaNumeric = true
55+ }
56+ lockscreen.placeholderText = text;
57+ }
58+ }
59+
60+ Rectangle {
61+ anchors.fill: parent
62+ anchors.leftMargin: lockscreen.width
63+ color: "lightgray"
64+
65+ Column {
66+ anchors.fill: parent
67+ anchors.margins: units.gu(1)
68+
69+ Row {
70+ CheckBox {
71+ id: pinPadCheckBox
72+ }
73+ Label {
74+ text: "Alphanumeric"
75+ anchors.verticalCenter: parent.verticalCenter
76+ }
77+ }
78+ Row {
79+ CheckBox {
80+ id: emergencyCheckBox
81+ }
82+ Label {
83+ text: "Emergency Call"
84+ anchors.verticalCenter: parent.verticalCenter
85+ }
86+ }
87+ Row {
88+ TextField {
89+ id: pinLengthTextField
90+ width: units.gu(7)
91+ text: "4"
92+ }
93+ Label {
94+ text: "PIN length"
95+ }
96+ }
97+ Label {
98+ id: pinLabel
99+ anchors.verticalCenter: parent.verticalCenter
100+ }
101+ Row {
102+ CheckBox {
103+ id: unlockedCheckBox
104+ }
105+ Label {
106+ text: "Unlocked signal"
107+ anchors.verticalCenter: parent.verticalCenter
108+ }
109+ }
110+ Button {
111+ text: "start auth (1234)"
112+ onClicked: LightDM.Greeter.authenticate("has-pin")
113+ }
114+ Button {
115+ text: "start auth (password)"
116+ onClicked: LightDM.Greeter.authenticate("has-password")
117+ }
118+ }
119+ }
120+
121+ UT.UnityTestCase {
122+ name: "Lockscreen"
123+ when: windowShown
124+
125+ function test_loading_data() {
126+ return [
127+ {tag: "numeric", alphanumeric: false, pinPadAvailable: true },
128+ {tag: "alphanumeric", alphanumeric: true, pinPadAvailable: false }
129+ ]
130+ }
131+
132+ function test_loading(data) {
133+ lockscreen.alphaNumeric = data.alphanumeric
134+ waitForRendering(lockscreen)
135+ if (data.pinPadAvailable) {
136+ compare(findChild(lockscreen, "pinPadButton8").text, "8", "Could not find number 8 on PinPad")
137+ } else {
138+ compare(findChild(lockscreen, "pinPadButton8"), undefined, "Could find number 8 on PinPad even though it should be only OSK")
139+ }
140+ }
141+
142+ function test_emergency_call_data() {
143+ return [
144+ {tag: "numeric", alphanumeric: false },
145+ {tag: "alphanumeric", alphanumeric: true }
146+ ]
147+ }
148+
149+ function test_emergency_call(data) {
150+ emergencyCheckBox.checked = false
151+ lockscreen.alphaNumeric = data.alphanumeric
152+ waitForRendering(lockscreen)
153+ var emergencyButton = findChild(lockscreen, "emergencyCallIcon")
154+ mouseClick(emergencyButton, units.gu(1), units.gu(1))
155+ tryCompare(emergencyCheckBox, "checked", true)
156+
157+ }
158+
159+ function test_labels_data() {
160+ return [
161+ {tag: "numeric", alphanumeric: false, placeholderText: "Please enter your PIN", username: "foobar" },
162+ {tag: "alphanumeric", alphanumeric: true, placeholderText: "Please enter your password", username: "Lola" }
163+ ]
164+ }
165+
166+ function test_labels(data) {
167+ lockscreen.alphaNumeric = data.alphanumeric
168+ lockscreen.placeholderText = data.placeholderText
169+ waitForRendering(lockscreen)
170+ compare(findChild(lockscreen, "pinentryField").placeholderText, data.placeholderText, "Placeholdertext is not what it should be")
171+ if (data.alphanumeric) {
172+ compare(findChild(lockscreen, "greeterLabel").text, "Hello " + data.username, "Greeter is not set correctly")
173+ }
174+ }
175+
176+
177+ function test_unlock_data() {
178+ return [
179+ {tag: "numeric", alphanumeric: false, username: "has-pin", password: "1234", unlockedSignal: true},
180+ {tag: "alphanumeric", alphanumeric: true, username: "has-password", password: "password", unlockedSignal: true},
181+ {tag: "numeric (wrong)", alphanumeric: false, username: "has-pin", password: "4321", unlockedSignal: false},
182+ {tag: "alphanumeric (wrong)", alphanumeric: true, username: "has-password", password: "drowssap", unlockedSignal: false},
183+ ]
184+ }
185+
186+ function test_unlock(data) {
187+ unlockedCheckBox.checked = false
188+ LightDM.Greeter.authenticate(data.username)
189+
190+ if (data.alphanumeric) {
191+ var inputField = findChild(lockscreen, "pinentryField")
192+ mouseClick(inputField, units.gu(1), units.gu(1))
193+ typeString(data.password)
194+ keyClick(Qt.Key_Enter)
195+ } else {
196+ for (var i = 0; i < data.password.length; ++i) {
197+ var character = data.password.charAt(i)
198+ var button = findChild(lockscreen, "pinPadButton" + character)
199+ mouseClick(button, units.gu(1), units.gu(1))
200+ }
201+ }
202+ tryCompare(unlockedCheckBox, "checked", data.unlockedSignal)
203+ }
204+ }
205+}