Merge lp:~vthompson/music-app/remix-walkthrough into lp:music-app/remix

Proposed by Victor Thompson
Status: Merged
Approved by: Andrew Hayzen
Approved revision: 709
Merged at revision: 796
Proposed branch: lp:~vthompson/music-app/remix-walkthrough
Merge into: lp:music-app/remix
Diff against target: 972 lines (+544/-79)
9 files modified
common/Walkthrough/FirstRunWalkthrough.qml (+43/-0)
common/Walkthrough/Slide1.qml (+73/-0)
common/Walkthrough/Slide2.qml (+67/-0)
common/Walkthrough/Slide3.qml (+82/-0)
common/Walkthrough/Walkthrough.qml (+136/-0)
music-app.qml (+12/-3)
po/com.ubuntu.music.pot (+111/-75)
tests/autopilot/music_app/__init__.py (+16/-0)
tests/autopilot/music_app/tests/test_music.py (+4/-1)
To merge this branch: bzr merge lp:~vthompson/music-app/remix-walkthrough
Reviewer Review Type Date Requested Status
Andrew Hayzen Approve
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Review via email: mp+239293@code.launchpad.net

Commit message

Initial walkthrough prototype.

Description of the change

Initial walkthrough prototype borrowed from Flashback. Currently it needs graphic resources, suggestions for text, and general layout recommendations from Design.

To post a comment you must log in.
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Andrew Hayzen (ahayzen) wrote :

2 inline comments and we need design for this.

review: Needs Information
700. By Victor Thompson

Update pot file

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
701. By Victor Thompson

update to show walkthrough when there is no music

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Andrew Hayzen (ahayzen) wrote :

Would be good if we could get rid of these console errors

file:///home/andy/Workspace/sdk/vthompson-music-app-remix-walkthrough/common/Walkthrough/Slide2.qml:31:9: QML Column: Cannot specify top, bottom, verticalCenter, fill or centerIn anchors for items inside Column. Column will not function.
file:///home/andy/Workspace/sdk/vthompson-music-app-remix-walkthrough/common/Walkthrough/Slide1.qml:32:9: QML Column: Cannot specify top, bottom, verticalCenter, fill or centerIn anchors for items inside Column. Column will not function.

I'm also worried about the startup cost of always loading the Walkthrough, could you use createObject (the same as MusicNowPlaying) where you push to the stack.

review: Needs Fixing
702. By Victor Thompson

Merge AP skip of walkthrough

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
703. By Victor Thompson

Dynamically create Walkthrough.

704. By Victor Thompson

Add objectName to object.

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
705. By Victor Thompson

revert debug code

706. By Victor Thompson

Add objectName to FIrstRunWalkthrough.qml

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
707. By Victor Thompson

Set toolbar visible and firstRun to false when finished.

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
708. By Victor Thompson

Resolve console warnings

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
709. By Victor Thompson

Update toolbar visible toggle

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Andrew Hayzen (ahayzen) wrote :

Awesome, thanks for adding those extra fixes :)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added directory 'common/Walkthrough'
=== added file 'common/Walkthrough/FirstRunWalkthrough.qml'
--- common/Walkthrough/FirstRunWalkthrough.qml 1970-01-01 00:00:00 +0000
+++ common/Walkthrough/FirstRunWalkthrough.qml 2015-01-20 05:33:53 +0000
@@ -0,0 +1,43 @@
1/*
2 * Copyright (C) 2014
3 * Nekhelesh Ramananthan <nik90@ubuntu.com>
4 * Victor Thompson <victor.thompson@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * Upstream location:
19 * https://github.com/krnekhelesh/flashback
20 */
21
22import QtQuick 2.3
23import Ubuntu.Components 1.1
24
25// Initial Walkthrough tutorial
26Walkthrough {
27 id: walkthrough
28 objectName: "walkthroughPage"
29
30 appName: "Music"
31
32 onFinished: {
33 walkthrough.visible = false
34 pageStack.pop()
35 firstRun = false
36 }
37
38 model: [
39 Slide1{},
40 Slide2{},
41 Slide3{}
42 ]
43}
044
=== added file 'common/Walkthrough/Slide1.qml'
--- common/Walkthrough/Slide1.qml 1970-01-01 00:00:00 +0000
+++ common/Walkthrough/Slide1.qml 2015-01-20 05:33:53 +0000
@@ -0,0 +1,73 @@
1/*
2 * Copyright (C) 2014-2015
3 * Nekhelesh Ramananthan <nik90@ubuntu.com>
4 * Victor Thompson <victor.thompson@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * Upstream location:
19 * https://github.com/krnekhelesh/flashback
20 */
21
22import QtQuick 2.3
23import Ubuntu.Components 1.1
24
25// Slide 1
26Component {
27 id: slide1
28
29 Item {
30 id: slide1Container
31
32 UbuntuShape {
33 anchors {
34 top: parent.top
35 topMargin: units.gu(6)
36 horizontalCenter: parent.horizontalCenter
37 }
38 height: (parent.height - bodyText.contentHeight - introductionText.height - 4*units.gu(4))/2
39 image: Image {
40 id: centerImage
41 source: Qt.resolvedUrl("../../images/music-app@30.png")
42 }
43 radius: "medium"
44 width: height
45 }
46
47 Label {
48 id: introductionText
49 anchors {
50 bottom: bodyText.top
51 bottomMargin: units.gu(4)
52 }
53 fontSize: "x-large"
54 height: contentHeight
55 horizontalAlignment: Text.AlignHLeft
56 text: i18n.tr("Welcome to Music")
57 }
58
59 Label {
60 id: bodyText
61 anchors {
62 bottom: parent.bottom
63 bottomMargin: units.gu(10)
64 }
65 fontSize: "large"
66 height: contentHeight
67 horizontalAlignment: Text.AlignHLeft
68 text: i18n.tr("Enjoy your favorite music with Ubuntu's Music App. Take a short tour on how to get started or press skip to start listening now.")
69 width: parent.width
70 wrapMode: Text.WordWrap
71 }
72 }
73}
074
=== added file 'common/Walkthrough/Slide2.qml'
--- common/Walkthrough/Slide2.qml 1970-01-01 00:00:00 +0000
+++ common/Walkthrough/Slide2.qml 2015-01-20 05:33:53 +0000
@@ -0,0 +1,67 @@
1/*
2 * Copyright (C) 2014-2015
3 * Nekhelesh Ramananthan <nik90@ubuntu.com>
4 * Victor Thompson <victor.thompson@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * Upstream location:
19 * https://github.com/krnekhelesh/flashback
20 */
21
22import QtQuick 2.3
23import Ubuntu.Components 1.1
24
25// Walkthrough - Slide 2
26Component {
27 id: slide2
28 Item {
29 id: slide2Container
30
31 Image {
32 id: centerImage
33 anchors {
34 top: parent.top
35 topMargin: units.gu(6)
36 horizontalCenter: parent.horizontalCenter
37 }
38 height: (parent.height - bodyText.contentHeight - introductionText.height - 4*units.gu(4))/2
39 fillMode: Image.PreserveAspectFit
40 source: Qt.resolvedUrl("../../images/sd_phone_icon.png")
41 }
42
43 Label {
44 id: introductionText
45 anchors {
46 bottom: bodyText.top
47 bottomMargin: units.gu(4)
48 }
49 fontSize: "x-large"
50 horizontalAlignment: Text.AlignHLeft
51 text: i18n.tr("Import your music")
52 }
53
54 Label {
55 id: bodyText
56 anchors {
57 bottom: parent.bottom
58 bottomMargin: units.gu(10)
59 }
60 fontSize: "large"
61 horizontalAlignment: Text.AlignHLeft
62 text: i18n.tr("Plug your phone into your Ubuntu computer and drag and drop files staight across.")
63 width: parent.width
64 wrapMode: Text.WordWrap
65 }
66 }
67}
068
=== added file 'common/Walkthrough/Slide3.qml'
--- common/Walkthrough/Slide3.qml 1970-01-01 00:00:00 +0000
+++ common/Walkthrough/Slide3.qml 2015-01-20 05:33:53 +0000
@@ -0,0 +1,82 @@
1/*
2 * Copyright (C) 2014-2015
3 * Nekhelesh Ramananthan <nik90@ubuntu.com>
4 * Victor Thompson <victor.thompson@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * Upstream location:
19 * https://github.com/krnekhelesh/flashback
20 */
21
22import QtQuick 2.3
23import Ubuntu.Components 1.1
24
25// Walkthrough - Slide 7
26Component {
27 id: slide7
28 Item {
29 id: slide7Container
30
31 Image {
32 id: smileImage
33 anchors {
34 top: parent.top
35 topMargin: units.gu(4)
36 horizontalCenter: parent.horizontalCenter
37 }
38 height: (parent.height - introductionText.height - finalMessage.contentHeight - 4.5*units.gu(4))/2
39 fillMode: Image.PreserveAspectFit
40 source: Qt.resolvedUrl("../../images/music_download_icon.png")
41 }
42
43 Label {
44 id: introductionText
45 anchors {
46 bottom: finalMessage.top
47 bottomMargin: units.gu(4)
48 }
49 fontSize: "x-large"
50 horizontalAlignment: Text.AlignHLeft
51 text: i18n.tr("Download new music")
52 }
53
54 Label {
55 id: finalMessage
56 anchors {
57 bottom: continueButton.top
58 bottomMargin: units.gu(4)
59 }
60 fontSize: "large"
61 horizontalAlignment: Text.AlignHLeft
62 text: i18n.tr("Directly import music bought while browsing online.")
63 width: parent.width
64 wrapMode: Text.WordWrap
65 }
66
67 Button {
68 id: continueButton
69 anchors {
70 bottom: parent.bottom
71 bottomMargin: units.gu(4)
72 horizontalCenter: parent.horizontalCenter
73 }
74 color: UbuntuColors.green
75 height: units.gu(5)
76 text: i18n.tr("Start")
77 width: units.gu(18)
78
79 onClicked: finished()
80 }
81 }
82}
083
=== added file 'common/Walkthrough/Walkthrough.qml'
--- common/Walkthrough/Walkthrough.qml 1970-01-01 00:00:00 +0000
+++ common/Walkthrough/Walkthrough.qml 2015-01-20 05:33:53 +0000
@@ -0,0 +1,136 @@
1/*
2 * Copyright (C) 2014-2015
3 * Nekhelesh Ramananthan <nik90@ubuntu.com>
4 * Victor Thompson <victor.thompson@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 3.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 * Upstream location:
19 * https://github.com/krnekhelesh/flashback
20 */
21
22import QtQuick 2.3
23import Ubuntu.Components 1.1
24import Ubuntu.Components.ListItems 1.0 as ListItem
25
26Page {
27 id: walkthrough
28
29 // Property to set the app name used in the walkthrough
30 property string appName
31
32 // Property to check if this is the first run or not
33 property bool isFirstRun: true
34
35 // Property to store the slides shown in the walkthrough (Each slide is a component defined in a separate file for simplicity)
36 property list<Component> model
37
38 // Property to signal walkthrough completion
39 signal finished
40
41 // ListView to show the slides
42 ListView {
43 id: listView
44 anchors {
45 left: parent.left
46 right: parent.right
47 top: parent.top
48 bottom: slideIndicator.top
49 }
50
51 model: walkthrough.model
52 snapMode: ListView.SnapOneItem
53 orientation: Qt.Horizontal
54 highlightMoveDuration: UbuntuAnimation.FastDuration
55 highlightRangeMode: ListView.StrictlyEnforceRange
56 highlightFollowsCurrentItem: true
57
58 delegate: Item {
59 width: listView.width
60 height: listView.height
61 clip: true
62
63 Loader {
64 anchors {
65 fill: parent
66 margins: units.gu(2)
67 }
68
69 sourceComponent: modelData
70 }
71 }
72 }
73
74 // Label to skip the walkthrough.
75 Label {
76 id: skipLabel
77
78 color: "grey"
79 fontSize: "medium"
80 objectName: "skipLabel"
81 width: contentWidth
82 text: i18n.tr("Skip")
83
84 anchors {
85 bottom: parent.bottom
86 left: parent.left
87 margins: units.gu(2)
88 }
89
90 MouseArea {
91 anchors.fill: parent
92 onClicked: walkthrough.finished()
93 }
94 }
95
96 // Indicator element to represent the current slide of the walkthrough
97 Row {
98 id: slideIndicator
99 height: units.gu(6)
100 spacing: units.gu(2)
101 anchors {
102 bottom: parent.bottom
103 horizontalCenter: parent.horizontalCenter
104 }
105
106 Repeater {
107 model: walkthrough.model.length
108 delegate: Image {
109 anchors.verticalCenter: parent.verticalCenter
110 antialiasing: true
111 height: width
112 source: listView.currentIndex == index ? "../../images/Ellipse@27.png" : "../../images/Ellipse_15_opacity@27.png"
113 width: units.gu(2)
114 }
115 }
116 }
117
118 Icon {
119 id: nextIcon
120 anchors {
121 bottom: parent.bottom
122 right: parent.right
123 margins: units.gu(2)
124 }
125 color: "white"
126 height: units.gu(2)
127 name: "chevron"
128 visible: listView.currentIndex !== 2
129 width: height
130
131 MouseArea {
132 anchors.fill: parent
133 onClicked: listView.currentIndex++
134 }
135 }
136}
0137
=== added file 'images/Ellipse@27.png'
1Binary files images/Ellipse@27.png 1970-01-01 00:00:00 +0000 and images/Ellipse@27.png 2015-01-20 05:33:53 +0000 differ138Binary files images/Ellipse@27.png 1970-01-01 00:00:00 +0000 and images/Ellipse@27.png 2015-01-20 05:33:53 +0000 differ
=== added file 'images/Ellipse_15_opacity@27.png'
2Binary files images/Ellipse_15_opacity@27.png 1970-01-01 00:00:00 +0000 and images/Ellipse_15_opacity@27.png 2015-01-20 05:33:53 +0000 differ139Binary files images/Ellipse_15_opacity@27.png 1970-01-01 00:00:00 +0000 and images/Ellipse_15_opacity@27.png 2015-01-20 05:33:53 +0000 differ
=== added file 'images/music_download_icon@27.png'
3Binary files images/music_download_icon@27.png 1970-01-01 00:00:00 +0000 and images/music_download_icon@27.png 2015-01-20 05:33:53 +0000 differ140Binary files images/music_download_icon@27.png 1970-01-01 00:00:00 +0000 and images/music_download_icon@27.png 2015-01-20 05:33:53 +0000 differ
=== added file 'images/sd_phone_icon@27.png'
4Binary files images/sd_phone_icon@27.png 1970-01-01 00:00:00 +0000 and images/sd_phone_icon@27.png 2015-01-20 05:33:53 +0000 differ141Binary files images/sd_phone_icon@27.png 1970-01-01 00:00:00 +0000 and images/sd_phone_icon@27.png 2015-01-20 05:33:53 +0000 differ
=== modified file 'music-app.qml'
--- music-app.qml 2015-01-18 18:57:12 +0000
+++ music-app.qml 2015-01-20 05:33:53 +0000
@@ -46,6 +46,7 @@
46 id: startupSettings46 id: startupSettings
47 category: "StartupSettings"47 category: "StartupSettings"
4848
49 property bool firstRun: true
49 property int queueIndex: 050 property int queueIndex: 0
50 property int tabIndex: -151 property int tabIndex: -1
51 }52 }
@@ -540,7 +541,6 @@
540 // Run on startup541 // Run on startup
541 Component.onCompleted: {542 Component.onCompleted: {
542 customdebug("Version "+appVersion) // print the curren version543 customdebug("Version "+appVersion) // print the curren version
543 customdebug("Arguments on startup: Debug: "+args.values.debug)
544544
545 Library.createRecent() // initialize recent545 Library.createRecent() // initialize recent
546546
@@ -569,6 +569,13 @@
569 // Run post load569 // Run post load
570 tabs.ensurePopulated(tabs.selectedTab);570 tabs.ensurePopulated(tabs.selectedTab);
571571
572 // Display walkthrough on first run, even if the user has music
573 if (firstRun) {
574 var comp = Qt.createComponent("common/Walkthrough/FirstRunWalkthrough.qml")
575 var walkthrough = comp.createObject(mainPageStack, {});
576 mainPageStack.push(walkthrough)
577 }
578
572 if (args.values.url) {579 if (args.values.url) {
573 uriHandler.process(args.values.url, true);580 uriHandler.process(args.values.url, true);
574 }581 }
@@ -583,6 +590,7 @@
583 property string appVersion: '2.0'590 property string appVersion: '2.0'
584 property bool toolbarShown: musicToolbar.visible591 property bool toolbarShown: musicToolbar.visible
585 property bool selectedAlbum: false592 property bool selectedAlbum: false
593 property alias firstRun: startupSettings.firstRun
586 property alias queueIndex: startupSettings.queueIndex594 property alias queueIndex: startupSettings.queueIndex
587595
588 signal listItemSwiping(int i)596 signal listItemSwiping(int i)
@@ -1051,7 +1059,8 @@
1051 MusicToolbar {1059 MusicToolbar {
1052 id: musicToolbar1060 id: musicToolbar
1053 visible: mainPageStack.currentPage.title !== i18n.tr("Now playing") &&1061 visible: mainPageStack.currentPage.title !== i18n.tr("Now playing") &&
1054 mainPageStack.currentPage.title !== i18n.tr("Queue")1062 mainPageStack.currentPage.title !== i18n.tr("Queue") &&
1063 !firstRun
1055 objectName: "musicToolbarObject"1064 objectName: "musicToolbarObject"
1056 z: 200 // put on top of everything else1065 z: 200 // put on top of everything else
1057 }1066 }
@@ -1246,7 +1255,7 @@
1246 Page {1255 Page {
1247 id: emptyPage1256 id: emptyPage
1248 title: i18n.tr("Music")1257 title: i18n.tr("Music")
1249 visible: noMusic || noPlaylists || noRecent1258 visible: (noMusic || noPlaylists || noRecent) && !firstRun
12501259
1251 property bool noMusic: allSongsModel.rowCount === 0 && allSongsModelModel.status === SongsModel.Ready && loadedUI1260 property bool noMusic: allSongsModel.rowCount === 0 && allSongsModelModel.status === SongsModel.Ready && loadedUI
1252 property bool noPlaylists: playlistModel.model.count === 0 && playlistModel.workerComplete && mainPageStack.currentPage.title !== i18n.tr("Now playing") && mainPageStack.currentPage.title !== i18n.tr("Queue")1261 property bool noPlaylists: playlistModel.model.count === 0 && playlistModel.workerComplete && mainPageStack.currentPage.title !== i18n.tr("Now playing") && mainPageStack.currentPage.title !== i18n.tr("Queue")
12531262
=== modified file 'po/com.ubuntu.music.pot'
--- po/com.ubuntu.music.pot 2015-01-16 22:54:07 +0000
+++ po/com.ubuntu.music.pot 2015-01-20 05:33:53 +0000
@@ -8,7 +8,7 @@
8msgstr ""8msgstr ""
9"Project-Id-Version: music-app\n"9"Project-Id-Version: music-app\n"
10"Report-Msgid-Bugs-To: \n"10"Report-Msgid-Bugs-To: \n"
11"POT-Creation-Date: 2015-01-16 16:52-0600\n"11"POT-Creation-Date: 2015-01-18 17:32-0600\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"14"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,18 +22,18 @@
22msgid "Albums"22msgid "Albums"
23msgstr ""23msgstr ""
2424
25#: ../MusicAlbums.qml:68 ../MusicStart.qml:78 ../common/AlbumsPage.qml:14225#: ../MusicAlbums.qml:68 ../MusicStart.qml:78 ../common/AlbumsPage.qml:148
26#: ../common/AlbumsPage.qml:156 ../common/SongsPage.qml:35226#: ../common/AlbumsPage.qml:162 ../common/SongsPage.qml:373
27msgid "Unknown Album"27msgid "Unknown Album"
28msgstr ""28msgstr ""
2929
30#: ../MusicAlbums.qml:69 ../MusicArtists.qml:76 ../MusicStart.qml:7930#: ../MusicAlbums.qml:69 ../MusicArtists.qml:76 ../MusicStart.qml:79
31#: ../common/AlbumsPage.qml:103 ../common/AlbumsPage.qml:15531#: ../common/AlbumsPage.qml:104 ../common/AlbumsPage.qml:161
32#: ../common/SongsPage.qml:37332#: ../common/SongsPage.qml:394
33msgid "Unknown Artist"33msgid "Unknown Artist"
34msgstr ""34msgstr ""
3535
36#: ../MusicAlbums.qml:80 ../MusicStart.qml:95 ../common/AlbumsPage.qml:15436#: ../MusicAlbums.qml:80 ../MusicStart.qml:95 ../common/AlbumsPage.qml:160
37msgid "Album"37msgid "Album"
38msgstr ""38msgstr ""
3939
@@ -49,26 +49,26 @@
49msgid "Genres"49msgid "Genres"
50msgstr ""50msgstr ""
5151
52#: ../MusicGenres.qml:107 ../MusicGenres.qml:109 ../common/SongsPage.qml:29152#: ../MusicGenres.qml:107 ../MusicGenres.qml:109 ../common/SongsPage.qml:312
53#: ../common/SongsPage.qml:325 ../common/SongsPage.qml:33953#: ../common/SongsPage.qml:346 ../common/SongsPage.qml:360
54#: ../common/SongsPage.qml:375 ../common/SongsPage.qml:39454#: ../common/SongsPage.qml:396 ../common/SongsPage.qml:415
55#: ../common/SongsPage.qml:42655#: ../common/SongsPage.qml:447
56msgid "Genre"56msgid "Genre"
57msgstr ""57msgstr ""
5858
59#: ../MusicNowPlaying.qml:35 ../music-app.qml:656 ../music-app.qml:68859#: ../MusicNowPlaying.qml:35 ../music-app.qml:667 ../music-app.qml:699
60#: ../music-app.qml:1047 ../music-app.qml:1059 ../music-app.qml:108760#: ../music-app.qml:1062 ../music-app.qml:1220 ../music-app.qml:1232
61#: ../music-app.qml:108861#: ../music-app.qml:1260 ../music-app.qml:1261
62msgid "Queue"62msgid "Queue"
63msgstr ""63msgstr ""
6464
65#: ../MusicNowPlaying.qml:35 ../music-app.qml:656 ../music-app.qml:88965#: ../MusicNowPlaying.qml:35 ../music-app.qml:667 ../music-app.qml:1061
66#: ../music-app.qml:1046 ../music-app.qml:1087 ../music-app.qml:108866#: ../music-app.qml:1219 ../music-app.qml:1260 ../music-app.qml:1261
67msgid "Now playing"67msgid "Now playing"
68msgstr ""68msgstr ""
6969
70#: ../MusicNowPlaying.qml:90 ../MusicNowPlaying.qml:150 ../MusicTracks.qml:7470#: ../MusicNowPlaying.qml:90 ../MusicNowPlaying.qml:150 ../MusicTracks.qml:74
71#: ../common/ListItemActions/AddToPlaylist.qml:26 ../common/SongsPage.qml:15371#: ../common/ListItemActions/AddToPlaylist.qml:26 ../common/SongsPage.qml:169
72msgid "Add to playlist"72msgid "Add to playlist"
73msgstr ""73msgstr ""
7474
@@ -77,28 +77,28 @@
77msgstr ""77msgstr ""
7878
79#: ../MusicNowPlaying.qml:128 ../MusicTracks.qml:5179#: ../MusicNowPlaying.qml:128 ../MusicTracks.qml:51
80#: ../common/SongsPage.qml:13180#: ../common/SongsPage.qml:147
81msgid "Cancel selection"81msgid "Cancel selection"
82msgstr ""82msgstr ""
8383
84#: ../MusicNowPlaying.qml:137 ../MusicTracks.qml:6284#: ../MusicNowPlaying.qml:137 ../MusicTracks.qml:62
85#: ../common/SongsPage.qml:14185#: ../common/SongsPage.qml:157
86msgid "Select All"86msgid "Select All"
87msgstr ""87msgstr ""
8888
89#: ../MusicNowPlaying.qml:173 ../common/SongsPage.qml:18889#: ../MusicNowPlaying.qml:173 ../common/SongsPage.qml:204
90msgid "Delete"90msgid "Delete"
91msgstr ""91msgstr ""
9292
93#. TRANSLATORS: this is the name of the playlists page shown in the tab header.93#. TRANSLATORS: this is the name of the playlists page shown in the tab header.
94#. Remember to keep the translation short to fit the screen width94#. Remember to keep the translation short to fit the screen width
95#: ../MusicPlaylists.qml:35 ../MusicaddtoPlaylist.qml:11495#: ../MusicPlaylists.qml:35 ../MusicaddtoPlaylist.qml:114
96#: ../common/SongsPage.qml:6996#: ../common/SongsPage.qml:85
97msgid "Playlists"97msgid "Playlists"
98msgstr ""98msgstr ""
9999
100#: ../MusicPlaylists.qml:96 ../MusicaddtoPlaylist.qml:104100#: ../MusicPlaylists.qml:96 ../MusicaddtoPlaylist.qml:104
101#: ../common/SongsPage.qml:395 ../common/SongsPage.qml:396101#: ../common/SongsPage.qml:416 ../common/SongsPage.qml:417
102#, qt-format102#, qt-format
103msgid "%1 song"103msgid "%1 song"
104msgid_plural "%1 songs"104msgid_plural "%1 songs"
@@ -106,20 +106,20 @@
106msgstr[1] ""106msgstr[1] ""
107107
108#: ../MusicPlaylists.qml:109 ../MusicPlaylists.qml:110 ../MusicStart.qml:79108#: ../MusicPlaylists.qml:109 ../MusicPlaylists.qml:110 ../MusicStart.qml:79
109#: ../MusicStart.qml:95 ../common/SongsPage.qml:89 ../common/SongsPage.qml:189109#: ../MusicStart.qml:95 ../common/SongsPage.qml:64 ../common/SongsPage.qml:105
110#: ../common/SongsPage.qml:293 ../common/SongsPage.qml:327110#: ../common/SongsPage.qml:205 ../common/SongsPage.qml:314
111#: ../common/SongsPage.qml:338 ../common/SongsPage.qml:374111#: ../common/SongsPage.qml:348 ../common/SongsPage.qml:359
112#: ../common/SongsPage.qml:410 ../common/SongsPage.qml:413112#: ../common/SongsPage.qml:395 ../common/SongsPage.qml:431
113#: ../common/SongsPage.qml:428113#: ../common/SongsPage.qml:434 ../common/SongsPage.qml:449
114msgid "Playlist"114msgid "Playlist"
115msgstr ""115msgstr ""
116116
117#: ../MusicStart.qml:34 ../MusicaddtoPlaylist.qml:122117#: ../MusicStart.qml:34 ../MusicaddtoPlaylist.qml:122
118#: ../common/SongsPage.qml:79118#: ../common/SongsPage.qml:95
119msgid "Recent"119msgid "Recent"
120msgstr ""120msgstr ""
121121
122#: ../MusicToolbar.qml:128122#: ../MusicToolbar.qml:155
123msgid "Tap to shuffle music"123msgid "Tap to shuffle music"
124msgstr ""124msgstr ""
125125
@@ -127,27 +127,27 @@
127msgid "Songs"127msgid "Songs"
128msgstr ""128msgstr ""
129129
130#: ../MusicTracks.qml:97 ../common/SongsPage.qml:176130#: ../MusicTracks.qml:97 ../common/SongsPage.qml:192
131msgid "Add to queue"131msgid "Add to queue"
132msgstr ""132msgstr ""
133133
134#: ../MusicaddtoPlaylist.qml:42 ../music-app.qml:1143134#: ../MusicaddtoPlaylist.qml:42 ../music-app.qml:1316
135msgid "Select playlist"135msgid "Select playlist"
136msgstr ""136msgstr ""
137137
138#: ../common/AlbumsPage.qml:62 ../common/SongsPage.qml:286138#: ../common/AlbumsPage.qml:63 ../common/SongsPage.qml:307
139msgid "Shuffle"139msgid "Shuffle"
140msgstr ""140msgstr ""
141141
142#: ../common/AlbumsPage.qml:76 ../common/SongsPage.qml:312142#: ../common/AlbumsPage.qml:77 ../common/SongsPage.qml:333
143msgid "Queue all"143msgid "Queue all"
144msgstr ""144msgstr ""
145145
146#: ../common/AlbumsPage.qml:84 ../common/SongsPage.qml:320146#: ../common/AlbumsPage.qml:85 ../common/SongsPage.qml:341
147msgid "Play all"147msgid "Play all"
148msgstr ""148msgstr ""
149149
150#: ../common/AlbumsPage.qml:122150#: ../common/AlbumsPage.qml:123
151#, qt-format151#, qt-format
152msgid "%1 album"152msgid "%1 album"
153msgid_plural "%1 albums"153msgid_plural "%1 albums"
@@ -158,7 +158,7 @@
158msgid "Add to Queue"158msgid "Add to Queue"
159msgstr ""159msgstr ""
160160
161#: ../common/ListItemActions/Remove.qml:27 ../common/SongsPage.qml:564161#: ../common/ListItemActions/Remove.qml:27 ../common/SongsPage.qml:586
162msgid "Remove"162msgid "Remove"
163msgstr ""163msgstr ""
164164
@@ -175,166 +175,202 @@
175msgstr ""175msgstr ""
176176
177#. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist177#. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist
178#: ../common/SongsPage.qml:498178#: ../common/SongsPage.qml:521
179msgid "Rename playlist"179msgid "Rename playlist"
180msgstr ""180msgstr ""
181181
182#: ../common/SongsPage.qml:505 ../music-app.qml:843182#: ../common/SongsPage.qml:528 ../music-app.qml:1015
183msgid "Enter playlist name"183msgid "Enter playlist name"
184msgstr ""184msgstr ""
185185
186#: ../common/SongsPage.qml:515186#: ../common/SongsPage.qml:537
187msgid "Change"187msgid "Change"
188msgstr ""188msgstr ""
189189
190#: ../common/SongsPage.qml:536 ../music-app.qml:869190#: ../common/SongsPage.qml:558 ../music-app.qml:1041
191msgid "Playlist already exists"191msgid "Playlist already exists"
192msgstr ""192msgstr ""
193193
194#: ../common/SongsPage.qml:540 ../music-app.qml:874194#: ../common/SongsPage.qml:562 ../music-app.qml:1046
195msgid "Please type in a name."195msgid "Please type in a name."
196msgstr ""196msgstr ""
197197
198#: ../common/SongsPage.qml:545 ../common/SongsPage.qml:583198#: ../common/SongsPage.qml:567 ../common/SongsPage.qml:605
199#: ../music-app.qml:481 ../music-app.qml:880199#: ../music-app.qml:486 ../music-app.qml:1052
200msgid "Cancel"200msgid "Cancel"
201msgstr ""201msgstr ""
202202
203#. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist203#. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist
204#: ../common/SongsPage.qml:558204#: ../common/SongsPage.qml:580
205msgid "Permanently delete playlist?"205msgid "Permanently delete playlist?"
206msgstr ""206msgstr ""
207207
208#: ../common/SongsPage.qml:559208#: ../common/SongsPage.qml:581
209msgid "This cannot be undone"209msgid "This cannot be undone"
210msgstr ""210msgstr ""
211211
212#: ../music-app.qml:145212#: ../common/Walkthrough/Slide1.qml:61
213msgid "Welcome to Music"
214msgstr ""
215
216#: ../common/Walkthrough/Slide1.qml:73
217msgid ""
218"Enjoy your favorite music with Ubuntu's Music App. Take a short tour on how "
219"to get started or press skip to start listening now."
220msgstr ""
221
222#: ../common/Walkthrough/Slide2.qml:56
223msgid "Import your music"
224msgstr ""
225
226#: ../common/Walkthrough/Slide2.qml:67
227msgid ""
228"Plug your phone into your Ubuntu computer and drag and drop files staight "
229"across."
230msgstr ""
231
232#: ../common/Walkthrough/Slide3.qml:57
233msgid "Download new music"
234msgstr ""
235
236#: ../common/Walkthrough/Slide3.qml:68
237msgid "Directly import music bought while browsing online."
238msgstr ""
239
240#: ../common/Walkthrough/Slide3.qml:82
241msgid "Start"
242msgstr ""
243
244#: ../common/Walkthrough/Walkthrough.qml:81
245msgid "Skip"
246msgstr ""
247
248#: ../music-app.qml:147
213msgid "Next"249msgid "Next"
214msgstr ""250msgstr ""
215251
216#: ../music-app.qml:146252#: ../music-app.qml:148
217msgid "Next Track"253msgid "Next Track"
218msgstr ""254msgstr ""
219255
220#: ../music-app.qml:152256#: ../music-app.qml:154
221msgid "Pause"257msgid "Pause"
222msgstr ""258msgstr ""
223259
224#: ../music-app.qml:152260#: ../music-app.qml:154
225msgid "Play"261msgid "Play"
226msgstr ""262msgstr ""
227263
228#: ../music-app.qml:154264#: ../music-app.qml:156
229msgid "Pause Playback"265msgid "Pause Playback"
230msgstr ""266msgstr ""
231267
232#: ../music-app.qml:154268#: ../music-app.qml:156
233msgid "Continue or start playback"269msgid "Continue or start playback"
234msgstr ""270msgstr ""
235271
236#: ../music-app.qml:159272#: ../music-app.qml:161
237msgid "Back"273msgid "Back"
238msgstr ""274msgstr ""
239275
240#: ../music-app.qml:160276#: ../music-app.qml:162
241msgid "Go back to last page"277msgid "Go back to last page"
242msgstr ""278msgstr ""
243279
244#: ../music-app.qml:168280#: ../music-app.qml:170
245msgid "Previous"281msgid "Previous"
246msgstr ""282msgstr ""
247283
248#: ../music-app.qml:169284#: ../music-app.qml:171
249msgid "Previous Track"285msgid "Previous Track"
250msgstr ""286msgstr ""
251287
252#: ../music-app.qml:174288#: ../music-app.qml:176
253msgid "Stop"289msgid "Stop"
254msgstr ""290msgstr ""
255291
256#: ../music-app.qml:175292#: ../music-app.qml:177
257msgid "Stop Playback"293msgid "Stop Playback"
258msgstr ""294msgstr ""
259295
260#. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/296#. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/
261#: ../music-app.qml:324297#: ../music-app.qml:329
262msgid "Filepath must start with"298msgid "Filepath must start with"
263msgstr ""299msgstr ""
264300
265#. TRANSLATORS: This string represents that a blank filepath destination has been used301#. TRANSLATORS: This string represents that a blank filepath destination has been used
266#: ../music-app.qml:350302#: ../music-app.qml:355
267msgid "Filepath must be a file"303msgid "Filepath must be a file"
268msgstr ""304msgstr ""
269305
270#. TRANSLATORS: This string represents that there was failure moving the file to the target destination306#. TRANSLATORS: This string represents that there was failure moving the file to the target destination
271#: ../music-app.qml:356307#: ../music-app.qml:361
272msgid "Failed to move file"308msgid "Failed to move file"
273msgstr ""309msgstr ""
274310
275#: ../music-app.qml:435311#: ../music-app.qml:440
276msgid "Waiting for file(s)..."312msgid "Waiting for file(s)..."
277msgstr ""313msgstr ""
278314
279#: ../music-app.qml:454315#: ../music-app.qml:459
280msgid "OK"316msgid "OK"
281msgstr ""317msgstr ""
282318
283#: ../music-app.qml:467319#: ../music-app.qml:472
284msgid "Imported file not found"320msgid "Imported file not found"
285msgstr ""321msgstr ""
286322
287#: ../music-app.qml:471323#: ../music-app.qml:476
288msgid "Wait"324msgid "Wait"
289msgstr ""325msgstr ""
290326
291#. TRANSLATORS: this refers to a number of songs greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string)327#. TRANSLATORS: this refers to a number of songs greater than one. The actual number will be prepended to the string automatically (plural forms are not yet fully supported in usermetrics, the library that displays that string)
292#: ../music-app.qml:492328#: ../music-app.qml:497
293msgid "songs played today"329msgid "songs played today"
294msgstr ""330msgstr ""
295331
296#: ../music-app.qml:493332#: ../music-app.qml:498
297msgid "No songs played today"333msgid "No songs played today"
298msgstr ""334msgstr ""
299335
300#: ../music-app.qml:579 ../music-app.qml:1083336#: ../music-app.qml:589 ../music-app.qml:1256
301#: com.ubuntu.music_music.desktop.in.in.h:1337#: com.ubuntu.music_music.desktop.in.in.h:1
302msgid "Music"338msgid "Music"
303msgstr ""339msgstr ""
304340
305#: ../music-app.qml:597341#: ../music-app.qml:608
306msgid "Debug: "342msgid "Debug: "
307msgstr ""343msgstr ""
308344
309#: ../music-app.qml:839345#: ../music-app.qml:1011
310msgid "New playlist"346msgid "New playlist"
311msgstr ""347msgstr ""
312348
313#: ../music-app.qml:853349#: ../music-app.qml:1025
314msgid "Create"350msgid "Create"
315msgstr ""351msgstr ""
316352
317#: ../music-app.qml:1117353#: ../music-app.qml:1290
318msgid "No music found"354msgid "No music found"
319msgstr ""355msgstr ""
320356
321#: ../music-app.qml:1128357#: ../music-app.qml:1301
322msgid "Please import music"358msgid "Please import music"
323msgstr ""359msgstr ""
324360
325#: ../music-app.qml:1157361#: ../music-app.qml:1330
326msgid "No playlists found"362msgid "No playlists found"
327msgstr ""363msgstr ""
328364
329#: ../music-app.qml:1168365#: ../music-app.qml:1341
330msgid "Click the + to create a playlist"366msgid "Click the + to create a playlist"
331msgstr ""367msgstr ""
332368
333#: ../music-app.qml:1197369#: ../music-app.qml:1370
334msgid "No recent albums or playlists found"370msgid "No recent albums or playlists found"
335msgstr ""371msgstr ""
336372
337#: ../music-app.qml:1208373#: ../music-app.qml:1381
338msgid "Play some music to see your favorites"374msgid "Play some music to see your favorites"
339msgstr ""375msgstr ""
340376
341377
=== modified file 'tests/autopilot/music_app/__init__.py'
--- tests/autopilot/music_app/__init__.py 2015-01-10 15:53:24 +0000
+++ tests/autopilot/music_app/__init__.py 2015-01-20 05:33:53 +0000
@@ -107,6 +107,10 @@
107 return self.main_view.wait_select_single(107 return self.main_view.wait_select_single(
108 MusicPage, objectName='tracksPage')108 MusicPage, objectName='tracksPage')
109109
110 def get_walkthrough_page(self):
111 return self.main_view.wait_select_single(Walkthrough,
112 objectName="walkthroughPage")
113
110 @property114 @property
111 def loaded(self):115 def loaded(self):
112 return (not self.main_view.select_single("ActivityIndicator",116 return (not self.main_view.select_single("ActivityIndicator",
@@ -137,6 +141,18 @@
137 self.main_view = self.get_root_instance().select_single(MainView)141 self.main_view = self.get_root_instance().select_single(MainView)
138142
139143
144class Walkthrough(Page):
145 """ Autopilot helper for the walkthrough page """
146 def __init__(self, *args):
147 super(Walkthrough, self).__init__(*args)
148
149 self.visible.wait_for(True)
150
151 @click_object
152 def skip(self):
153 return self.wait_select_single("Label", objectName="skipLabel")
154
155
140class MusicAlbums():156class MusicAlbums():
141 """ Autopilot helper for the albums page """157 """ Autopilot helper for the albums page """
142 def __init__(self, *args):158 def __init__(self, *args):
143159
=== modified file 'tests/autopilot/music_app/tests/test_music.py'
--- tests/autopilot/music_app/tests/test_music.py 2014-11-07 23:08:29 +0000
+++ tests/autopilot/music_app/tests/test_music.py 2015-01-20 05:33:53 +0000
@@ -1,5 +1,5 @@
1# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-1# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
2# Copyright 2013, 2014 Canonical2# Copyright 2013, 2014, 2015 Canonical
3#3#
4# This program is free software: you can redistribute it and/or modify it4# 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 published5# under the terms of the GNU General Public License version 3, as published
@@ -47,6 +47,9 @@
47 }47 }
48 ]48 ]
4949
50 # Skip the walkthrough for every test
51 self.app.get_walkthrough_page().skip()
52
50 @property53 @property
51 def player(self):54 def player(self):
52 return self.app.player55 return self.app.player

Subscribers

People subscribed via source and target branches