Merge lp:~ahayzen/music-app/remix-confinement-back-001 into lp:music-app/remix

Proposed by Andrew Hayzen
Status: Rejected
Rejected by: Andrew Hayzen
Proposed branch: lp:~ahayzen/music-app/remix-confinement-back-001
Merge into: lp:music-app/remix
Diff against target: 692 lines (+290/-231)
9 files modified
MusicPlaylists.qml (+143/-25)
click/apparmor.json (+12/-2)
common/CardView.qml (+0/-1)
common/ColumnFlow.qml (+0/-1)
common/ListItemActions/DeletePlaylist.qml (+29/-0)
common/ListItemActions/EditPlaylist.qml (+35/-0)
common/SongsPage.qml (+0/-131)
po/com.ubuntu.music.pot (+70/-70)
tests/autopilot/music_app/__init__.py (+1/-1)
To merge this branch: bzr merge lp:~ahayzen/music-app/remix-confinement-back-001
Reviewer Review Type Date Requested Status
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Music App Developers Pending
Review via email: mp+238221@code.launchpad.net

Commit message

* Add back confinement

Description of the change

* Add back confinement

Please test thoroughly, especially content-hub, url-dispatcher, thumbnailer.

To post a comment you must log in.
Revision history for this message
Andrew Hayzen (ahayzen) wrote :

Currently I get these two denials.

Oct 14 01:29:12 ubuntu-phablet dbus[1654]: apparmor="DENIED" operation="dbus_bind" bus="session" name="org.freedesktop.Application" mask="bind" pid=26358 profile="com.ubuntu.music_music_1.3.657"
Oct 14 01:29:14 ubuntu-phablet dbus[1654]: apparmor="DENIED" operation="dbus_method_call" bus="session" path="/com/canonical/Thumbnailer" interface="com.canonical.Thumbnailer" member="GetArtistArt" mask="send" name="com.canonical.Thumbnailer" pid=26358 profile="com.ubuntu.music_music_1.3.657" peer_pid=3667 peer_profile="unconfined"

The first I think we can ignore?
The second is when trying to get the cover art for an artist.

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :

FAILED: Continuous integration, rev:657
No commit message was specified in the merge proposal. Click on the following link and set the commit message (if you want a jenkins rebuild you need to trigger it yourself):
https://code.launchpad.net/~andrew-hayzen/music-app/remix-confinement-back-001/+merge/238221/+edit-commit-message

http://91.189.93.70:8080/job/music-app-remix-ci/92/
Executed test runs:
    SUCCESS: http://91.189.93.70:8080/job/generic-mediumtests-utopic-python3/929
        deb: http://91.189.93.70:8080/job/generic-mediumtests-utopic-python3/929/artifact/work/output/*zip*/output.zip
    SUCCESS: http://91.189.93.70:8080/job/music-app-remix-utopic-amd64-ci/92

Click here to trigger a rebuild:
http://91.189.93.70:8080/job/music-app-remix-ci/92/rebuild

review: Needs Fixing (continuous-integration)
Revision history for this message
Andrew Hayzen (ahayzen) wrote :

#blocked bug 1381102

658. By Andrew Hayzen

* Reduce read paths

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

* Merge of trunk

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 :

Unmerged revisions

659. By Andrew Hayzen

* Merge of trunk

658. By Andrew Hayzen

* Reduce read paths

657. By Andrew Hayzen

* Merge of lp:music-app/remix

656. By Andrew Hayzen

* Add back confinement

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'MusicPlaylists.qml'
2--- MusicPlaylists.qml 2014-10-13 16:56:55 +0000
3+++ MusicPlaylists.qml 2014-10-17 00:00:54 +0000
4@@ -23,53 +23,171 @@
5 import Ubuntu.Components.Popups 1.0
6 import QtMultimedia 5.0
7 import QtQuick.LocalStorage 2.0
8+import "settings.js" as Settings
9+import "scrobble.js" as Scrobble
10 import "playlists.js" as Playlists
11 import "common"
12+import "common/ListItemActions"
13
14 // page for the playlists
15 MusicPage {
16- id: playlistsPage
17+ id: listspage
18 objectName: "playlistsPage"
19 // TRANSLATORS: this is the name of the playlists page shown in the tab header.
20 // Remember to keep the translation short to fit the screen width
21 title: i18n.tr("Playlists")
22
23 property string playlistTracks: ""
24+ property string oldPlaylistName: ""
25 property string inPlaylist: ""
26
27- head {
28- actions: [
29- Action {
30+ tools: ToolbarItems {
31+ ToolbarButton {
32+ action: Action {
33 objectName: "newplaylistButton"
34+ text: i18n.tr("New playlist")
35 iconName: "add"
36 onTriggered: {
37 customdebug("New playlist.")
38 PopupUtils.open(newPlaylistDialog, mainView)
39 }
40 }
41- ]
42- }
43-
44- CardView {
45+ }
46+ }
47+
48+ // Edit name of playlist dialog
49+ Component {
50+ id: editPlaylistDialog
51+ Dialog {
52+ id: dialogEditPlaylist
53+ // TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist
54+ title: i18n.tr("Change name")
55+ text: i18n.tr("Enter the new name of the playlist.")
56+ TextField {
57+ id: playlistName
58+ placeholderText: oldPlaylistName
59+ inputMethodHints: Qt.ImhNoPredictiveText
60+ }
61+ Label {
62+ id: editplaylistoutput
63+ color: "red"
64+ visible: false
65+ }
66+
67+ Button {
68+ text: i18n.tr("Change")
69+ color: styleMusic.dialog.confirmButtonColor
70+ onClicked: {
71+ editplaylistoutput.visible = true
72+
73+ if (playlistName.text.length > 0) { // make sure something is acually inputed
74+ console.debug("Debug: User changed name from "+oldPlaylistName+" to "+playlistName.text)
75+
76+ if (Playlists.renamePlaylist(oldPlaylistName, playlistName.text) === true) {
77+ playlistModel.filterPlaylists()
78+
79+ PopupUtils.close(dialogEditPlaylist)
80+
81+ if (inPlaylist) {
82+ playlistInfoLabel.text = playlistName.text
83+ }
84+ }
85+ else {
86+ editplaylistoutput.text = i18n.tr("Playlist already exists")
87+ }
88+ }
89+ else {
90+ editplaylistoutput.text = i18n.tr("Please type in a name.")
91+ }
92+ }
93+ }
94+ Button {
95+ text: i18n.tr("Cancel")
96+ color: styleMusic.dialog.cancelButtonColor
97+ onClicked: PopupUtils.close(dialogEditPlaylist)
98+ }
99+ }
100+ }
101+
102+ MusicSettings {
103+ id: musicSettings
104+ }
105+
106+ ListView {
107 id: playlistslist
108+ objectName: "playlistsListView"
109+ anchors {
110+ fill: parent
111+ }
112 model: playlistModel.model
113- objectName: "playlistsCardView"
114- delegate: Card {
115- id: playlistCard
116- coverSources: Playlists.getPlaylistCovers(name)
117- primaryText: name
118- secondaryText: i18n.tr("%1 song", "%1 songs", count).arg(count)
119-
120- onClicked: {
121- albumTracksModel.filterPlaylistTracks(name)
122- songsPage.isAlbum = false
123- songsPage.line1 = i18n.tr("Playlist")
124- songsPage.line2 = model.name
125- songsPage.covers = coverSources
126- songsPage.genre = undefined
127- songsPage.title = i18n.tr("Playlist")
128-
129- mainPageStack.push(songsPage)
130+ delegate: playlistDelegate
131+ onCountChanged: {
132+ customdebug("onCountChanged: " + playlistslist.count)
133+ }
134+ onCurrentIndexChanged: {
135+ customdebug("tracklist.currentIndex = " + playlistslist.currentIndex)
136+ }
137+
138+ Component {
139+ id: playlistDelegate
140+ ListItemWithActions {
141+ id: playlist
142+ property string name: model.name
143+ property string count: model.count
144+ property var covers: Playlists.getPlaylistCovers(name)
145+
146+ color: "transparent"
147+ height: styleMusic.common.itemHeight
148+ width: parent.width
149+
150+ leftSideAction: DeletePlaylist {
151+ onTriggered: {
152+ Playlists.removePlaylist(model.name)
153+
154+ playlistModel.filterPlaylists();
155+ }
156+ }
157+
158+ rightSideActions: [
159+ EditPlaylist {
160+ }
161+ ]
162+ triggerActionOnMouseRelease: true
163+
164+ onItemClicked: {
165+ albumTracksModel.filterPlaylistTracks(name)
166+ songsPage.isAlbum = false
167+ songsPage.line1 = i18n.tr("Playlist")
168+ songsPage.line2 = model.name
169+ songsPage.covers = playlist.covers
170+ songsPage.genre = undefined
171+ songsPage.title = i18n.tr("Playlist")
172+
173+ mainPageStack.push(songsPage)
174+ }
175+
176+ // TODO: If http://pad.lv/1354753 is fixed to expose whether the Shape should appear pressed, update this as well.
177+ onPressedChanged: musicRow.pressed = pressed
178+
179+ MusicRow {
180+ id: musicRow
181+ covers: playlist.covers
182+ column: Column {
183+ spacing: units.gu(1)
184+ Label {
185+ id: playlistCount
186+ color: styleMusic.common.subtitle
187+ fontSize: "x-small"
188+ text: i18n.tr("%1 song", "%1 songs", playlist.count).arg(playlist.count)
189+ }
190+ Label {
191+ id: playlistName
192+ color: styleMusic.common.music
193+ fontSize: "medium"
194+ text: playlist.name
195+ }
196+ }
197+ }
198 }
199 }
200 }
201
202=== modified file 'click/apparmor.json'
203--- click/apparmor.json 2014-07-01 23:13:50 +0000
204+++ click/apparmor.json 2014-10-17 00:00:54 +0000
205@@ -1,7 +1,17 @@
206 {
207 "policy_version": 1.2,
208- "template": "unconfined",
209 "policy_groups": [
210- "content_exchange"
211+ "audio",
212+ "content_exchange",
213+ "music_files_read",
214+ "networking",
215+ "usermetrics"
216+ ],
217+ "read_path": [
218+ "@{HOME}/.cache/media-art/",
219+ "@{HOME}/.cache/mediascanner-2.0/"
220+ ],
221+ "write_path": [
222+ "@{HOME}/Music/Imported/"
223 ]
224 }
225
226=== modified file 'common/CardView.qml'
227--- common/CardView.qml 2014-10-13 16:56:55 +0000
228+++ common/CardView.qml 2014-10-17 00:00:54 +0000
229@@ -30,7 +30,6 @@
230 contentHeight: flow.childrenRect.height
231 contentWidth: width
232
233- property alias count: flow.count
234 property alias delegate: flow.delegate
235 property alias model: flow.model
236 property real itemWidth: units.gu(15)
237
238=== modified file 'common/ColumnFlow.qml'
239--- common/ColumnFlow.qml 2014-10-13 16:56:55 +0000
240+++ common/ColumnFlow.qml 2014-10-17 00:00:54 +0000
241@@ -26,7 +26,6 @@
242 id: columnFlow
243 property int columns: 1
244 property bool repeaterCompleted: false
245- property alias count: repeater.count
246 property alias model: repeater.model
247 property alias delegate: repeater.delegate
248 property int contentHeight: 0
249
250=== added file 'common/ListItemActions/DeletePlaylist.qml'
251--- common/ListItemActions/DeletePlaylist.qml 1970-01-01 00:00:00 +0000
252+++ common/ListItemActions/DeletePlaylist.qml 2014-10-17 00:00:54 +0000
253@@ -0,0 +1,29 @@
254+/*
255+ * Copyright (C) 2014 Andrew Hayzen <ahayzen@gmail.com>
256+ * Daniel Holm <d.holmen@gmail.com>
257+ * Victor Thompson <victor.thompson@gmail.com>
258+ *
259+ * This program is free software; you can redistribute it and/or modify
260+ * it under the terms of the GNU General Public License as published by
261+ * the Free Software Foundation; version 3.
262+ *
263+ * This program is distributed in the hope that it will be useful,
264+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
265+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
266+ * GNU General Public License for more details.
267+ *
268+ * You should have received a copy of the GNU General Public License
269+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
270+ */
271+
272+import QtQuick 2.3
273+import Ubuntu.Components 1.1
274+import Ubuntu.Components.Popups 1.0
275+
276+Action {
277+ iconName: "delete"
278+ // TRANSLATORS: this refers to deleting a playlist
279+ text: i18n.tr("Delete")
280+
281+ property bool primed: false
282+}
283
284=== added file 'common/ListItemActions/EditPlaylist.qml'
285--- common/ListItemActions/EditPlaylist.qml 1970-01-01 00:00:00 +0000
286+++ common/ListItemActions/EditPlaylist.qml 2014-10-17 00:00:54 +0000
287@@ -0,0 +1,35 @@
288+/*
289+ * Copyright (C) 2014 Andrew Hayzen <ahayzen@gmail.com>
290+ * Daniel Holm <d.holmen@gmail.com>
291+ * Victor Thompson <victor.thompson@gmail.com>
292+ *
293+ * This program is free software; you can redistribute it and/or modify
294+ * it under the terms of the GNU General Public License as published by
295+ * the Free Software Foundation; version 3.
296+ *
297+ * This program is distributed in the hope that it will be useful,
298+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
299+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
300+ * GNU General Public License for more details.
301+ *
302+ * You should have received a copy of the GNU General Public License
303+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
304+ */
305+
306+import QtQuick 2.3
307+import Ubuntu.Components 1.1
308+import Ubuntu.Components.Popups 1.0
309+
310+Action {
311+ iconName: "edit"
312+ // TRANSLATORS: this refers to editing a playlist
313+ text: i18n.tr("Edit")
314+
315+ property bool primed: false
316+
317+ onTriggered: {
318+ customdebug("Edit playlist")
319+ oldPlaylistName = model.name
320+ PopupUtils.open(editPlaylistDialog, mainView)
321+ }
322+}
323
324=== modified file 'common/SongsPage.qml'
325--- common/SongsPage.qml 2014-10-14 00:25:48 +0000
326+++ common/SongsPage.qml 2014-10-17 00:00:54 +0000
327@@ -20,7 +20,6 @@
328 import QtQuick 2.3
329 import Ubuntu.Components 1.1
330 import Ubuntu.Components.ListItems 1.0 as ListItem
331-import Ubuntu.Components.Popups 1.0
332 import Ubuntu.MediaScanner 0.1
333 import Ubuntu.Thumbnailer 0.1
334 import QtQuick.LocalStorage 2.0
335@@ -44,47 +43,6 @@
336 property alias album: songsModel.album
337 property alias genre: songsModel.genre
338
339- state: songStackPage.line1 === i18n.tr("Playlist") ? "playlist" : "album"
340- states: [
341- PageHeadState {
342- id: albumState
343- name: "album"
344- PropertyChanges {
345- target: songStackPage.head
346- backAction: albumState.backAction
347- actions: albumState.actions
348- }
349- },
350- PageHeadState {
351- id: playlistState
352-
353- name: "playlist"
354- actions: [
355- Action {
356- objectName: "editPlaylist"
357- iconName: "edit"
358- onTriggered: {
359- var dialog = PopupUtils.open(editPlaylistDialog, mainView)
360- dialog.oldPlaylistName = line2
361- }
362- },
363- Action {
364- objectName: "deletePlaylist"
365- iconName: "delete"
366- onTriggered: {
367- var dialog = PopupUtils.open(removePlaylistDialog, mainView)
368- dialog.oldPlaylistName = line2
369- }
370- }
371- ]
372- PropertyChanges {
373- target: songStackPage.head
374- backAction: playlistState.backAction
375- actions: playlistState.actions
376- }
377- }
378- ]
379-
380 SongsModel {
381 id: songsModel
382 store: musicStore
383@@ -372,93 +330,4 @@
384 }
385 }
386 }
387-
388- // Edit name of playlist dialog
389- Component {
390- id: editPlaylistDialog
391- Dialog {
392- id: dialogEditPlaylist
393- // TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist
394- title: i18n.tr("Change name")
395- text: i18n.tr("Enter the new name of the playlist.")
396-
397- property alias oldPlaylistName: playlistName.placeholderText
398-
399- TextField {
400- id: playlistName
401- inputMethodHints: Qt.ImhNoPredictiveText
402-
403- onPlaceholderTextChanged: text = placeholderText
404- }
405- Label {
406- id: editplaylistoutput
407- color: "red"
408- visible: false
409- }
410-
411- Button {
412- text: i18n.tr("Change")
413- color: styleMusic.dialog.confirmButtonColor
414- onClicked: {
415- editplaylistoutput.visible = true
416-
417- if (playlistName.text.length > 0) { // make sure something is acually inputed
418- console.debug("Debug: User changed name from "+playlistName.placeholderText+" to "+playlistName.text)
419-
420- if (Playlists.renamePlaylist(playlistName.placeholderText, playlistName.text) === true) {
421- playlistModel.filterPlaylists()
422-
423- PopupUtils.close(dialogEditPlaylist)
424-
425- line2 = playlistName.text
426- }
427- else {
428- editplaylistoutput.text = i18n.tr("Playlist already exists")
429- }
430- }
431- else {
432- editplaylistoutput.text = i18n.tr("Please type in a name.")
433- }
434- }
435- }
436- Button {
437- text: i18n.tr("Cancel")
438- color: styleMusic.dialog.cancelButtonColor
439- onClicked: PopupUtils.close(dialogEditPlaylist)
440- }
441- }
442- }
443-
444- // Remove playlist dialog
445- Component {
446- id: removePlaylistDialog
447- Dialog {
448- id: dialogRemovePlaylist
449- // TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist
450- title: i18n.tr("Are you sure?")
451- text: i18n.tr("This will delete your playlist.")
452-
453- property string oldPlaylistName
454-
455- Button {
456- text: i18n.tr("Remove")
457- color: styleMusic.dialog.confirmButtonColor
458- onClicked: {
459- // removing playlist
460- Playlists.removePlaylist(dialogRemovePlaylist.oldPlaylistName)
461-
462- playlistModel.filterPlaylists();
463-
464- PopupUtils.close(dialogRemovePlaylist)
465-
466- musicToolbar.goBack()
467- }
468- }
469- Button {
470- text: i18n.tr("Cancel")
471- color: styleMusic.dialog.cancelButtonColor
472- onClicked: PopupUtils.close(dialogRemovePlaylist)
473- }
474- }
475- }
476 }
477
478=== modified file 'po/com.ubuntu.music.pot'
479--- po/com.ubuntu.music.pot 2014-10-14 00:06:59 +0000
480+++ po/com.ubuntu.music.pot 2014-10-17 00:00:54 +0000
481@@ -8,7 +8,7 @@
482 msgstr ""
483 "Project-Id-Version: music-app\n"
484 "Report-Msgid-Bugs-To: \n"
485-"POT-Creation-Date: 2014-10-14 01:06+0100\n"
486+"POT-Creation-Date: 2014-10-08 20:48-0500\n"
487 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
488 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
489 "Language-Team: LANGUAGE <LL@li.org>\n"
490@@ -67,7 +67,23 @@
491 msgid "Artists"
492 msgstr ""
493
494-#: ../MusicArtists.qml:78
495+#: ../MusicArtists.qml:108 ../common/AlbumsPage.qml:110
496+#, qt-format
497+msgid "%1 album"
498+msgid_plural "%1 albums"
499+msgstr[0] ""
500+msgstr[1] ""
501+
502+#: ../MusicArtists.qml:114 ../MusicPlaylists.qml:181 ../MusicStart.qml:371
503+#: ../MusicaddtoPlaylist.qml:105 ../common/AlbumsPage.qml:329
504+#: ../common/SongsPage.qml:142 ../common/SongsPage.qml:143
505+#, qt-format
506+msgid "%1 song"
507+msgid_plural "%1 songs"
508+msgstr[0] ""
509+msgstr[1] ""
510+
511+#: ../MusicArtists.qml:124
512 msgid "Artist"
513 msgstr ""
514
515@@ -81,24 +97,44 @@
516
517 #. TRANSLATORS: this is the name of the playlists page shown in the tab header.
518 #. Remember to keep the translation short to fit the screen width
519-#: ../MusicPlaylists.qml:35
520+#: ../MusicPlaylists.qml:38
521 msgid "Playlists"
522 msgstr ""
523
524-#: ../MusicPlaylists.qml:61 ../MusicStart.qml:371
525-#: ../MusicaddtoPlaylist.qml:105 ../common/AlbumsPage.qml:329
526-#: ../common/SongsPage.qml:184 ../common/SongsPage.qml:185
527-#, qt-format
528-msgid "%1 song"
529-msgid_plural "%1 songs"
530-msgstr[0] ""
531-msgstr[1] ""
532-
533-#: ../MusicPlaylists.qml:66 ../MusicPlaylists.qml:70 ../MusicStart.qml:118
534-#: ../MusicStart.qml:200 ../common/SongsPage.qml:47
535-#: ../common/SongsPage.qml:156 ../common/SongsPage.qml:217
536-#: ../common/SongsPage.qml:274 ../common/SongsPage.qml:296
537-#: ../common/SongsPage.qml:298 ../common/SongsPage.qml:316
538+#: ../MusicPlaylists.qml:48 ../MusicaddtoPlaylist.qml:48
539+msgid "New playlist"
540+msgstr ""
541+
542+#. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist
543+#: ../MusicPlaylists.qml:64
544+msgid "Change name"
545+msgstr ""
546+
547+#: ../MusicPlaylists.qml:65
548+msgid "Enter the new name of the playlist."
549+msgstr ""
550+
551+#: ../MusicPlaylists.qml:78
552+msgid "Change"
553+msgstr ""
554+
555+#: ../MusicPlaylists.qml:96 ../music-app.qml:945
556+msgid "Playlist already exists"
557+msgstr ""
558+
559+#: ../MusicPlaylists.qml:100 ../music-app.qml:950
560+msgid "Please type in a name."
561+msgstr ""
562+
563+#: ../MusicPlaylists.qml:105 ../music-app.qml:486 ../music-app.qml:956
564+msgid "Cancel"
565+msgstr ""
566+
567+#: ../MusicPlaylists.qml:160 ../MusicPlaylists.qml:164 ../MusicStart.qml:118
568+#: ../MusicStart.qml:200 ../common/SongsPage.qml:114
569+#: ../common/SongsPage.qml:175 ../common/SongsPage.qml:232
570+#: ../common/SongsPage.qml:254 ../common/SongsPage.qml:256
571+#: ../common/SongsPage.qml:274
572 msgid "Playlist"
573 msgstr ""
574
575@@ -210,9 +246,9 @@
576 msgid "Genres"
577 msgstr ""
578
579-#: ../MusicStart.qml:316 ../MusicStart.qml:318 ../common/SongsPage.qml:157
580-#: ../common/SongsPage.qml:184 ../common/SongsPage.qml:213
581-#: ../common/SongsPage.qml:270 ../common/SongsPage.qml:312
582+#: ../MusicStart.qml:316 ../MusicStart.qml:318 ../common/SongsPage.qml:115
583+#: ../common/SongsPage.qml:142 ../common/SongsPage.qml:171
584+#: ../common/SongsPage.qml:228 ../common/SongsPage.qml:270
585 msgid "Genre"
586 msgstr ""
587
588@@ -228,19 +264,8 @@
589 msgid "Select playlist"
590 msgstr ""
591
592-#: ../MusicaddtoPlaylist.qml:48
593-msgid "New playlist"
594-msgstr ""
595-
596-#: ../common/AlbumsPage.qml:110
597-#, qt-format
598-msgid "%1 album"
599-msgid_plural "%1 albums"
600-msgstr[0] ""
601-msgstr[1] ""
602-
603 #: ../common/AlbumsPage.qml:165 ../common/AlbumsPage.qml:358
604-#: ../common/SongsPage.qml:264
605+#: ../common/SongsPage.qml:222
606 msgid "Play all"
607 msgstr ""
608
609@@ -257,7 +282,17 @@
610 msgid "Add to Queue"
611 msgstr ""
612
613-#: ../common/ListItemActions/Remove.qml:27 ../common/SongsPage.qml:446
614+#. TRANSLATORS: this refers to deleting a playlist
615+#: ../common/ListItemActions/DeletePlaylist.qml:26
616+msgid "Delete"
617+msgstr ""
618+
619+#. TRANSLATORS: this refers to editing a playlist
620+#: ../common/ListItemActions/EditPlaylist.qml:26
621+msgid "Edit"
622+msgstr ""
623+
624+#: ../common/ListItemActions/Remove.qml:27
625 msgid "Remove"
626 msgstr ""
627
628@@ -265,49 +300,14 @@
629 msgid "Loading..."
630 msgstr ""
631
632-#: ../common/SongsPage.qml:206
633+#: ../common/SongsPage.qml:164
634 msgid "Shuffle"
635 msgstr ""
636
637-#: ../common/SongsPage.qml:243
638+#: ../common/SongsPage.qml:201
639 msgid "Queue all"
640 msgstr ""
641
642-#. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist
643-#: ../common/SongsPage.qml:384
644-msgid "Change name"
645-msgstr ""
646-
647-#: ../common/SongsPage.qml:385
648-msgid "Enter the new name of the playlist."
649-msgstr ""
650-
651-#: ../common/SongsPage.qml:402
652-msgid "Change"
653-msgstr ""
654-
655-#: ../common/SongsPage.qml:418 ../music-app.qml:945
656-msgid "Playlist already exists"
657-msgstr ""
658-
659-#: ../common/SongsPage.qml:422 ../music-app.qml:950
660-msgid "Please type in a name."
661-msgstr ""
662-
663-#: ../common/SongsPage.qml:427 ../common/SongsPage.qml:460
664-#: ../music-app.qml:486 ../music-app.qml:956
665-msgid "Cancel"
666-msgstr ""
667-
668-#. TRANSLATORS: this is a title of a dialog with a prompt to delete a playlist
669-#: ../common/SongsPage.qml:440
670-msgid "Are you sure?"
671-msgstr ""
672-
673-#: ../common/SongsPage.qml:441
674-msgid "This will delete your playlist."
675-msgstr ""
676-
677 #: ../common/SwipeDelete.qml:52 ../common/SwipeDelete.qml:88
678 msgid "Clear"
679 msgstr ""
680
681=== modified file 'tests/autopilot/music_app/__init__.py'
682--- tests/autopilot/music_app/__init__.py 2014-10-13 16:56:55 +0000
683+++ tests/autopilot/music_app/__init__.py 2014-10-17 00:00:54 +0000
684@@ -183,7 +183,7 @@
685
686 def get_count(self):
687 return self.wait_select_single(
688- "CardView", objectName="playlistsCardView").count
689+ "QQuickListView", objectName="playlistsListView").count
690
691
692 class MusicaddtoPlaylist(MusicPage):

Subscribers

People subscribed via source and target branches