Merge lp:~vthompson/music-app/remix-now-playing-main-view-blue-slider into lp:music-app/trusty
- remix-now-playing-main-view-blue-slider
- Merge into trusty
Proposed by
Victor Thompson
Status: | Superseded |
---|---|
Proposed branch: | lp:~vthompson/music-app/remix-now-playing-main-view-blue-slider |
Merge into: | lp:music-app/trusty |
Diff against target: |
2624 lines (+896/-771) (has conflicts) 17 files modified
MusicArtists.qml (+3/-2) MusicNowPlaying.qml (+311/-21) MusicPlaylists.qml (+3/-2) MusicSettings.qml (+0/-11) MusicToolbar.qml (+173/-364) MusicTracks.qml (+3/-2) MusicaddtoPlaylist.qml (+0/-1) Player.qml (+5/-1) Style.qml (+2/-2) common/AlbumsPage.qml (+0/-2) common/BlurredBackground.qml (+11/-9) common/MusicPage.qml (+4/-0) common/MusicRow.qml (+5/-3) common/SongsPage.qml (+137/-120) music-app.qml (+15/-25) po/com.ubuntu.music.pot (+69/-59) po/pt_BR.po (+155/-147) Text conflict in po/pt_BR.po |
To merge this branch: | bzr merge lp:~vthompson/music-app/remix-now-playing-main-view-blue-slider |
Related bugs: | |
Related blueprints: |
Music Remix for RTM
(Essential)
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Music App Developers | Pending | ||
Review via email: mp+237169@code.launchpad.net |
This proposal has been superseded by a proposal from 2014-10-04.
Commit message
* Make the Ubuntu Slider leftColor UbuntuColors.blue
Description of the change
This change makes the Ubuntu Slider leftColor UbuntuColors.blue for use in the Now Playing full view.
To post a comment you must log in.
Unmerged revisions
- 666. By Victor Thompson
-
* Make the Ubuntu Slider leftColor UbuntuColors.blue
- 665. By Victor Thompson
-
fix update
- 664. By Victor Thompson
-
update
- 663. By Victor Thompson
-
Small tweaks and a toolbar hack
- 662. By Victor Thompson
-
Merge of remix
- 661. By Victor Thompson
-
Update per comments
- 660. By Victor Thompson
-
Default to the listview view for now
- 659. By Victor Thompson
-
Initial Now Playing toggle
- 658. By Victor Thompson
-
Clean slate
- 657. By Victor Thompson
-
Fit items into view
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'MusicArtists.qml' |
2 | --- MusicArtists.qml 2014-09-20 15:41:33 +0000 |
3 | +++ MusicArtists.qml 2014-10-04 17:07:09 +0000 |
4 | @@ -38,8 +38,9 @@ |
5 | |
6 | ListView { |
7 | id: artistlist |
8 | - anchors.fill: parent |
9 | - anchors.bottomMargin: musicToolbar.mouseAreaOffset + musicToolbar.minimizedHeight |
10 | + anchors { |
11 | + fill: parent |
12 | + } |
13 | model: ArtistsModel { |
14 | id: artistsModel |
15 | albumArtists: true |
16 | |
17 | === modified file 'MusicNowPlaying.qml' |
18 | --- MusicNowPlaying.qml 2014-09-20 15:41:33 +0000 |
19 | +++ MusicNowPlaying.qml 2014-10-04 17:07:09 +0000 |
20 | @@ -17,7 +17,6 @@ |
21 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
22 | */ |
23 | |
24 | - |
25 | import QtMultimedia 5.0 |
26 | import QtQuick 2.3 |
27 | import QtQuick.LocalStorage 2.0 |
28 | @@ -32,20 +31,27 @@ |
29 | objectName: "nowPlayingPage" |
30 | title: i18n.tr("Now Playing") |
31 | visible: false |
32 | + onVisibleChanged: { |
33 | + if (!visible) { |
34 | + // Reset the isListView property |
35 | + // TODO: In the future this will default to false |
36 | + isListView = true |
37 | + } |
38 | + } |
39 | |
40 | property int ensureVisibleIndex: 0 // ensure first index is visible at startup |
41 | - |
42 | - Rectangle { |
43 | - anchors.fill: parent |
44 | - color: styleMusic.nowPlaying.backgroundColor |
45 | - opacity: 0.75 // change later |
46 | - MouseArea { // Block events to lower layers |
47 | - anchors.fill: parent |
48 | - } |
49 | - } |
50 | - |
51 | - Component.onCompleted: { |
52 | - onToolbarShownChanged.connect(jumpToCurrent) |
53 | + property bool isListView: true |
54 | + |
55 | + head { |
56 | + actions: [ |
57 | + Action { |
58 | + objectName: "toggleView" |
59 | + iconName: "media-playlist" |
60 | + onTriggered: { |
61 | + isListView = !isListView |
62 | + } |
63 | + } |
64 | + ] |
65 | } |
66 | |
67 | Connections { |
68 | @@ -77,14 +83,302 @@ |
69 | |
70 | function positionAt(index) { |
71 | queuelist.positionViewAtIndex(index, ListView.Beginning); |
72 | - queuelist.contentY -= header.height; |
73 | + } |
74 | + |
75 | + Rectangle { |
76 | + id: fullview |
77 | + visible: !isListView |
78 | + anchors.fill: parent |
79 | + color: "transparent" |
80 | + clip: true |
81 | + |
82 | + BlurredBackground { |
83 | + id: blurredBackground |
84 | + anchors.top: parent.top |
85 | + anchors.topMargin: mainView.header.height |
86 | + height: units.gu(27) |
87 | + art: albumImage.source |
88 | + |
89 | + Image { |
90 | + id: albumImage |
91 | + anchors.centerIn: parent |
92 | + width: units.gu(18) |
93 | + height: width |
94 | + smooth: true |
95 | + source: player.currentMetaArt === "" ? |
96 | + decodeURIComponent("image://albumart/artist=" + |
97 | + player.currentMetaArtist + |
98 | + "&album=" + player.currentMetaAlbum) |
99 | + : player.currentMetaArt |
100 | + } |
101 | + } |
102 | + |
103 | + /* Full toolbar */ |
104 | + Item { |
105 | + id: musicToolbarFullContainer |
106 | + anchors.top: blurredBackground.bottom |
107 | + anchors.topMargin: units.gu(4) |
108 | + width: blurredBackground.width |
109 | + |
110 | + /* Column for labels in wideAspect */ |
111 | + Column { |
112 | + id: nowPlayingWideAspectLabels |
113 | + spacing: units.gu(1) |
114 | + anchors { |
115 | + left: parent.left |
116 | + leftMargin: units.gu(2) |
117 | + right: parent.right |
118 | + rightMargin: units.gu(2) |
119 | + } |
120 | + |
121 | + /* Title of track */ |
122 | + Label { |
123 | + id: nowPlayingWideAspectTitle |
124 | + anchors { |
125 | + left: parent.left |
126 | + leftMargin: units.gu(1) |
127 | + right: parent.right |
128 | + rightMargin: units.gu(1) |
129 | + } |
130 | + color: styleMusic.playerControls.labelColor |
131 | + elide: Text.ElideRight |
132 | + fontSize: "x-large" |
133 | + objectName: "playercontroltitle" |
134 | + text: trackQueue.model.count === 0 ? "" : player.currentMetaTitle === "" ? player.currentMetaFile : player.currentMetaTitle |
135 | + } |
136 | + |
137 | + /* Artist of track */ |
138 | + Label { |
139 | + id: nowPlayingWideAspectArtist |
140 | + anchors { |
141 | + left: parent.left |
142 | + leftMargin: units.gu(1) |
143 | + right: parent.right |
144 | + rightMargin: units.gu(1) |
145 | + } |
146 | + color: styleMusic.nowPlaying.labelSecondaryColor |
147 | + elide: Text.ElideRight |
148 | + fontSize: "small" |
149 | + text: trackQueue.model.count === 0 ? "" : player.currentMetaArtist |
150 | + } |
151 | + } |
152 | + |
153 | + /* Progress bar component */ |
154 | + MouseArea { |
155 | + id: musicToolbarFullProgressContainer |
156 | + anchors.left: parent.left |
157 | + anchors.leftMargin: units.gu(3) |
158 | + anchors.right: parent.right |
159 | + anchors.rightMargin: units.gu(3) |
160 | + anchors.top: nowPlayingWideAspectLabels.bottom |
161 | + anchors.topMargin: units.gu(3) |
162 | + height: units.gu(3) |
163 | + width: parent.width |
164 | + |
165 | + /* Position label */ |
166 | + Label { |
167 | + id: musicToolbarFullPositionLabel |
168 | + anchors.top: progressSliderMusic.bottom |
169 | + anchors.topMargin: units.gu(-2) |
170 | + anchors.left: parent.left |
171 | + color: styleMusic.nowPlaying.labelSecondaryColor |
172 | + fontSize: "small" |
173 | + height: parent.height |
174 | + horizontalAlignment: Text.AlignHCenter |
175 | + text: durationToString(player.position) |
176 | + verticalAlignment: Text.AlignVCenter |
177 | + width: units.gu(3) |
178 | + } |
179 | + |
180 | + Slider { |
181 | + id: progressSliderMusic |
182 | + anchors.left: parent.left |
183 | + anchors.right: parent.right |
184 | + function formatValue(v) { return durationToString(v) } |
185 | + |
186 | + property bool seeking: false |
187 | + |
188 | + onSeekingChanged: { |
189 | + if (seeking === false) { |
190 | + musicToolbarFullPositionLabel.text = durationToString(player.position) |
191 | + } |
192 | + } |
193 | + |
194 | + Component.onCompleted: { |
195 | + Theme.palette.selected.foreground = UbuntuColors.blue |
196 | + } |
197 | + |
198 | + onPressedChanged: { |
199 | + seeking = pressed |
200 | + if (!pressed) { |
201 | + player.seek(value) |
202 | + } |
203 | + } |
204 | + |
205 | + Connections { |
206 | + target: player |
207 | + onDurationChanged: { |
208 | + musicToolbarFullDurationLabel.text = durationToString(player.duration) |
209 | + progressSliderMusic.maximumValue = player.duration |
210 | + } |
211 | + onPositionChanged: { |
212 | + if (progressSliderMusic.seeking === false) { |
213 | + progressSliderMusic.value = player.position |
214 | + musicToolbarFullPositionLabel.text = durationToString(player.position) |
215 | + musicToolbarFullDurationLabel.text = durationToString(player.duration) |
216 | + } |
217 | + } |
218 | + onStopped: { |
219 | + musicToolbarFullPositionLabel.text = durationToString(0); |
220 | + musicToolbarFullDurationLabel.text = durationToString(0); |
221 | + } |
222 | + } |
223 | + } |
224 | + |
225 | + /* Duration label */ |
226 | + Label { |
227 | + id: musicToolbarFullDurationLabel |
228 | + anchors.top: progressSliderMusic.bottom |
229 | + anchors.topMargin: units.gu(-2) |
230 | + anchors.right: parent.right |
231 | + color: styleMusic.nowPlaying.labelSecondaryColor |
232 | + fontSize: "small" |
233 | + height: parent.height |
234 | + horizontalAlignment: Text.AlignHCenter |
235 | + text: durationToString(player.duration) |
236 | + verticalAlignment: Text.AlignVCenter |
237 | + width: units.gu(3) |
238 | + } |
239 | + } |
240 | + |
241 | + /* Repeat button */ |
242 | + MouseArea { |
243 | + id: nowPlayingRepeatButton |
244 | + objectName: "repeatShape" |
245 | + anchors.right: nowPlayingPreviousButton.left |
246 | + anchors.rightMargin: units.gu(1) |
247 | + anchors.verticalCenter: nowPlayingPlayButton.verticalCenter |
248 | + height: units.gu(6) |
249 | + opacity: player.repeat && !emptyPage.noMusic ? 1 : .4 |
250 | + width: height |
251 | + onClicked: player.repeat = !player.repeat |
252 | + |
253 | + Icon { |
254 | + id: repeatIcon |
255 | + height: units.gu(3) |
256 | + width: height |
257 | + anchors.verticalCenter: parent.verticalCenter |
258 | + anchors.horizontalCenter: parent.horizontalCenter |
259 | + color: "white" |
260 | + name: "media-playlist-repeat" |
261 | + opacity: player.repeat && !emptyPage.noMusic ? 1 : .4 |
262 | + } |
263 | + } |
264 | + |
265 | + /* Previous button */ |
266 | + MouseArea { |
267 | + id: nowPlayingPreviousButton |
268 | + anchors.right: nowPlayingPlayButton.left |
269 | + anchors.rightMargin: units.gu(1) |
270 | + anchors.verticalCenter: nowPlayingPlayButton.verticalCenter |
271 | + height: units.gu(6) |
272 | + objectName: "previousShape" |
273 | + opacity: trackQueue.model.count === 0 ? .4 : 1 |
274 | + width: height |
275 | + onClicked: player.previousSong() |
276 | + |
277 | + Icon { |
278 | + id: nowPlayingPreviousIndicator |
279 | + height: units.gu(3) |
280 | + width: height |
281 | + anchors.verticalCenter: parent.verticalCenter |
282 | + anchors.horizontalCenter: parent.horizontalCenter |
283 | + color: "white" |
284 | + name: "media-skip-backward" |
285 | + opacity: 1 |
286 | + } |
287 | + } |
288 | + |
289 | + /* Play/Pause button */ |
290 | + MouseArea { |
291 | + id: nowPlayingPlayButton |
292 | + anchors.horizontalCenter: parent.horizontalCenter |
293 | + anchors.top: musicToolbarFullProgressContainer.bottom |
294 | + anchors.topMargin: units.gu(2) |
295 | + height: units.gu(12) |
296 | + objectName: "playShape" |
297 | + width: height |
298 | + onClicked: player.toggle() |
299 | + |
300 | + Icon { |
301 | + id: nowPlayingPlayIndicator |
302 | + height: units.gu(6) |
303 | + width: height |
304 | + anchors.verticalCenter: parent.verticalCenter |
305 | + anchors.horizontalCenter: parent.horizontalCenter |
306 | + opacity: emptyPage.noMusic ? .4 : 1 |
307 | + color: "white" |
308 | + name: player.playbackState === MediaPlayer.PlayingState ? "media-playback-pause" : "media-playback-start" |
309 | + } |
310 | + } |
311 | + |
312 | + /* Next button */ |
313 | + MouseArea { |
314 | + id: nowPlayingNextButton |
315 | + anchors.left: nowPlayingPlayButton.right |
316 | + anchors.leftMargin: units.gu(1) |
317 | + anchors.verticalCenter: nowPlayingPlayButton.verticalCenter |
318 | + height: units.gu(6) |
319 | + objectName: "forwardShape" |
320 | + opacity: trackQueue.model.count === 0 ? .4 : 1 |
321 | + width: height |
322 | + onClicked: player.nextSong() |
323 | + |
324 | + Icon { |
325 | + id: nowPlayingNextIndicator |
326 | + height: units.gu(3) |
327 | + width: height |
328 | + anchors.verticalCenter: parent.verticalCenter |
329 | + anchors.horizontalCenter: parent.horizontalCenter |
330 | + color: "white" |
331 | + name: "media-skip-forward" |
332 | + opacity: 1 |
333 | + } |
334 | + } |
335 | + |
336 | + /* Shuffle button */ |
337 | + MouseArea { |
338 | + id: nowPlayingShuffleButton |
339 | + objectName: "shuffleShape" |
340 | + anchors.left: nowPlayingNextButton.right |
341 | + anchors.leftMargin: units.gu(1) |
342 | + anchors.verticalCenter: nowPlayingPlayButton.verticalCenter |
343 | + height: units.gu(6) |
344 | + opacity: player.shuffle && !emptyPage.noMusic ? 1 : .4 |
345 | + width: height |
346 | + onClicked: player.shuffle = !player.shuffle |
347 | + |
348 | + Icon { |
349 | + id: shuffleIcon |
350 | + height: units.gu(3) |
351 | + width: height |
352 | + anchors.verticalCenter: parent.verticalCenter |
353 | + anchors.horizontalCenter: parent.horizontalCenter |
354 | + color: "white" |
355 | + name: "media-playlist-shuffle" |
356 | + opacity: player.shuffle && !emptyPage.noMusic ? 1 : .4 |
357 | + } |
358 | + } |
359 | + } |
360 | } |
361 | |
362 | ListView { |
363 | id: queuelist |
364 | + visible: isListView |
365 | objectName: "nowPlayingQueueList" |
366 | - anchors.fill: parent |
367 | - anchors.bottomMargin: musicToolbar.mouseAreaOffset + musicToolbar.minimizedHeight |
368 | + anchors { |
369 | + fill: parent |
370 | + } |
371 | delegate: queueDelegate |
372 | model: trackQueue.model |
373 | highlightFollowsCurrentItem: false |
374 | @@ -117,10 +411,6 @@ |
375 | customdebug("Queue: Now has: " + queuelist.count + " tracks") |
376 | } |
377 | |
378 | - onMovementStarted: { |
379 | - musicToolbar.hideToolbar(); |
380 | - } |
381 | - |
382 | Component { |
383 | id: queueDelegate |
384 | ListItemWithActions { |
385 | @@ -218,7 +508,7 @@ |
386 | ? queuelist.currentHeight |
387 | : mainView.width - (trackImage.anchors.leftMargin * 2)) |
388 | : queuelist.normalHeight) - units.gu(2) |
389 | - covers: [{art: model.art}] |
390 | + covers: [{art: model.art, album: model.album, author: model.author}] |
391 | |
392 | spacing: units.gu(2) |
393 | |
394 | |
395 | === modified file 'MusicPlaylists.qml' |
396 | --- MusicPlaylists.qml 2014-09-20 10:50:45 +0000 |
397 | +++ MusicPlaylists.qml 2014-10-04 17:07:09 +0000 |
398 | @@ -116,8 +116,9 @@ |
399 | ListView { |
400 | id: playlistslist |
401 | objectName: "playlistsListView" |
402 | - anchors.fill: parent |
403 | - anchors.bottomMargin: musicToolbar.mouseAreaOffset + musicToolbar.minimizedHeight |
404 | + anchors { |
405 | + fill: parent |
406 | + } |
407 | model: playlistModel.model |
408 | delegate: playlistDelegate |
409 | onCountChanged: { |
410 | |
411 | === modified file 'MusicSettings.qml' |
412 | --- MusicSettings.qml 2014-09-20 10:50:45 +0000 |
413 | +++ MusicSettings.qml 2014-10-04 17:07:09 +0000 |
414 | @@ -30,17 +30,6 @@ |
415 | title: i18n.tr("Settings") |
416 | contentsHeight: parent.height; |
417 | |
418 | - onVisibleChanged: { |
419 | - if (visible === true) |
420 | - { |
421 | - musicToolbar.disableToolbar() |
422 | - } |
423 | - else |
424 | - { |
425 | - musicToolbar.enableToolbar() |
426 | - } |
427 | - } |
428 | - |
429 | onCancelClicked: PopupUtils.close(musicSettings) |
430 | onConfirmClicked: { |
431 | PopupUtils.close(musicSettings) |
432 | |
433 | === modified file 'MusicToolbar.qml' |
434 | --- MusicToolbar.qml 2014-09-23 20:45:41 +0000 |
435 | +++ MusicToolbar.qml 2014-10-04 17:07:09 +0000 |
436 | @@ -43,7 +43,6 @@ |
437 | property int transitionDuration: 100 |
438 | |
439 | property alias currentHeight: musicToolbarPanel.height |
440 | - property alias minimizedHeight: musicToolbarPanel.minimizedHeight |
441 | property alias expandedHeight: musicToolbarPanel.expandedHeight |
442 | property alias fullHeight: musicToolbarPanel.fullHeight |
443 | property alias mouseAreaOffset: musicToolbarPanel.hintSize |
444 | @@ -72,22 +71,6 @@ |
445 | |
446 | /* Helper functions */ |
447 | |
448 | - // Disable the toolbar for this page/view (eg a dialog) |
449 | - function disableToolbar() |
450 | - { |
451 | - cachedStates.push(state); |
452 | - musicToolbarPanel.state = "hidden"; |
453 | - } |
454 | - |
455 | - // Enable the toolbar (run when closing a page that disabled it) |
456 | - function enableToolbar() |
457 | - { |
458 | - if (cachedStates.length > 0) |
459 | - { |
460 | - musicToolbarPanel.state = cachedStates.pop(); |
461 | - } |
462 | - } |
463 | - |
464 | // Back button has been pressed, jump up pageStack or back to parent page |
465 | function goBack() |
466 | { |
467 | @@ -98,18 +81,6 @@ |
468 | else if (mainPageStack !== null && mainPageStack.depth > 1) { |
469 | mainPageStack.pop(currentPage) |
470 | } |
471 | - |
472 | - startAutohideTimer() |
473 | - } |
474 | - |
475 | - // Hide the toolbar |
476 | - function hideToolbar() |
477 | - { |
478 | - if (!wideAspect) { |
479 | - musicToolbarPanel.close(); |
480 | - } |
481 | - |
482 | - toolbarAutoHideTimer.stop(); // cancel any autohide |
483 | } |
484 | |
485 | // Remove sheet as it has been closed |
486 | @@ -135,32 +106,6 @@ |
487 | currentSheet.push(sheet) |
488 | } |
489 | |
490 | - // Show the toolbar |
491 | - function showToolbar() |
492 | - { |
493 | - startAutohideTimer(); // always attempt to autohide toolbar |
494 | - |
495 | - if (!musicToolbarPanel.opened) { |
496 | - musicToolbarPanel.open(); |
497 | - } |
498 | - } |
499 | - |
500 | - // Start the autohidetimer |
501 | - function startAutohideTimer() |
502 | - { |
503 | - toolbarAutoHideTimer.restart(); |
504 | - } |
505 | - |
506 | - Connections { |
507 | - target: mainView |
508 | - onWideAspectChanged: { |
509 | - // Force toolbar to show if in wideAspect |
510 | - if (wideAspect && !opened) { |
511 | - showToolbar(); |
512 | - } |
513 | - } |
514 | - } |
515 | - |
516 | Panel { |
517 | id: musicToolbarPanel |
518 | anchors { |
519 | @@ -168,32 +113,25 @@ |
520 | right: parent.right |
521 | bottom: parent.bottom |
522 | } |
523 | - height: currentMode === "full" ? fullHeight : expandedHeight |
524 | - locked: wideAspect |
525 | - |
526 | - __closeOnContentsClicks: false // TODO: fix bug 1295720 |
527 | - |
528 | + // TODO: this will be removed when the toolbar is redone |
529 | + height: currentMode === "hidden" ? 0 : (currentMode === "full" ? fullHeight : expandedHeight) |
530 | + locked: true |
531 | + opened: true |
532 | + |
533 | + // TODO: this will be removed when the toolbar is redone |
534 | // The current mode of the controls |
535 | - property string currentMode: wideAspect || (currentPage === nowPlaying) |
536 | - ? "full" : "expanded" |
537 | + property string currentMode: !nowPlaying.isListView && currentPage === nowPlaying |
538 | + ? "hidden" : (wideAspect || currentPage === nowPlaying |
539 | + ? "full" : "expanded") |
540 | |
541 | // Properties for the different heights |
542 | - property int minimizedHeight: units.gu(0.5) |
543 | - property int expandedHeight: units.gu(8) |
544 | + property int expandedHeight: units.gu(7.25) |
545 | property int fullHeight: units.gu(11) |
546 | |
547 | onCurrentModeChanged: { |
548 | musicToolbarFullProgressMouseArea.enabled = currentMode === "full" |
549 | } |
550 | |
551 | - onOpenedChanged: { |
552 | - onToolbarShownChanged(opened, currentPage, currentTab); |
553 | - |
554 | - if (opened) { |
555 | - startAutohideTimer(); |
556 | - } |
557 | - } |
558 | - |
559 | /* Full toolbar */ |
560 | Rectangle { |
561 | id: musicToolbarFullContainer |
562 | @@ -717,8 +655,10 @@ |
563 | |
564 | Rectangle { |
565 | id: musicToolbarPlayerControls |
566 | - anchors.fill: parent |
567 | - color: styleMusic.playerControls.backgroundColor |
568 | + anchors { |
569 | + fill: parent |
570 | + } |
571 | + color: "#000" |
572 | state: trackQueue.model.count === 0 ? "disabled" : "enabled" |
573 | states: [ |
574 | State { |
575 | @@ -745,39 +685,55 @@ |
576 | } |
577 | ] |
578 | |
579 | + /* Disabled (empty state) controls */ |
580 | Rectangle { |
581 | id: disabledPlayerControlsGroup |
582 | - anchors.fill: parent |
583 | + anchors { |
584 | + bottom: playerControlsProgressBar.top |
585 | + left: parent.left |
586 | + right: parent.right |
587 | + top: parent.top |
588 | + } |
589 | color: "transparent" |
590 | - visible: trackQueue.model.count === 0 |
591 | |
592 | Label { |
593 | id: noSongsInQueueLabel |
594 | anchors { |
595 | left: parent.left |
596 | + leftMargin: units.gu(2) |
597 | right: disabledPlayerControlsPlayButton.left |
598 | - margins: units.gu(1) |
599 | - top: parent.top |
600 | + rightMargin: units.gu(2) |
601 | + verticalCenter: parent.verticalCenter |
602 | } |
603 | color: styleMusic.playerControls.labelColor |
604 | - text: i18n.tr("Tap play to shuffle music") |
605 | + text: i18n.tr("Tap to shuffle music") |
606 | fontSize: "large" |
607 | wrapMode: Text.WordWrap |
608 | maximumLineCount: 2 |
609 | } |
610 | |
611 | - Rectangle { |
612 | + /* Play/Pause button */ |
613 | + Icon { |
614 | id: disabledPlayerControlsPlayButton |
615 | - anchors.right: parent.right |
616 | - anchors.rightMargin: units.gu(1) |
617 | - anchors.verticalCenter: parent.verticalCenter |
618 | - antialiasing: true |
619 | - color: "#444" |
620 | - height: units.gu(7) |
621 | - radius: height / 2 |
622 | + anchors { |
623 | + right: parent.right |
624 | + rightMargin: units.gu(3) |
625 | + verticalCenter: parent.verticalCenter |
626 | + } |
627 | + color: "#FFF" |
628 | + height: units.gu(2.5) |
629 | + name: player.playbackState === MediaPlayer.PlayingState ? |
630 | + "media-playback-pause" : "media-playback-start" |
631 | + objectName: "disabledSmallPlayShape" |
632 | width: height |
633 | + } |
634 | |
635 | - function trigger() { |
636 | + /* Click to shuffle music */ |
637 | + MouseArea { |
638 | + anchors { |
639 | + fill: parent |
640 | + } |
641 | + onClicked: { |
642 | if (emptyPage.noMusic) { |
643 | return; |
644 | } |
645 | @@ -789,230 +745,65 @@ |
646 | player.toggle(); |
647 | } |
648 | } |
649 | - |
650 | - // draws the outer shadow/highlight |
651 | - Rectangle { |
652 | - id: disabledSourceOutter |
653 | - anchors { fill: parent; margins: -units.gu(0.1) } |
654 | - radius: (width / 2) |
655 | - antialiasing: true |
656 | - gradient: Gradient { |
657 | - GradientStop { position: 0.0; color: "black" } |
658 | - GradientStop { position: 0.5; color: "transparent" } |
659 | - GradientStop { position: 1.0; color: UbuntuColors.warmGrey } |
660 | - } |
661 | - |
662 | - Rectangle { |
663 | - anchors.verticalCenter: parent.verticalCenter |
664 | - anchors.horizontalCenter: parent.horizontalCenter |
665 | - antialiasing: true |
666 | - color: "#444" |
667 | - height: playerControlsPlayButton.height - units.gu(.1) |
668 | - radius: height / 2 |
669 | - width: height |
670 | - |
671 | - Rectangle { |
672 | - id: disabledPlayerControlsPlayInnerCircle |
673 | - anchors.horizontalCenter: parent.horizontalCenter |
674 | - anchors.verticalCenter: parent.verticalCenter |
675 | - antialiasing: true |
676 | - height: units.gu(4.5) |
677 | - radius: height / 2 |
678 | - width: height |
679 | - color: styleMusic.toolbar.fullInnerPlayCircleColor |
680 | - |
681 | - // draws the inner shadow/highlight |
682 | - Rectangle { |
683 | - id: disabledSourceInner |
684 | - anchors { fill: parent; margins: -units.gu(0.1) } |
685 | - radius: (width / 2) |
686 | - antialiasing: true |
687 | - gradient: Gradient { |
688 | - GradientStop { position: 0.0; color: UbuntuColors.warmGrey } |
689 | - GradientStop { position: 0.5; color: "transparent" } |
690 | - GradientStop { position: 1.0; color: "black" } |
691 | - } |
692 | - |
693 | - Rectangle { |
694 | - anchors.verticalCenter: parent.verticalCenter |
695 | - anchors.horizontalCenter: parent.horizontalCenter |
696 | - antialiasing: true |
697 | - height: playerControlsPlayInnerCircle.height - units.gu(.1) |
698 | - radius: height / 2 |
699 | - width: height |
700 | - color: styleMusic.toolbar.fullInnerPlayCircleColor |
701 | - |
702 | - Image { |
703 | - id: disabledPlayIndicator |
704 | - height: units.gu(4) |
705 | - width: height |
706 | - anchors.horizontalCenter: parent.horizontalCenter |
707 | - anchors.verticalCenter: parent.verticalCenter |
708 | - opacity: emptyPage.noMusic ? .4 : 1 |
709 | - source: player.playbackState === MediaPlayer.PlayingState ? |
710 | - Qt.resolvedUrl("images/media-playback-pause.svg") : Qt.resolvedUrl("images/media-playback-start.svg") |
711 | - } |
712 | - } |
713 | - } |
714 | - } |
715 | - } |
716 | - } |
717 | } |
718 | } |
719 | |
720 | + /* Enabled (queue > 0) controls */ |
721 | Rectangle { |
722 | id: enabledPlayerControlsGroup |
723 | - anchors.fill: parent |
724 | + anchors { |
725 | + bottom: playerControlsProgressBar.top |
726 | + left: parent.left |
727 | + right: parent.right |
728 | + top: parent.top |
729 | + } |
730 | color: "transparent" |
731 | - visible: trackQueue.model.count !== 0 |
732 | - |
733 | - /* Settings button */ |
734 | - // TODO: Enable settings when it is practical |
735 | - /* Rectangle { |
736 | - id: playerControlsSettings |
737 | - anchors.right: parent.right |
738 | - anchors.verticalCenter: parent.verticalCenter |
739 | - width: units.gu(6) |
740 | - height: width |
741 | - color: "transparent" |
742 | - |
743 | - Image { |
744 | - anchors.horizontalCenter: parent.horizontalCenter |
745 | - anchors.verticalCenter: parent.verticalCenter |
746 | - height: units.gu(3) |
747 | - source: Qt.resolvedUrl("images/settings.png") |
748 | - width: height |
749 | - } |
750 | - |
751 | - MouseArea { |
752 | - anchors.fill: parent |
753 | - onClicked: { |
754 | - console.debug('Debug: Show settings') |
755 | - PopupUtils.open(Qt.resolvedUrl("MusicSettings.qml"), mainView, |
756 | - { |
757 | - title: i18n.tr("Settings") |
758 | - } ) |
759 | - } |
760 | - } |
761 | - } */ |
762 | - |
763 | - /* Play/Pause button TODO: image and colours needs updating */ |
764 | - Rectangle { |
765 | - id: playerControlsPlayButton |
766 | - anchors.right: parent.right |
767 | - anchors.rightMargin: units.gu(1) |
768 | - anchors.verticalCenter: parent.verticalCenter |
769 | - antialiasing: true |
770 | - color: "#444" |
771 | - height: units.gu(7) |
772 | - objectName: "smallPlayShape" |
773 | - radius: height / 2 |
774 | - width: height |
775 | - |
776 | - function trigger() { |
777 | - if (emptyPage.noMusic) { |
778 | - return; |
779 | - } |
780 | - |
781 | - if (trackQueue.model.count === 0) { |
782 | - playRandomSong(); |
783 | - } |
784 | - else { |
785 | - player.toggle(); |
786 | - } |
787 | - } |
788 | - |
789 | - // draws the outer shadow/highlight |
790 | - Rectangle { |
791 | - id: sourceOutter |
792 | - anchors { fill: parent; margins: -units.gu(0.1) } |
793 | - radius: (width / 2) |
794 | - antialiasing: true |
795 | - gradient: Gradient { |
796 | - GradientStop { position: 0.0; color: "black" } |
797 | - GradientStop { position: 0.5; color: "transparent" } |
798 | - GradientStop { position: 1.0; color: UbuntuColors.warmGrey } |
799 | - } |
800 | - |
801 | - Rectangle { |
802 | - anchors.verticalCenter: parent.verticalCenter |
803 | - anchors.horizontalCenter: parent.horizontalCenter |
804 | - antialiasing: true |
805 | - color: "#444" |
806 | - height: playerControlsPlayButton.height - units.gu(.1) |
807 | - radius: height / 2 |
808 | - width: height |
809 | - |
810 | - Rectangle { |
811 | - id: playerControlsPlayInnerCircle |
812 | - anchors.horizontalCenter: parent.horizontalCenter |
813 | - anchors.verticalCenter: parent.verticalCenter |
814 | - antialiasing: true |
815 | - height: units.gu(4.5) |
816 | - radius: height / 2 |
817 | - width: height |
818 | - color: styleMusic.toolbar.fullInnerPlayCircleColor |
819 | - |
820 | - // draws the inner shadow/highlight |
821 | - Rectangle { |
822 | - id: sourceInner |
823 | - anchors { fill: parent; margins: -units.gu(0.1) } |
824 | - radius: (width / 2) |
825 | - antialiasing: true |
826 | - gradient: Gradient { |
827 | - GradientStop { position: 0.0; color: UbuntuColors.warmGrey } |
828 | - GradientStop { position: 0.5; color: "transparent" } |
829 | - GradientStop { position: 1.0; color: "black" } |
830 | - } |
831 | - |
832 | - Rectangle { |
833 | - anchors.verticalCenter: parent.verticalCenter |
834 | - anchors.horizontalCenter: parent.horizontalCenter |
835 | - antialiasing: true |
836 | - height: playerControlsPlayInnerCircle.height - units.gu(.1) |
837 | - radius: height / 2 |
838 | - width: height |
839 | - color: styleMusic.toolbar.fullInnerPlayCircleColor |
840 | - |
841 | - Image { |
842 | - id: playindicator |
843 | - height: units.gu(4) |
844 | - width: height |
845 | - anchors.horizontalCenter: parent.horizontalCenter |
846 | - anchors.verticalCenter: parent.verticalCenter |
847 | - opacity: emptyPage.noMusic ? .4 : 1 |
848 | - source: player.playbackState === MediaPlayer.PlayingState ? |
849 | - Qt.resolvedUrl("images/media-playback-pause.svg") : Qt.resolvedUrl("images/media-playback-start.svg") |
850 | - } |
851 | - } |
852 | - } |
853 | - } |
854 | + |
855 | + /* Album art in player controls */ |
856 | + Image { |
857 | + id: playerControlsImage |
858 | + anchors { |
859 | + bottom: parent.bottom |
860 | + left: parent.left |
861 | + top: parent.top |
862 | + } |
863 | + smooth: true |
864 | + source: player.currentMetaArt === "" ? |
865 | + decodeURIComponent("image://albumart/artist=" + |
866 | + player.currentMetaArtist + |
867 | + "&album=" + player.currentMetaAlbum) |
868 | + : player.currentMetaArt |
869 | + width: parent.height |
870 | + |
871 | + onStatusChanged: { |
872 | + if (status === Image.Error) { |
873 | + source = Qt.resolvedUrl("../images/music-app-cover@30.png") |
874 | } |
875 | } |
876 | } |
877 | |
878 | - /* Container holding the labels for the toolbar */ |
879 | - Rectangle { |
880 | - id: playerControlLabelContainer |
881 | - anchors.bottom: parent.bottom |
882 | - anchors.left: parent.left |
883 | - anchors.right: playerControlsPlayButton.left |
884 | - anchors.top: parent.top |
885 | - color: "transparent" |
886 | + /* Column of meta labels */ |
887 | + Column { |
888 | + id: playerControlsLabels |
889 | + anchors { |
890 | + left: playerControlsImage.right |
891 | + leftMargin: units.gu(1.5) |
892 | + right: playerControlsPlayButton.left |
893 | + rightMargin: units.gu(1) |
894 | + verticalCenter: parent.verticalCenter |
895 | + } |
896 | |
897 | /* Title of track */ |
898 | Label { |
899 | id: playerControlsTitle |
900 | - anchors.left: parent.left |
901 | - anchors.leftMargin: units.gu(1) |
902 | - anchors.right: parent.right |
903 | - anchors.rightMargin: units.gu(1) |
904 | - anchors.top: parent.top |
905 | - anchors.topMargin: units.gu(1) |
906 | - color: styleMusic.playerControls.labelColor |
907 | + anchors { |
908 | + left: parent.left |
909 | + right: parent.right |
910 | + } |
911 | + color: "#FFF" |
912 | elide: Text.ElideRight |
913 | - fontSize: "medium" |
914 | - objectName: "playercontroltitle" |
915 | + fontSize: "small" |
916 | + font.weight: Font.DemiBold |
917 | text: player.currentMetaTitle === "" |
918 | ? player.source : player.currentMetaTitle |
919 | } |
920 | @@ -1020,72 +811,103 @@ |
921 | /* Artist of track */ |
922 | Label { |
923 | id: playerControlsArtist |
924 | - anchors.left: parent.left |
925 | - anchors.leftMargin: units.gu(1) |
926 | - anchors.right: parent.right |
927 | - anchors.rightMargin: units.gu(1) |
928 | - anchors.top: playerControlsTitle.bottom |
929 | - color: styleMusic.playerControls.labelColor |
930 | + anchors { |
931 | + left: parent.left |
932 | + right: parent.right |
933 | + } |
934 | + color: "#FFF" |
935 | elide: Text.ElideRight |
936 | fontSize: "small" |
937 | + opacity: 0.4 |
938 | text: player.currentMetaArtist |
939 | } |
940 | - |
941 | - /* Album of track */ |
942 | - Label { |
943 | - id: playerControlsAlbum |
944 | - anchors.left: parent.left |
945 | - anchors.leftMargin: units.gu(1) |
946 | - anchors.right: parent.right |
947 | - anchors.rightMargin: units.gu(1) |
948 | - anchors.top: playerControlsArtist.bottom |
949 | - color: styleMusic.playerControls.labelColor |
950 | - elide: Text.ElideRight |
951 | - fontSize: "small" |
952 | - text: player.currentMetaAlbum |
953 | - } |
954 | - } |
955 | - |
956 | + } |
957 | + |
958 | + /* Play/Pause button */ |
959 | + Icon { |
960 | + id: playerControlsPlayButton |
961 | + anchors { |
962 | + right: parent.right |
963 | + rightMargin: units.gu(3) |
964 | + verticalCenter: parent.verticalCenter |
965 | + } |
966 | + color: "#FFF" |
967 | + height: units.gu(2.5) |
968 | + name: player.playbackState === MediaPlayer.PlayingState ? |
969 | + "media-playback-pause" : "media-playback-start" |
970 | + objectName: "smallPlayShape" |
971 | + width: height |
972 | + } |
973 | + |
974 | + MouseArea { |
975 | + anchors { |
976 | + bottom: parent.bottom |
977 | + horizontalCenter: playerControlsPlayButton.horizontalCenter |
978 | + top: parent.top |
979 | + } |
980 | + onClicked: player.toggle() |
981 | + width: units.gu(8) |
982 | + |
983 | + Rectangle { |
984 | + anchors { |
985 | + fill: parent |
986 | + } |
987 | + color: "#FFF" |
988 | + opacity: parent.pressed ? 0.1 : 0 |
989 | + |
990 | + Behavior on opacity { |
991 | + UbuntuNumberAnimation { |
992 | + duration: UbuntuAnimation.FastDuration |
993 | + } |
994 | + } |
995 | + } |
996 | + } |
997 | + |
998 | + /* Mouse area to jump to now playing */ |
999 | Rectangle { |
1000 | - anchors.fill: playerControlLabelContainer |
1001 | + anchors { |
1002 | + bottom: parent.bottom |
1003 | + left: parent.left |
1004 | + right: playerControlsLabels.right |
1005 | + top: parent.top |
1006 | + } |
1007 | color: "transparent" |
1008 | function trigger() { |
1009 | tabs.pushNowPlaying(); |
1010 | } |
1011 | } |
1012 | } |
1013 | - } |
1014 | - } |
1015 | - |
1016 | - /* Object which provides the progress bar when toolbar is minimized */ |
1017 | - Rectangle { |
1018 | - id: musicToolbarSmallProgressBackground |
1019 | - anchors { |
1020 | - bottom: parent.top |
1021 | - left: parent.left |
1022 | - right: parent.right |
1023 | - } |
1024 | - color: styleMusic.common.black |
1025 | - height: musicToolbarPanel.minimizedHeight |
1026 | - visible: (!musicToolbarPanel.animating && |
1027 | - !musicToolbarPanel.opened) |
1028 | - || musicToolbarPanel.currentMode == "expanded" |
1029 | - |
1030 | - Rectangle { |
1031 | - id: musicToolbarSmallProgressHint |
1032 | - anchors.left: parent.left |
1033 | - anchors.top: parent.top |
1034 | - color: styleMusic.nowPlaying.progressForegroundColor |
1035 | - height: parent.height |
1036 | - width: 0 |
1037 | - |
1038 | - Connections { |
1039 | - target: player |
1040 | - onPositionChanged: { |
1041 | - musicToolbarSmallProgressHint.width = (player.position / player.duration) * musicToolbarSmallProgressBackground.width |
1042 | + |
1043 | + /* Object which provides the progress bar when toolbar is minimized */ |
1044 | + Rectangle { |
1045 | + id: playerControlsProgressBar |
1046 | + anchors { |
1047 | + bottom: parent.bottom |
1048 | + left: parent.left |
1049 | + right: parent.right |
1050 | } |
1051 | - onStopped: { |
1052 | - musicToolbarSmallProgressHint.width = 0; |
1053 | + color: styleMusic.common.black |
1054 | + height: units.gu(0.25) |
1055 | + |
1056 | + Rectangle { |
1057 | + id: playerControlsProgressBarHint |
1058 | + anchors { |
1059 | + left: parent.left |
1060 | + top: parent.top |
1061 | + } |
1062 | + color: UbuntuColors.blue |
1063 | + height: parent.height |
1064 | + width: 0 |
1065 | + |
1066 | + Connections { |
1067 | + target: player |
1068 | + onPositionChanged: { |
1069 | + playerControlsProgressBarHint.width = (player.position / player.duration) * playerControlsProgressBar.width |
1070 | + } |
1071 | + onStopped: { |
1072 | + playerControlsProgressBarHint.width = 0; |
1073 | + } |
1074 | + } |
1075 | } |
1076 | } |
1077 | } |
1078 | @@ -1123,19 +945,6 @@ |
1079 | musicToolbarFullProgressBarContainer.seeking = false; |
1080 | } |
1081 | } |
1082 | - |
1083 | - // Timer for autohide |
1084 | - Timer { |
1085 | - id: toolbarAutoHideTimer |
1086 | - interval: 5000 |
1087 | - repeat: false |
1088 | - running: false |
1089 | - onTriggered: { |
1090 | - if (currentPage !== nowPlaying) { // don't autohide on now playing |
1091 | - hideToolbar(); |
1092 | - } |
1093 | - } |
1094 | - } |
1095 | } |
1096 | } |
1097 | |
1098 | |
1099 | === modified file 'MusicTracks.qml' |
1100 | --- MusicTracks.qml 2014-09-20 15:41:33 +0000 |
1101 | +++ MusicTracks.qml 2014-10-04 17:07:09 +0000 |
1102 | @@ -36,8 +36,9 @@ |
1103 | |
1104 | ListView { |
1105 | id: tracklist |
1106 | - anchors.fill: parent |
1107 | - anchors.bottomMargin: musicToolbar.mouseAreaOffset + musicToolbar.minimizedHeight |
1108 | + anchors { |
1109 | + fill: parent |
1110 | + } |
1111 | highlightFollowsCurrentItem: false |
1112 | objectName: "trackstab-listview" |
1113 | model: SortFilterModel { |
1114 | |
1115 | === modified file 'MusicaddtoPlaylist.qml' |
1116 | --- MusicaddtoPlaylist.qml 2014-09-20 10:50:45 +0000 |
1117 | +++ MusicaddtoPlaylist.qml 2014-10-04 17:07:09 +0000 |
1118 | @@ -65,7 +65,6 @@ |
1119 | ListView { |
1120 | id: addtoPlaylistView |
1121 | anchors { |
1122 | - bottomMargin: musicToolbar.mouseAreaOffset + musicToolbar.minimizedHeight |
1123 | fill: parent |
1124 | } |
1125 | clip: true |
1126 | |
1127 | === modified file 'Player.qml' |
1128 | --- Player.qml 2014-09-20 15:41:33 +0000 |
1129 | +++ Player.qml 2014-10-04 17:07:09 +0000 |
1130 | @@ -187,7 +187,11 @@ |
1131 | else { |
1132 | var obj = trackQueue.model.get(player.currentIndex); |
1133 | currentMetaAlbum = obj.album; |
1134 | - currentMetaArt = obj.art; |
1135 | + |
1136 | + if (obj.art !== undefined) { // FIXME: protect against not art property in playlists |
1137 | + currentMetaArt = obj.art; |
1138 | + } |
1139 | + |
1140 | currentMetaArtist = obj.author; |
1141 | currentMetaFile = obj.filename; |
1142 | currentMetaTitle = obj.title; |
1143 | |
1144 | === modified file 'Style.qml' |
1145 | --- Style.qml 2014-09-20 10:50:45 +0000 |
1146 | +++ Style.qml 2014-10-04 17:07:09 +0000 |
1147 | @@ -34,8 +34,8 @@ |
1148 | property QtObject common: QtObject { |
1149 | property color black: "#000000"; |
1150 | property color white: "#FFFFFF"; |
1151 | - property color music: "#333333"; |
1152 | - property color subtitle: "#666666"; |
1153 | + property color music: "#FFFFFF"; |
1154 | + property color subtitle: "#999999"; |
1155 | property color expandedColor: "#000000"; |
1156 | property int albumSize: units.gu(10); |
1157 | property int itemHeight: units.gu(12); |
1158 | |
1159 | === modified file 'common/AlbumsPage.qml' |
1160 | --- common/AlbumsPage.qml 2014-09-20 15:41:33 +0000 |
1161 | +++ common/AlbumsPage.qml 2014-10-04 17:07:09 +0000 |
1162 | @@ -28,7 +28,6 @@ |
1163 | |
1164 | MusicPage { |
1165 | id: albumStackPage |
1166 | - anchors.bottomMargin: units.gu(.5) |
1167 | objectName: "albumsArtistPage" |
1168 | visible: false |
1169 | |
1170 | @@ -38,7 +37,6 @@ |
1171 | ListView { |
1172 | id: albumtrackslist |
1173 | anchors { |
1174 | - bottomMargin: wideAspect ? musicToolbar.fullHeight : musicToolbar.mouseAreaOffset + musicToolbar.minimizedHeight |
1175 | fill: parent |
1176 | } |
1177 | delegate: albumTracksDelegate |
1178 | |
1179 | === modified file 'common/BlurredBackground.qml' |
1180 | --- common/BlurredBackground.qml 2014-09-20 15:41:33 +0000 |
1181 | +++ common/BlurredBackground.qml 2014-10-04 17:07:09 +0000 |
1182 | @@ -23,8 +23,14 @@ |
1183 | |
1184 | // Blurred background |
1185 | Rectangle { |
1186 | - anchors.fill: parent |
1187 | - property string art: player.currentMetaFile === "" ? Qt.resolvedUrl("../images/music-app-cover@30.png") : player.currentMetaArt |
1188 | + width: parent.width |
1189 | + property string art // : player.currentMetaFile === "" ? Qt.resolvedUrl("../images/music-app-cover@30.png") : player.currentMetaArt |
1190 | + |
1191 | + // dark layer |
1192 | + Rectangle { |
1193 | + anchors.fill: parent |
1194 | + color: "black" |
1195 | + } |
1196 | |
1197 | // the album art |
1198 | Image { |
1199 | @@ -32,7 +38,8 @@ |
1200 | anchors.horizontalCenter: parent.horizontalCenter |
1201 | anchors.verticalCenter: parent.verticalCenter |
1202 | source: art // this has to be fixed for the default cover art to work - cant find in this dir |
1203 | - height: Math.max(parent.height, parent.width) |
1204 | + fillMode: Image.PreserveAspectCrop |
1205 | + height: parent.height |
1206 | width: Math.max(parent.height, parent.width) |
1207 | visible: false |
1208 | onStatusChanged: { |
1209 | @@ -47,12 +54,7 @@ |
1210 | anchors.fill: backgroundImage |
1211 | source: backgroundImage |
1212 | radius: units.dp(42) |
1213 | - } |
1214 | - // transparent white layer |
1215 | - Rectangle { |
1216 | - anchors.fill: parent |
1217 | - color: "white" |
1218 | - opacity: 0.7 |
1219 | + opacity: 0.2 |
1220 | } |
1221 | onArtChanged: { |
1222 | // TODO: This is a work around for LP:1261078 and LP:1306845. Ideally, |
1223 | |
1224 | === modified file 'common/MusicPage.qml' |
1225 | --- common/MusicPage.qml 2014-08-20 17:35:52 +0000 |
1226 | +++ common/MusicPage.qml 2014-10-04 17:07:09 +0000 |
1227 | @@ -23,6 +23,10 @@ |
1228 | // generic page for music, could be useful for bottomedge implementation |
1229 | Page { |
1230 | id: thisPage |
1231 | + anchors { |
1232 | + bottomMargin: musicToolbar.currentHeight |
1233 | + fill: parent |
1234 | + } |
1235 | |
1236 | onVisibleChanged: { |
1237 | if (visible) { |
1238 | |
1239 | === modified file 'common/MusicRow.qml' |
1240 | --- common/MusicRow.qml 2014-09-20 10:50:45 +0000 |
1241 | +++ common/MusicRow.qml 2014-10-04 17:07:09 +0000 |
1242 | @@ -24,12 +24,13 @@ |
1243 | Row { |
1244 | anchors { |
1245 | left: parent.left |
1246 | - leftMargin: units.gu(1) |
1247 | + leftMargin: units.gu(2) |
1248 | right: parent.right |
1249 | - rightMargin: units.gu(1) |
1250 | + rightMargin: units.gu(2) |
1251 | } |
1252 | |
1253 | property alias covers: coverRow.covers |
1254 | + property bool showCovers: true |
1255 | property alias pressed: coverRow.pressed |
1256 | property alias column: columnComponent.sourceComponent |
1257 | |
1258 | @@ -37,6 +38,7 @@ |
1259 | |
1260 | CoverRow { |
1261 | id: coverRow |
1262 | + visible: showCovers |
1263 | anchors { |
1264 | top: parent.top |
1265 | topMargin: units.gu(1) |
1266 | @@ -50,7 +52,7 @@ |
1267 | id: columnComponent |
1268 | anchors { |
1269 | top: parent.top |
1270 | - topMargin: units.gu(2) |
1271 | + topMargin: units.gu(1) |
1272 | } |
1273 | width: parent.width - coverRow.width - parent.spacing |
1274 | |
1275 | |
1276 | === modified file 'common/SongsPage.qml' |
1277 | --- common/SongsPage.qml 2014-09-20 15:41:33 +0000 |
1278 | +++ common/SongsPage.qml 2014-10-04 17:07:09 +0000 |
1279 | @@ -29,7 +29,6 @@ |
1280 | |
1281 | MusicPage { |
1282 | id: songStackPage |
1283 | - anchors.bottomMargin: units.gu(.5) |
1284 | objectName: "songsPage" |
1285 | visible: false |
1286 | |
1287 | @@ -52,7 +51,6 @@ |
1288 | ListView { |
1289 | id: albumtrackslist |
1290 | anchors { |
1291 | - bottomMargin: wideAspect ? musicToolbar.fullHeight : musicToolbar.mouseAreaOffset + musicToolbar.minimizedHeight |
1292 | fill: parent |
1293 | } |
1294 | delegate: albumTracksDelegate |
1295 | @@ -61,99 +59,161 @@ |
1296 | width: parent.width |
1297 | header: ListItem.Standard { |
1298 | id: albumInfo |
1299 | - height: units.gu(22) |
1300 | - |
1301 | - CoverRow { |
1302 | + height: albumArtist.visible ? units.gu(33) : units.gu(30) |
1303 | + |
1304 | + BlurredBackground { |
1305 | + id: blurredBackground |
1306 | + height: parent.height |
1307 | + art: albumImage.source |
1308 | + } |
1309 | + |
1310 | + Image { |
1311 | id: albumImage |
1312 | anchors { |
1313 | top: parent.top |
1314 | left: parent.left |
1315 | - margins: units.gu(1) |
1316 | + topMargin: units.gu(3) |
1317 | + bottomMargin: units.gu(2) |
1318 | + leftMargin: units.gu(2) |
1319 | + rightMargin: units.gu(2) |
1320 | } |
1321 | - count: songStackPage.covers.length |
1322 | - size: units.gu(20) |
1323 | - covers: songStackPage.covers |
1324 | - spacing: units.gu(2) |
1325 | + width: units.gu(18) |
1326 | + height: width |
1327 | + smooth: true |
1328 | + source: covers.length > 0 |
1329 | + ? (covers[0].art !== undefined |
1330 | + ? covers[0].art |
1331 | + : decodeURIComponent("image://albumart/artist=" + covers[0].author + "&album=" + covers[0].album)) |
1332 | + : Qt.resolvedUrl("../images/music-app-cover@30.png") |
1333 | } |
1334 | |
1335 | Label { |
1336 | - id: albumArtist |
1337 | - objectName: "songsPageHeaderAlbumArtist" |
1338 | - wrapMode: Text.NoWrap |
1339 | - maximumLineCount: 1 |
1340 | - fontSize: "small" |
1341 | - color: styleMusic.common.subtitle |
1342 | - anchors.left: albumImage.right |
1343 | - anchors.leftMargin: units.gu(1) |
1344 | - anchors.top: parent.top |
1345 | - anchors.topMargin: units.gu(1.5) |
1346 | - anchors.right: parent.right |
1347 | - anchors.rightMargin: units.gu(1.5) |
1348 | - elide: Text.ElideRight |
1349 | - text: line1 |
1350 | - } |
1351 | - Label { |
1352 | id: albumLabel |
1353 | wrapMode: Text.NoWrap |
1354 | maximumLineCount: 2 |
1355 | - fontSize: "medium" |
1356 | + fontSize: "x-large" |
1357 | color: styleMusic.common.music |
1358 | - anchors.left: albumImage.right |
1359 | - anchors.leftMargin: units.gu(1) |
1360 | - anchors.top: albumArtist.bottom |
1361 | - anchors.topMargin: units.gu(0.8) |
1362 | - anchors.right: parent.right |
1363 | - anchors.rightMargin: units.gu(1.5) |
1364 | + anchors { |
1365 | + top: albumImage.bottom |
1366 | + topMargin: units.gu(1) |
1367 | + left: albumImage.left |
1368 | + } |
1369 | elide: Text.ElideRight |
1370 | text: line2 |
1371 | } |
1372 | + |
1373 | + Label { |
1374 | + id: albumArtist |
1375 | + objectName: "songsPageHeaderAlbumArtist" |
1376 | + wrapMode: Text.NoWrap |
1377 | + maximumLineCount: 1 |
1378 | + fontSize: "small" |
1379 | + color: styleMusic.common.subtitle |
1380 | + visible: text !== i18n.tr("Playlist") && |
1381 | + text !== i18n.tr("Genre") |
1382 | + anchors { |
1383 | + top: albumLabel.bottom |
1384 | + topMargin: units.gu(0.75) |
1385 | + left: albumImage.left |
1386 | + } |
1387 | + elide: Text.ElideRight |
1388 | + text: line1 |
1389 | + } |
1390 | + |
1391 | Label { |
1392 | id: albumYear |
1393 | wrapMode: Text.NoWrap |
1394 | maximumLineCount: 1 |
1395 | - fontSize: "x-small" |
1396 | + fontSize: "small" |
1397 | color: styleMusic.common.subtitle |
1398 | - anchors.left: albumImage.right |
1399 | - anchors.leftMargin: units.gu(1) |
1400 | - anchors.top: albumLabel.bottom |
1401 | - anchors.topMargin: units.gu(2) |
1402 | - anchors.right: parent.right |
1403 | - anchors.rightMargin: units.gu(1.5) |
1404 | + anchors { |
1405 | + top: albumArtist.visible ? albumArtist.bottom |
1406 | + : albumLabel.bottom |
1407 | + topMargin: units.gu(1) |
1408 | + left: albumImage.left |
1409 | + } |
1410 | elide: Text.ElideRight |
1411 | text: isAlbum && line1 !== i18n.tr("Genre") ? year + " | " + i18n.tr("%1 song", "%1 songs", albumtrackslist.count).arg(albumtrackslist.count) |
1412 | : i18n.tr("%1 song", "%1 songs", albumtrackslist.count).arg(albumtrackslist.count) |
1413 | |
1414 | } |
1415 | |
1416 | + // Shuffle |
1417 | + Button { |
1418 | + id: shuffleRow |
1419 | + anchors { |
1420 | + bottom: queueAllRow.top |
1421 | + bottomMargin: units.gu(2) |
1422 | + left: albumImage.right |
1423 | + leftMargin: units.gu(2) |
1424 | + } |
1425 | + strokeColor: UbuntuColors.green |
1426 | + height: units.gu(4) |
1427 | + width: units.gu(15) |
1428 | + Text { |
1429 | + anchors { |
1430 | + centerIn: parent |
1431 | + } |
1432 | + color: "white" |
1433 | + text: i18n.tr("Shuffle") |
1434 | + } |
1435 | + MouseArea { |
1436 | + anchors.fill: parent |
1437 | + onClicked: { |
1438 | + shuffleModel(albumtrackslist.model) // play track |
1439 | + |
1440 | + if (isAlbum && songStackPage.line1 !== i18n.tr("Genre")) { |
1441 | + Library.addRecent(songStackPage.line2, songStackPage.line1, songStackPage.covers[0], songStackPage.line2, "album") |
1442 | + mainView.hasRecent = true |
1443 | + recentModel.filterRecent() |
1444 | + } else if (songStackPage.line1 === i18n.tr("Playlist")) { |
1445 | + Library.addRecent(songStackPage.line2, "Playlist", songStackPage.covers[0], songStackPage.line2, "playlist") |
1446 | + mainView.hasRecent = true |
1447 | + recentModel.filterRecent() |
1448 | + } |
1449 | + } |
1450 | + } |
1451 | + } |
1452 | + |
1453 | + // Queue |
1454 | + Button { |
1455 | + id: queueAllRow |
1456 | + anchors { |
1457 | + bottom: playRow.top |
1458 | + bottomMargin: units.gu(2) |
1459 | + left: albumImage.right |
1460 | + leftMargin: units.gu(2) |
1461 | + } |
1462 | + strokeColor: UbuntuColors.green |
1463 | + height: units.gu(4) |
1464 | + width: units.gu(15) |
1465 | + Text { |
1466 | + anchors { |
1467 | + centerIn: parent |
1468 | + } |
1469 | + color: "white" |
1470 | + text: i18n.tr("Queue all") |
1471 | + } |
1472 | + MouseArea { |
1473 | + anchors.fill: parent |
1474 | + onClicked: { |
1475 | + addQueueFromModel(albumtrackslist.model) |
1476 | + } |
1477 | + } |
1478 | + } |
1479 | + |
1480 | // Play |
1481 | - Rectangle { |
1482 | + Button { |
1483 | id: playRow |
1484 | - anchors.top: albumYear.bottom |
1485 | - anchors.topMargin: units.gu(1) |
1486 | - anchors.left: albumImage.right |
1487 | - anchors.leftMargin: units.gu(1) |
1488 | - color: "transparent" |
1489 | + anchors { |
1490 | + bottom: albumImage.bottom |
1491 | + left: albumImage.right |
1492 | + leftMargin: units.gu(2) |
1493 | + } |
1494 | + color: UbuntuColors.green |
1495 | height: units.gu(4) |
1496 | width: units.gu(15) |
1497 | - Icon { |
1498 | - id: playTrack |
1499 | - objectName: "songspage-playtrack" |
1500 | - anchors.verticalCenter: parent.verticalCenter |
1501 | - name: "media-playback-start" |
1502 | - height: styleMusic.common.expandedItem |
1503 | - width: styleMusic.common.expandedItem |
1504 | - } |
1505 | - Label { |
1506 | - anchors.left: playTrack.right |
1507 | - anchors.leftMargin: units.gu(0.5) |
1508 | - anchors.verticalCenter: parent.verticalCenter |
1509 | - fontSize: "small" |
1510 | - color: styleMusic.common.subtitle |
1511 | - width: parent.width - playTrack.width - units.gu(1) |
1512 | - text: i18n.tr("Play all") |
1513 | - wrapMode: Text.WordWrap |
1514 | - maximumLineCount: 3 |
1515 | - } |
1516 | + text: i18n.tr("Play all") |
1517 | MouseArea { |
1518 | anchors.fill: parent |
1519 | onClicked: { |
1520 | @@ -171,43 +231,6 @@ |
1521 | } |
1522 | } |
1523 | } |
1524 | - |
1525 | - // Queue |
1526 | - Rectangle { |
1527 | - id: queueAllRow |
1528 | - anchors.top: playRow.bottom |
1529 | - anchors.topMargin: units.gu(1) |
1530 | - anchors.left: albumImage.right |
1531 | - anchors.leftMargin: units.gu(1) |
1532 | - color: "transparent" |
1533 | - height: units.gu(4) |
1534 | - width: units.gu(15) |
1535 | - Icon { |
1536 | - id: queueAll |
1537 | - objectName: "songspage-queue-all" |
1538 | - anchors.verticalCenter: parent.verticalCenter |
1539 | - name: "add" |
1540 | - height: styleMusic.common.expandedItem |
1541 | - width: styleMusic.common.expandedItem |
1542 | - } |
1543 | - Label { |
1544 | - anchors.left: queueAll.right |
1545 | - anchors.leftMargin: units.gu(0.5) |
1546 | - anchors.verticalCenter: parent.verticalCenter |
1547 | - fontSize: "small" |
1548 | - color: styleMusic.common.subtitle |
1549 | - width: parent.width - queueAll.width - units.gu(1) |
1550 | - text: i18n.tr("Add to queue") |
1551 | - wrapMode: Text.WordWrap |
1552 | - maximumLineCount: 3 |
1553 | - } |
1554 | - MouseArea { |
1555 | - anchors.fill: parent |
1556 | - onClicked: { |
1557 | - addQueueFromModel(albumtrackslist.model) |
1558 | - } |
1559 | - } |
1560 | - } |
1561 | } |
1562 | |
1563 | Component { |
1564 | @@ -219,7 +242,8 @@ |
1565 | objectName: "songsPageListItem" + index |
1566 | iconFrame: false |
1567 | progression: false |
1568 | - height: styleMusic.common.itemHeight |
1569 | + showDivider: false |
1570 | + height: units.gu(6) |
1571 | |
1572 | leftSideAction: songStackPage.line1 === i18n.tr("Playlist") |
1573 | ? playlistRemoveAction.item : null |
1574 | @@ -272,30 +296,23 @@ |
1575 | |
1576 | MusicRow { |
1577 | id: musicRow |
1578 | - covers: model.art !== undefined ? [{art: model.art}] : [{author: model.author, album: model.album}] |
1579 | + covers: [] |
1580 | + showCovers: false |
1581 | column: Column { |
1582 | - spacing: units.gu(1) |
1583 | + Label { |
1584 | + id: trackTitle |
1585 | + color: styleMusic.common.music |
1586 | + fontSize: "small" |
1587 | + objectName: "songspage-tracktitle" |
1588 | + text: model.title |
1589 | + } |
1590 | + |
1591 | Label { |
1592 | id: trackArtist |
1593 | color: styleMusic.common.subtitle |
1594 | fontSize: "x-small" |
1595 | text: model.author |
1596 | } |
1597 | - |
1598 | - Label { |
1599 | - id: trackTitle |
1600 | - color: styleMusic.common.subtitle |
1601 | - fontSize: "medium" |
1602 | - objectName: "songspage-tracktitle" |
1603 | - text: model.title |
1604 | - } |
1605 | - |
1606 | - Label { |
1607 | - id: trackAlbum |
1608 | - color: styleMusic.common.subtitle |
1609 | - fontSize: "xx-small" |
1610 | - text: model.album |
1611 | - } |
1612 | } |
1613 | } |
1614 | |
1615 | |
1616 | === modified file 'music-app.qml' |
1617 | --- music-app.qml 2014-09-23 15:59:28 +0000 |
1618 | +++ music-app.qml 2014-10-04 17:07:09 +0000 |
1619 | @@ -40,18 +40,13 @@ |
1620 | id: mainView |
1621 | useDeprecatedToolbar: false |
1622 | |
1623 | - // Use toolbar color for header |
1624 | - headerColor: styleMusic.toolbar.fullBackgroundColor |
1625 | - backgroundColor: styleMusic.toolbar.fullBackgroundColor |
1626 | + backgroundColor: "#1e1e23" |
1627 | + headerColor: "#1e1e23" |
1628 | |
1629 | // Global keyboard shortcuts |
1630 | focus: true |
1631 | Keys.onPressed: { |
1632 | - if (event.key === Qt.Key_Alt) { |
1633 | - // On alt key press show toolbar and start autohide timer |
1634 | - musicToolbar.showToolbar(); |
1635 | - } |
1636 | - else if(event.key === Qt.Key_Escape) { |
1637 | + if(event.key === Qt.Key_Escape) { |
1638 | musicToolbar.goBack(); // Esc Go back |
1639 | } |
1640 | else if(event.modifiers === Qt.AltModifier) { |
1641 | @@ -96,11 +91,9 @@ |
1642 | case Qt.Key_J: // Ctrl+J Jump to playing song |
1643 | nowPlaying.visible = true; |
1644 | nowPlaying.positionAt(player.currentIndex); |
1645 | - musicToolbar.showToolbar(); |
1646 | break; |
1647 | case Qt.Key_N: // Ctrl+N Show now playing |
1648 | nowPlaying.visible = true; |
1649 | - musicToolbar.showToolbar(); |
1650 | break; |
1651 | case Qt.Key_P: // Ctrl+P Toggle playing state |
1652 | player.toggle(); |
1653 | @@ -577,12 +570,6 @@ |
1654 | if (args.values.url) { |
1655 | uriHandler.process(args.values.url, true); |
1656 | } |
1657 | - |
1658 | - // Show toolbar and start timer if there is music |
1659 | - if (!emptyPage.noMusic) { |
1660 | - musicToolbar.showToolbar(); |
1661 | - musicToolbar.startAutohideTimer(); |
1662 | - } |
1663 | } |
1664 | |
1665 | // VARIABLES |
1666 | @@ -598,7 +585,6 @@ |
1667 | property bool selectedAlbum: false |
1668 | |
1669 | signal listItemSwiping(int i) |
1670 | - signal onToolbarShownChanged(bool shown, var currentPage, var currentTab) |
1671 | |
1672 | property bool wideAspect: width >= units.gu(70) && loadedUI |
1673 | property bool loadedUI: false // property to detect if the UI has finished |
1674 | @@ -680,8 +666,6 @@ |
1675 | // Show the Now Playing page and make sure the track is visible |
1676 | tabs.pushNowPlaying(); |
1677 | nowPlaying.ensureVisibleIndex = index; |
1678 | - |
1679 | - musicToolbar.showToolbar(); |
1680 | } |
1681 | else { |
1682 | player.source = file; |
1683 | @@ -699,8 +683,6 @@ |
1684 | // Show the Now Playing page and make sure the track is visible |
1685 | tabs.pushNowPlaying(); |
1686 | nowPlaying.ensureVisibleIndex = index; |
1687 | - |
1688 | - musicToolbar.showToolbar(); |
1689 | } |
1690 | |
1691 | function playRandomSong(shuffle) |
1692 | @@ -716,6 +698,17 @@ |
1693 | trackClicked(allSongsModel, index, true) |
1694 | } |
1695 | |
1696 | + function shuffleModel(model) |
1697 | + { |
1698 | + var now = new Date(); |
1699 | + var seed = now.getSeconds(); |
1700 | + var index = Math.floor(model.count * Math.random(seed)); |
1701 | + |
1702 | + player.shuffle = true; |
1703 | + |
1704 | + trackClicked(model, index, true) |
1705 | + } |
1706 | + |
1707 | // Load mediascanner store |
1708 | MediaStore { |
1709 | id: musicStore |
1710 | @@ -867,10 +860,6 @@ |
1711 | id: searchSheet |
1712 | } |
1713 | |
1714 | - // Blurred background |
1715 | - BlurredBackground { |
1716 | - } |
1717 | - |
1718 | // Popover for tracks, queue and add to playlist, for example |
1719 | Component { |
1720 | id: trackPopoverComponent |
1721 | @@ -973,6 +962,7 @@ |
1722 | |
1723 | MusicToolbar { |
1724 | id: musicToolbar |
1725 | + visible: nowPlaying.isListView || !nowPlaying.visible |
1726 | objectName: "musicToolbarObject" |
1727 | z: 200 // put on top of everything else |
1728 | } |
1729 | |
1730 | === modified file 'po/com.ubuntu.music.pot' |
1731 | --- po/com.ubuntu.music.pot 2014-09-23 12:44:36 +0000 |
1732 | +++ po/com.ubuntu.music.pot 2014-10-04 17:07:09 +0000 |
1733 | @@ -8,7 +8,7 @@ |
1734 | msgstr "" |
1735 | "Project-Id-Version: music-app\n" |
1736 | "Report-Msgid-Bugs-To: \n" |
1737 | -"POT-Creation-Date: 2014-09-23 13:43+0100\n" |
1738 | +"POT-Creation-Date: 2014-10-02 20:40-0500\n" |
1739 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
1740 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
1741 | "Language-Team: LANGUAGE <LL@li.org>\n" |
1742 | @@ -76,7 +76,7 @@ |
1743 | |
1744 | #: ../MusicArtists.qml:113 ../MusicPlaylists.qml:180 ../MusicStart.qml:371 |
1745 | #: ../MusicaddtoPlaylist.qml:106 ../common/AlbumsPage.qml:331 |
1746 | -#: ../common/SongsPage.qml:123 ../common/SongsPage.qml:124 |
1747 | +#: ../common/SongsPage.qml:138 ../common/SongsPage.qml:139 |
1748 | #, qt-format |
1749 | msgid "%1 song" |
1750 | msgid_plural "%1 songs" |
1751 | @@ -114,31 +114,32 @@ |
1752 | msgid "Change" |
1753 | msgstr "" |
1754 | |
1755 | -#: ../MusicPlaylists.qml:96 ../music-app.qml:956 |
1756 | +#: ../MusicPlaylists.qml:96 ../music-app.qml:962 |
1757 | msgid "Playlist already exists" |
1758 | msgstr "" |
1759 | |
1760 | -#: ../MusicPlaylists.qml:100 ../music-app.qml:961 |
1761 | +#: ../MusicPlaylists.qml:100 ../music-app.qml:967 |
1762 | msgid "Please type in a name." |
1763 | msgstr "" |
1764 | |
1765 | -#: ../MusicPlaylists.qml:105 ../music-app.qml:493 ../music-app.qml:967 |
1766 | +#: ../MusicPlaylists.qml:105 ../music-app.qml:492 ../music-app.qml:973 |
1767 | msgid "Cancel" |
1768 | msgstr "" |
1769 | |
1770 | #: ../MusicPlaylists.qml:159 ../MusicPlaylists.qml:163 ../MusicStart.qml:118 |
1771 | -#: ../MusicStart.qml:200 ../common/SongsPage.qml:166 |
1772 | -#: ../common/SongsPage.qml:224 ../common/SongsPage.qml:226 |
1773 | -#: ../common/SongsPage.qml:244 |
1774 | +#: ../MusicStart.qml:200 ../common/SongsPage.qml:114 |
1775 | +#: ../common/SongsPage.qml:171 ../common/SongsPage.qml:228 |
1776 | +#: ../common/SongsPage.qml:250 ../common/SongsPage.qml:252 |
1777 | +#: ../common/SongsPage.qml:270 |
1778 | msgid "Playlist" |
1779 | msgstr "" |
1780 | |
1781 | -#: ../MusicSearch.qml:44 ../MusicSearch.qml:75 ../MusicToolbar.qml:519 |
1782 | -#: ../music-app.qml:93 ../music-app.qml:141 ../music-app.qml:147 |
1783 | +#: ../MusicSearch.qml:44 ../MusicSearch.qml:75 ../MusicToolbar.qml:522 |
1784 | +#: ../music-app.qml:92 ../music-app.qml:140 ../music-app.qml:146 |
1785 | msgid "Search" |
1786 | msgstr "" |
1787 | |
1788 | -#: ../MusicSettings.qml:30 ../music-app.qml:191 |
1789 | +#: ../MusicSettings.qml:30 ../music-app.qml:190 |
1790 | msgid "Settings" |
1791 | msgstr "" |
1792 | |
1793 | @@ -224,7 +225,7 @@ |
1794 | msgid "Clean everything!" |
1795 | msgstr "" |
1796 | |
1797 | -#: ../MusicStart.qml:35 ../music-app.qml:589 ../music-app.qml:1150 |
1798 | +#: ../MusicStart.qml:35 ../music-app.qml:588 ../music-app.qml:1156 |
1799 | #: com.ubuntu.music_music.desktop.in.in.h:1 |
1800 | msgid "Music" |
1801 | msgstr "" |
1802 | @@ -241,13 +242,14 @@ |
1803 | msgid "Genres" |
1804 | msgstr "" |
1805 | |
1806 | -#: ../MusicStart.qml:316 ../MusicStart.qml:318 ../common/SongsPage.qml:123 |
1807 | -#: ../common/SongsPage.qml:162 ../common/SongsPage.qml:240 |
1808 | +#: ../MusicStart.qml:316 ../MusicStart.qml:318 ../common/SongsPage.qml:115 |
1809 | +#: ../common/SongsPage.qml:138 ../common/SongsPage.qml:167 |
1810 | +#: ../common/SongsPage.qml:224 ../common/SongsPage.qml:266 |
1811 | msgid "Genre" |
1812 | msgstr "" |
1813 | |
1814 | -#: ../MusicToolbar.qml:760 |
1815 | -msgid "Tap play to shuffle music" |
1816 | +#: ../MusicToolbar.qml:767 |
1817 | +msgid "Tap to shuffle music" |
1818 | msgstr "" |
1819 | |
1820 | #: ../MusicTracks.qml:35 |
1821 | @@ -259,16 +261,16 @@ |
1822 | msgstr "" |
1823 | |
1824 | #: ../common/AlbumsPage.qml:167 ../common/AlbumsPage.qml:360 |
1825 | -#: ../common/SongsPage.qml:153 |
1826 | +#: ../common/SongsPage.qml:218 |
1827 | msgid "Play all" |
1828 | msgstr "" |
1829 | |
1830 | #: ../common/AlbumsPage.qml:211 ../common/AlbumsPage.qml:400 |
1831 | -#: ../common/SongsPage.qml:200 ../music-app.qml:888 |
1832 | +#: ../music-app.qml:894 |
1833 | msgid "Add to queue" |
1834 | msgstr "" |
1835 | |
1836 | -#: ../common/ListItemActions/AddToPlaylist.qml:25 ../music-app.qml:902 |
1837 | +#: ../common/ListItemActions/AddToPlaylist.qml:25 ../music-app.qml:908 |
1838 | msgid "Add to playlist" |
1839 | msgstr "" |
1840 | |
1841 | @@ -294,6 +296,14 @@ |
1842 | msgid "Loading..." |
1843 | msgstr "" |
1844 | |
1845 | +#: ../common/SongsPage.qml:160 |
1846 | +msgid "Shuffle" |
1847 | +msgstr "" |
1848 | + |
1849 | +#: ../common/SongsPage.qml:197 |
1850 | +msgid "Queue all" |
1851 | +msgstr "" |
1852 | + |
1853 | #: ../common/SwipeDelete.qml:52 ../common/SwipeDelete.qml:88 |
1854 | msgid "Clear" |
1855 | msgstr "" |
1856 | @@ -306,127 +316,127 @@ |
1857 | msgid "Unknown Artist" |
1858 | msgstr "" |
1859 | |
1860 | -#: ../music-app.qml:142 |
1861 | +#: ../music-app.qml:141 |
1862 | msgid "Search Track" |
1863 | msgstr "" |
1864 | |
1865 | +#: ../music-app.qml:153 |
1866 | +msgid "Next" |
1867 | +msgstr "" |
1868 | + |
1869 | #: ../music-app.qml:154 |
1870 | -msgid "Next" |
1871 | -msgstr "" |
1872 | - |
1873 | -#: ../music-app.qml:155 |
1874 | msgid "Next Track" |
1875 | msgstr "" |
1876 | |
1877 | -#: ../music-app.qml:161 |
1878 | +#: ../music-app.qml:160 |
1879 | msgid "Pause" |
1880 | msgstr "" |
1881 | |
1882 | -#: ../music-app.qml:161 |
1883 | +#: ../music-app.qml:160 |
1884 | msgid "Play" |
1885 | msgstr "" |
1886 | |
1887 | -#: ../music-app.qml:163 |
1888 | +#: ../music-app.qml:162 |
1889 | msgid "Pause Playback" |
1890 | msgstr "" |
1891 | |
1892 | -#: ../music-app.qml:163 |
1893 | +#: ../music-app.qml:162 |
1894 | msgid "Continue or start playback" |
1895 | msgstr "" |
1896 | |
1897 | +#: ../music-app.qml:167 |
1898 | +msgid "Back" |
1899 | +msgstr "" |
1900 | + |
1901 | #: ../music-app.qml:168 |
1902 | -msgid "Back" |
1903 | -msgstr "" |
1904 | - |
1905 | -#: ../music-app.qml:169 |
1906 | msgid "Go back to last page" |
1907 | msgstr "" |
1908 | |
1909 | +#: ../music-app.qml:176 |
1910 | +msgid "Previous" |
1911 | +msgstr "" |
1912 | + |
1913 | #: ../music-app.qml:177 |
1914 | -msgid "Previous" |
1915 | -msgstr "" |
1916 | - |
1917 | -#: ../music-app.qml:178 |
1918 | msgid "Previous Track" |
1919 | msgstr "" |
1920 | |
1921 | +#: ../music-app.qml:182 |
1922 | +msgid "Stop" |
1923 | +msgstr "" |
1924 | + |
1925 | #: ../music-app.qml:183 |
1926 | -msgid "Stop" |
1927 | -msgstr "" |
1928 | - |
1929 | -#: ../music-app.qml:184 |
1930 | msgid "Stop Playback" |
1931 | msgstr "" |
1932 | |
1933 | -#: ../music-app.qml:192 |
1934 | +#: ../music-app.qml:191 |
1935 | msgid "Music Settings" |
1936 | msgstr "" |
1937 | |
1938 | #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ |
1939 | -#: ../music-app.qml:338 |
1940 | +#: ../music-app.qml:337 |
1941 | msgid "Filepath must start with" |
1942 | msgstr "" |
1943 | |
1944 | #. TRANSLATORS: This string represents that a blank filepath destination has been used |
1945 | -#: ../music-app.qml:364 |
1946 | +#: ../music-app.qml:363 |
1947 | msgid "Filepath must be a file" |
1948 | msgstr "" |
1949 | |
1950 | #. TRANSLATORS: This string represents that there was failure moving the file to the target destination |
1951 | -#: ../music-app.qml:370 |
1952 | +#: ../music-app.qml:369 |
1953 | msgid "Failed to move file" |
1954 | msgstr "" |
1955 | |
1956 | -#: ../music-app.qml:447 |
1957 | +#: ../music-app.qml:446 |
1958 | msgid "Waiting for file(s)..." |
1959 | msgstr "" |
1960 | |
1961 | -#: ../music-app.qml:466 |
1962 | +#: ../music-app.qml:465 |
1963 | msgid "OK" |
1964 | msgstr "" |
1965 | |
1966 | -#: ../music-app.qml:479 |
1967 | +#: ../music-app.qml:478 |
1968 | msgid "Imported file not found" |
1969 | msgstr "" |
1970 | |
1971 | -#: ../music-app.qml:483 |
1972 | +#: ../music-app.qml:482 |
1973 | msgid "Wait" |
1974 | msgstr "" |
1975 | |
1976 | #. 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) |
1977 | +#: ../music-app.qml:503 |
1978 | +msgid "songs played today" |
1979 | +msgstr "" |
1980 | + |
1981 | #: ../music-app.qml:504 |
1982 | -msgid "songs played today" |
1983 | -msgstr "" |
1984 | - |
1985 | -#: ../music-app.qml:505 |
1986 | msgid "No songs played today" |
1987 | msgstr "" |
1988 | |
1989 | -#: ../music-app.qml:613 |
1990 | +#: ../music-app.qml:612 |
1991 | msgid "Debug: " |
1992 | msgstr "" |
1993 | |
1994 | -#: ../music-app.qml:925 |
1995 | +#: ../music-app.qml:931 |
1996 | msgid "New Playlist" |
1997 | msgstr "" |
1998 | |
1999 | -#: ../music-app.qml:926 |
2000 | +#: ../music-app.qml:932 |
2001 | msgid "Name your playlist." |
2002 | msgstr "" |
2003 | |
2004 | -#: ../music-app.qml:930 |
2005 | +#: ../music-app.qml:936 |
2006 | msgid "Name" |
2007 | msgstr "" |
2008 | |
2009 | -#: ../music-app.qml:940 |
2010 | +#: ../music-app.qml:946 |
2011 | msgid "Create" |
2012 | msgstr "" |
2013 | |
2014 | -#: ../music-app.qml:1176 |
2015 | +#: ../music-app.qml:1182 |
2016 | msgid "No music found" |
2017 | msgstr "" |
2018 | |
2019 | -#: ../music-app.qml:1183 |
2020 | +#: ../music-app.qml:1189 |
2021 | msgid "Please import music" |
2022 | msgstr "" |
2023 | |
2024 | |
2025 | === modified file 'po/pt_BR.po' |
2026 | --- po/pt_BR.po 2014-10-01 06:25:24 +0000 |
2027 | +++ po/pt_BR.po 2014-10-04 17:07:09 +0000 |
2028 | @@ -1,78 +1,88 @@ |
2029 | # Brazilian Portuguese translation for music-app |
2030 | -# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 |
2031 | +# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 |
2032 | # This file is distributed under the same license as the music-app package. |
2033 | -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. |
2034 | +# FIRST AUTHOR <EMAIL@ADDRESS>, 2014. |
2035 | # |
2036 | msgid "" |
2037 | msgstr "" |
2038 | "Project-Id-Version: music-app\n" |
2039 | "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2040 | +<<<<<<< TREE |
2041 | "POT-Creation-Date: 2014-09-23 13:43+0100\n" |
2042 | "PO-Revision-Date: 2014-09-30 17:34+0000\n" |
2043 | "Last-Translator: Rafael Neri <Unknown>\n" |
2044 | +======= |
2045 | +"POT-Creation-Date: 2014-09-30 15:08+0100\n" |
2046 | +"PO-Revision-Date: 2014-09-30 18:07+0000\n" |
2047 | +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
2048 | +>>>>>>> MERGE-SOURCE |
2049 | "Language-Team: Brazilian Portuguese <pt_BR@li.org>\n" |
2050 | "MIME-Version: 1.0\n" |
2051 | "Content-Type: text/plain; charset=UTF-8\n" |
2052 | "Content-Transfer-Encoding: 8bit\n" |
2053 | "Plural-Forms: nplurals=2; plural=n > 1;\n" |
2054 | +<<<<<<< TREE |
2055 | "X-Launchpad-Export-Date: 2014-10-01 06:25+0000\n" |
2056 | +======= |
2057 | +"X-Launchpad-Export-Date: 2014-10-03 06:28+0000\n" |
2058 | +>>>>>>> MERGE-SOURCE |
2059 | "X-Generator: Launchpad (build 17196)\n" |
2060 | |
2061 | #: ../LoginLastFM.qml:48 ../MusicSettings.qml:145 ../MusicSettings.qml:153 |
2062 | msgid "Last.fm" |
2063 | -msgstr "Last.fm" |
2064 | +msgstr "" |
2065 | |
2066 | #: ../LoginLastFM.qml:54 |
2067 | msgid "Login to be able to scrobble." |
2068 | -msgstr "Faça login para habilitar o scrobble." |
2069 | +msgstr "" |
2070 | |
2071 | #: ../LoginLastFM.qml:62 |
2072 | msgid "Username" |
2073 | -msgstr "Usuário" |
2074 | +msgstr "" |
2075 | |
2076 | #: ../LoginLastFM.qml:72 |
2077 | msgid "Password" |
2078 | -msgstr "Senha" |
2079 | +msgstr "" |
2080 | |
2081 | #: ../LoginLastFM.qml:94 |
2082 | msgid "Login" |
2083 | -msgstr "Login" |
2084 | +msgstr "" |
2085 | |
2086 | #: ../LoginLastFM.qml:101 |
2087 | msgid "Trying to login..." |
2088 | -msgstr "Tentando entrar..." |
2089 | +msgstr "" |
2090 | |
2091 | #: ../LoginLastFM.qml:115 |
2092 | msgid "Login Successful" |
2093 | -msgstr "Login realizado com sucesso" |
2094 | +msgstr "" |
2095 | |
2096 | #: ../LoginLastFM.qml:121 |
2097 | msgid "Login Failed" |
2098 | -msgstr "Falha no login" |
2099 | +msgstr "" |
2100 | |
2101 | #: ../LoginLastFM.qml:127 |
2102 | msgid "You forgot to set your username and/or password" |
2103 | -msgstr "Você esqueceu de definir seu usuário e/ou senha" |
2104 | +msgstr "" |
2105 | |
2106 | #: ../MusicAlbums.qml:35 ../MusicStart.qml:392 |
2107 | msgid "Albums" |
2108 | -msgstr "Álbuns" |
2109 | +msgstr "" |
2110 | |
2111 | #: ../MusicAlbums.qml:152 ../MusicStart.qml:200 ../MusicStart.qml:454 |
2112 | #: ../common/AlbumsPage.qml:264 |
2113 | msgid "Album" |
2114 | -msgstr "Álbum" |
2115 | +msgstr "" |
2116 | |
2117 | #: ../MusicArtists.qml:37 |
2118 | msgid "Artists" |
2119 | -msgstr "Artistas" |
2120 | +msgstr "" |
2121 | |
2122 | #: ../MusicArtists.qml:107 ../common/AlbumsPage.qml:112 |
2123 | #, qt-format |
2124 | msgid "%1 album" |
2125 | msgid_plural "%1 albums" |
2126 | -msgstr[0] "%1 álbum" |
2127 | -msgstr[1] "%1 álbuns" |
2128 | +msgstr[0] "" |
2129 | +msgstr[1] "" |
2130 | |
2131 | #: ../MusicArtists.qml:113 ../MusicPlaylists.qml:180 ../MusicStart.qml:371 |
2132 | #: ../MusicaddtoPlaylist.qml:106 ../common/AlbumsPage.qml:331 |
2133 | @@ -80,362 +90,360 @@ |
2134 | #, qt-format |
2135 | msgid "%1 song" |
2136 | msgid_plural "%1 songs" |
2137 | -msgstr[0] "%1 música" |
2138 | -msgstr[1] "%1 músicas" |
2139 | +msgstr[0] "" |
2140 | +msgstr[1] "" |
2141 | |
2142 | #: ../MusicArtists.qml:123 |
2143 | msgid "Artist" |
2144 | -msgstr "Artista" |
2145 | +msgstr "" |
2146 | |
2147 | #: ../MusicNowPlaying.qml:33 |
2148 | msgid "Now Playing" |
2149 | -msgstr "Reproduzindo agora" |
2150 | +msgstr "" |
2151 | |
2152 | #. TRANSLATORS: this is the name of the playlists page shown in the tab header. |
2153 | #. Remember to keep the translation short to fit the screen width |
2154 | #: ../MusicPlaylists.qml:38 |
2155 | msgid "Playlists" |
2156 | -msgstr "Listas de reprodução" |
2157 | +msgstr "" |
2158 | |
2159 | #: ../MusicPlaylists.qml:48 ../MusicaddtoPlaylist.qml:48 |
2160 | msgid "New playlist" |
2161 | -msgstr "Nova lista de reprodução" |
2162 | +msgstr "" |
2163 | |
2164 | #. TRANSLATORS: this is a title of a dialog with a prompt to rename a playlist |
2165 | #: ../MusicPlaylists.qml:64 |
2166 | msgid "Change name" |
2167 | -msgstr "Alterar nome" |
2168 | +msgstr "" |
2169 | |
2170 | #: ../MusicPlaylists.qml:65 |
2171 | msgid "Enter the new name of the playlist." |
2172 | -msgstr "Inserir o novo nome da lista de reprodução." |
2173 | +msgstr "" |
2174 | |
2175 | #: ../MusicPlaylists.qml:78 |
2176 | msgid "Change" |
2177 | -msgstr "Alterar" |
2178 | +msgstr "" |
2179 | |
2180 | -#: ../MusicPlaylists.qml:96 ../music-app.qml:956 |
2181 | +#: ../MusicPlaylists.qml:96 ../music-app.qml:951 |
2182 | msgid "Playlist already exists" |
2183 | -msgstr "Lista de reprodução já existe" |
2184 | +msgstr "" |
2185 | |
2186 | -#: ../MusicPlaylists.qml:100 ../music-app.qml:961 |
2187 | +#: ../MusicPlaylists.qml:100 ../music-app.qml:956 |
2188 | msgid "Please type in a name." |
2189 | -msgstr "Por favor, informe um nome." |
2190 | +msgstr "" |
2191 | |
2192 | -#: ../MusicPlaylists.qml:105 ../music-app.qml:493 ../music-app.qml:967 |
2193 | +#: ../MusicPlaylists.qml:105 ../music-app.qml:492 ../music-app.qml:962 |
2194 | msgid "Cancel" |
2195 | -msgstr "Cancelar" |
2196 | +msgstr "" |
2197 | |
2198 | #: ../MusicPlaylists.qml:159 ../MusicPlaylists.qml:163 ../MusicStart.qml:118 |
2199 | #: ../MusicStart.qml:200 ../common/SongsPage.qml:166 |
2200 | #: ../common/SongsPage.qml:224 ../common/SongsPage.qml:226 |
2201 | #: ../common/SongsPage.qml:244 |
2202 | msgid "Playlist" |
2203 | -msgstr "Lista de reprodução" |
2204 | +msgstr "" |
2205 | |
2206 | -#: ../MusicSearch.qml:44 ../MusicSearch.qml:75 ../MusicToolbar.qml:519 |
2207 | -#: ../music-app.qml:93 ../music-app.qml:141 ../music-app.qml:147 |
2208 | +#: ../MusicSearch.qml:44 ../MusicSearch.qml:75 ../MusicToolbar.qml:522 |
2209 | +#: ../music-app.qml:92 ../music-app.qml:140 ../music-app.qml:146 |
2210 | msgid "Search" |
2211 | -msgstr "Pesquisar" |
2212 | +msgstr "" |
2213 | |
2214 | -#: ../MusicSettings.qml:30 ../music-app.qml:191 |
2215 | +#: ../MusicSettings.qml:30 ../music-app.qml:190 |
2216 | msgid "Settings" |
2217 | -msgstr "Configurações" |
2218 | +msgstr "" |
2219 | |
2220 | #: ../MusicSettings.qml:81 |
2221 | msgid "Equaliser" |
2222 | -msgstr "Equalizador" |
2223 | +msgstr "" |
2224 | |
2225 | #: ../MusicSettings.qml:82 |
2226 | msgid "Default" |
2227 | -msgstr "Padrão" |
2228 | +msgstr "" |
2229 | |
2230 | #: ../MusicSettings.qml:83 |
2231 | msgid "Acoustic" |
2232 | -msgstr "Acústico" |
2233 | +msgstr "" |
2234 | |
2235 | #: ../MusicSettings.qml:84 |
2236 | msgid "Classical" |
2237 | -msgstr "Clássica" |
2238 | +msgstr "" |
2239 | |
2240 | #: ../MusicSettings.qml:85 |
2241 | msgid "Electronic" |
2242 | -msgstr "Eletrônica" |
2243 | +msgstr "" |
2244 | |
2245 | #: ../MusicSettings.qml:86 |
2246 | msgid "Flat" |
2247 | -msgstr "Flat" |
2248 | +msgstr "" |
2249 | |
2250 | #: ../MusicSettings.qml:87 |
2251 | msgid "Hip Hop" |
2252 | -msgstr "Hip Hop" |
2253 | +msgstr "" |
2254 | |
2255 | #: ../MusicSettings.qml:88 |
2256 | msgid "Jazz" |
2257 | -msgstr "Jazz" |
2258 | +msgstr "" |
2259 | |
2260 | #: ../MusicSettings.qml:89 |
2261 | msgid "Metal" |
2262 | -msgstr "Metal" |
2263 | +msgstr "" |
2264 | |
2265 | #: ../MusicSettings.qml:90 |
2266 | msgid "Pop" |
2267 | -msgstr "Pop" |
2268 | +msgstr "" |
2269 | |
2270 | #: ../MusicSettings.qml:91 |
2271 | msgid "Rock" |
2272 | -msgstr "Rock" |
2273 | +msgstr "" |
2274 | |
2275 | #: ../MusicSettings.qml:92 |
2276 | msgid "Custom" |
2277 | -msgstr "Personalizado" |
2278 | +msgstr "" |
2279 | |
2280 | #: ../MusicSettings.qml:112 |
2281 | msgid "" |
2282 | "Snap to current song \n" |
2283 | "when opening toolbar" |
2284 | msgstr "" |
2285 | -"Ajustar a música atual \n" |
2286 | -"quando abrir a barra de ferramentas" |
2287 | |
2288 | #: ../MusicSettings.qml:132 |
2289 | msgid "Accounts" |
2290 | -msgstr "Contas" |
2291 | +msgstr "" |
2292 | |
2293 | #: ../MusicSettings.qml:146 |
2294 | msgid "Login to scrobble and import playlists" |
2295 | -msgstr "Fazer login no scrobble e importar as listas de reprodução" |
2296 | +msgstr "" |
2297 | |
2298 | #: ../MusicSettings.qml:169 |
2299 | msgid "Music Streaming" |
2300 | -msgstr "Streaming de música" |
2301 | +msgstr "" |
2302 | |
2303 | #: ../MusicSettings.qml:179 |
2304 | msgid "Ubuntu One" |
2305 | -msgstr "Ubuntu One" |
2306 | +msgstr "" |
2307 | |
2308 | #: ../MusicSettings.qml:180 |
2309 | msgid "Sign in to stream your cloud music" |
2310 | -msgstr "Fazer login para transmitir suas músicas armazenadas em nuvem" |
2311 | +msgstr "" |
2312 | |
2313 | #: ../MusicSettings.qml:196 |
2314 | msgid "Stream only on Wi-Fi" |
2315 | -msgstr "Transmitir apenas através de Wi-Fi" |
2316 | +msgstr "" |
2317 | |
2318 | #: ../MusicSettings.qml:230 |
2319 | msgid "Clean everything!" |
2320 | -msgstr "Limpar tudo!" |
2321 | +msgstr "" |
2322 | |
2323 | -#: ../MusicStart.qml:35 ../music-app.qml:589 ../music-app.qml:1150 |
2324 | +#: ../MusicStart.qml:35 ../music-app.qml:588 ../music-app.qml:1145 |
2325 | #: com.ubuntu.music_music.desktop.in.in.h:1 |
2326 | msgid "Music" |
2327 | -msgstr "Música" |
2328 | +msgstr "" |
2329 | |
2330 | #: ../MusicStart.qml:75 |
2331 | msgid "Recent" |
2332 | -msgstr "Recente" |
2333 | +msgstr "" |
2334 | |
2335 | #: ../MusicStart.qml:103 |
2336 | msgid "Clear History" |
2337 | -msgstr "Limpar histórico" |
2338 | +msgstr "" |
2339 | |
2340 | #: ../MusicStart.qml:227 |
2341 | msgid "Genres" |
2342 | -msgstr "Gêneros" |
2343 | +msgstr "" |
2344 | |
2345 | #: ../MusicStart.qml:316 ../MusicStart.qml:318 ../common/SongsPage.qml:123 |
2346 | #: ../common/SongsPage.qml:162 ../common/SongsPage.qml:240 |
2347 | msgid "Genre" |
2348 | -msgstr "Gênero" |
2349 | +msgstr "" |
2350 | |
2351 | -#: ../MusicToolbar.qml:760 |
2352 | -msgid "Tap play to shuffle music" |
2353 | -msgstr "Toque em reproduzir para embaralhar músicas" |
2354 | +#: ../MusicToolbar.qml:767 |
2355 | +msgid "Tap to shuffle music" |
2356 | +msgstr "" |
2357 | |
2358 | #: ../MusicTracks.qml:35 |
2359 | msgid "Songs" |
2360 | -msgstr "Músicas" |
2361 | +msgstr "" |
2362 | |
2363 | #: ../MusicaddtoPlaylist.qml:41 |
2364 | msgid "Select playlist" |
2365 | -msgstr "Selecione uma lista de reprodução" |
2366 | +msgstr "" |
2367 | |
2368 | #: ../common/AlbumsPage.qml:167 ../common/AlbumsPage.qml:360 |
2369 | #: ../common/SongsPage.qml:153 |
2370 | msgid "Play all" |
2371 | -msgstr "Tocar tudo" |
2372 | +msgstr "" |
2373 | |
2374 | #: ../common/AlbumsPage.qml:211 ../common/AlbumsPage.qml:400 |
2375 | -#: ../common/SongsPage.qml:200 ../music-app.qml:888 |
2376 | +#: ../common/SongsPage.qml:200 ../music-app.qml:883 |
2377 | msgid "Add to queue" |
2378 | -msgstr "Adicionar à fila" |
2379 | +msgstr "" |
2380 | |
2381 | -#: ../common/ListItemActions/AddToPlaylist.qml:25 ../music-app.qml:902 |
2382 | +#: ../common/ListItemActions/AddToPlaylist.qml:25 ../music-app.qml:897 |
2383 | msgid "Add to playlist" |
2384 | -msgstr "Adicionar à lista de reprodução" |
2385 | +msgstr "" |
2386 | |
2387 | #: ../common/ListItemActions/AddToQueue.qml:25 |
2388 | msgid "Add to Queue" |
2389 | -msgstr "Adicionar à fila de reprodução" |
2390 | +msgstr "" |
2391 | |
2392 | #. TRANSLATORS: this refers to deleting a playlist |
2393 | #: ../common/ListItemActions/DeletePlaylist.qml:26 |
2394 | msgid "Delete" |
2395 | -msgstr "Apagar" |
2396 | +msgstr "" |
2397 | |
2398 | #. TRANSLATORS: this refers to editing a playlist |
2399 | #: ../common/ListItemActions/EditPlaylist.qml:26 |
2400 | msgid "Edit" |
2401 | -msgstr "Editar" |
2402 | +msgstr "" |
2403 | |
2404 | #: ../common/ListItemActions/Remove.qml:27 |
2405 | msgid "Remove" |
2406 | -msgstr "Remover" |
2407 | +msgstr "" |
2408 | |
2409 | #: ../common/LoadingSpinnerComponent.qml:47 |
2410 | msgid "Loading..." |
2411 | -msgstr "Carregando..." |
2412 | +msgstr "" |
2413 | |
2414 | #: ../common/SwipeDelete.qml:52 ../common/SwipeDelete.qml:88 |
2415 | msgid "Clear" |
2416 | -msgstr "Limpar" |
2417 | +msgstr "" |
2418 | |
2419 | #: ../meta-database.js:90 ../meta-database.js:92 |
2420 | msgid "Unknown Album" |
2421 | -msgstr "Álbum desconhecido" |
2422 | +msgstr "" |
2423 | |
2424 | #: ../meta-database.js:91 |
2425 | msgid "Unknown Artist" |
2426 | -msgstr "Artista desconhecido" |
2427 | +msgstr "" |
2428 | |
2429 | -#: ../music-app.qml:142 |
2430 | +#: ../music-app.qml:141 |
2431 | msgid "Search Track" |
2432 | -msgstr "Pesquisar faixa" |
2433 | +msgstr "" |
2434 | + |
2435 | +#: ../music-app.qml:153 |
2436 | +msgid "Next" |
2437 | +msgstr "" |
2438 | |
2439 | #: ../music-app.qml:154 |
2440 | -msgid "Next" |
2441 | -msgstr "Próximo" |
2442 | - |
2443 | -#: ../music-app.qml:155 |
2444 | msgid "Next Track" |
2445 | -msgstr "Próxima faixa" |
2446 | +msgstr "" |
2447 | |
2448 | -#: ../music-app.qml:161 |
2449 | +#: ../music-app.qml:160 |
2450 | msgid "Pause" |
2451 | -msgstr "Pausar" |
2452 | +msgstr "" |
2453 | |
2454 | -#: ../music-app.qml:161 |
2455 | +#: ../music-app.qml:160 |
2456 | msgid "Play" |
2457 | -msgstr "Tocar" |
2458 | +msgstr "" |
2459 | |
2460 | -#: ../music-app.qml:163 |
2461 | +#: ../music-app.qml:162 |
2462 | msgid "Pause Playback" |
2463 | -msgstr "Pausar Reprodução" |
2464 | +msgstr "" |
2465 | |
2466 | -#: ../music-app.qml:163 |
2467 | +#: ../music-app.qml:162 |
2468 | msgid "Continue or start playback" |
2469 | -msgstr "Continuar ou iniciar reprodução" |
2470 | +msgstr "" |
2471 | + |
2472 | +#: ../music-app.qml:167 |
2473 | +msgid "Back" |
2474 | +msgstr "" |
2475 | |
2476 | #: ../music-app.qml:168 |
2477 | -msgid "Back" |
2478 | -msgstr "Voltar" |
2479 | - |
2480 | -#: ../music-app.qml:169 |
2481 | msgid "Go back to last page" |
2482 | -msgstr "Voltar para a última página" |
2483 | +msgstr "" |
2484 | + |
2485 | +#: ../music-app.qml:176 |
2486 | +msgid "Previous" |
2487 | +msgstr "" |
2488 | |
2489 | #: ../music-app.qml:177 |
2490 | -msgid "Previous" |
2491 | -msgstr "Anterior" |
2492 | - |
2493 | -#: ../music-app.qml:178 |
2494 | msgid "Previous Track" |
2495 | -msgstr "Faixa anterior" |
2496 | +msgstr "" |
2497 | + |
2498 | +#: ../music-app.qml:182 |
2499 | +msgid "Stop" |
2500 | +msgstr "" |
2501 | |
2502 | #: ../music-app.qml:183 |
2503 | -msgid "Stop" |
2504 | -msgstr "Parar" |
2505 | - |
2506 | -#: ../music-app.qml:184 |
2507 | msgid "Stop Playback" |
2508 | -msgstr "Parar reprodução" |
2509 | +msgstr "" |
2510 | |
2511 | -#: ../music-app.qml:192 |
2512 | +#: ../music-app.qml:191 |
2513 | msgid "Music Settings" |
2514 | -msgstr "Configurações de Música" |
2515 | +msgstr "" |
2516 | |
2517 | #. TRANSLATORS: This string represents that the target destination filepath does not start with ~/Music/Imported/ |
2518 | -#: ../music-app.qml:338 |
2519 | +#: ../music-app.qml:337 |
2520 | msgid "Filepath must start with" |
2521 | msgstr "O caminho do arquivo deve começar com" |
2522 | |
2523 | #. TRANSLATORS: This string represents that a blank filepath destination has been used |
2524 | -#: ../music-app.qml:364 |
2525 | +#: ../music-app.qml:363 |
2526 | msgid "Filepath must be a file" |
2527 | -msgstr "O caminho deve ser de um arquivo" |
2528 | +msgstr "" |
2529 | |
2530 | #. TRANSLATORS: This string represents that there was failure moving the file to the target destination |
2531 | -#: ../music-app.qml:370 |
2532 | +#: ../music-app.qml:369 |
2533 | msgid "Failed to move file" |
2534 | -msgstr "Falhou ao mover arquivo" |
2535 | +msgstr "" |
2536 | |
2537 | -#: ../music-app.qml:447 |
2538 | +#: ../music-app.qml:446 |
2539 | msgid "Waiting for file(s)..." |
2540 | msgstr "Aguardando pelo(s) arquivo(s)" |
2541 | |
2542 | -#: ../music-app.qml:466 |
2543 | +#: ../music-app.qml:465 |
2544 | msgid "OK" |
2545 | -msgstr "OK" |
2546 | +msgstr "" |
2547 | |
2548 | -#: ../music-app.qml:479 |
2549 | +#: ../music-app.qml:478 |
2550 | msgid "Imported file not found" |
2551 | -msgstr "O arquivo importado não foi encontrado" |
2552 | +msgstr "" |
2553 | |
2554 | -#: ../music-app.qml:483 |
2555 | +#: ../music-app.qml:482 |
2556 | msgid "Wait" |
2557 | -msgstr "Aguardando" |
2558 | +msgstr "" |
2559 | |
2560 | #. 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) |
2561 | +#: ../music-app.qml:503 |
2562 | +msgid "songs played today" |
2563 | +msgstr "" |
2564 | + |
2565 | #: ../music-app.qml:504 |
2566 | -msgid "songs played today" |
2567 | -msgstr "músicas tocadas hoje" |
2568 | - |
2569 | -#: ../music-app.qml:505 |
2570 | msgid "No songs played today" |
2571 | -msgstr "Nenhuma música tocada hoje" |
2572 | +msgstr "" |
2573 | |
2574 | -#: ../music-app.qml:613 |
2575 | +#: ../music-app.qml:612 |
2576 | msgid "Debug: " |
2577 | -msgstr "Debug: " |
2578 | +msgstr "" |
2579 | |
2580 | -#: ../music-app.qml:925 |
2581 | +#: ../music-app.qml:920 |
2582 | msgid "New Playlist" |
2583 | -msgstr "Nova lista de reprodução" |
2584 | +msgstr "" |
2585 | |
2586 | -#: ../music-app.qml:926 |
2587 | +#: ../music-app.qml:921 |
2588 | msgid "Name your playlist." |
2589 | -msgstr "Nomear sua lista de reprodução." |
2590 | +msgstr "" |
2591 | |
2592 | -#: ../music-app.qml:930 |
2593 | +#: ../music-app.qml:925 |
2594 | msgid "Name" |
2595 | -msgstr "Nome" |
2596 | +msgstr "" |
2597 | |
2598 | -#: ../music-app.qml:940 |
2599 | +#: ../music-app.qml:935 |
2600 | msgid "Create" |
2601 | -msgstr "Criar" |
2602 | +msgstr "" |
2603 | |
2604 | -#: ../music-app.qml:1176 |
2605 | +#: ../music-app.qml:1171 |
2606 | msgid "No music found" |
2607 | -msgstr "Nenhuma música encontrada" |
2608 | +msgstr "" |
2609 | |
2610 | -#: ../music-app.qml:1183 |
2611 | +#: ../music-app.qml:1178 |
2612 | msgid "Please import music" |
2613 | -msgstr "Por favor, importar músicas" |
2614 | +msgstr "" |
2615 | |
2616 | #: com.ubuntu.music_music.desktop.in.in.h:2 |
2617 | msgid "A music application for Ubuntu" |
2618 | -msgstr "Aplicativo de musica para o Ubuntu" |
2619 | +msgstr "" |
2620 | |
2621 | #: com.ubuntu.music_music.desktop.in.in.h:3 |
2622 | msgid "music;songs;play;tracks;player;tunes;" |
2623 | -msgstr "música;músicas;tocar;faixas;player;tons;" |
2624 | +msgstr "" |