This patch adds an option to the main menu to hide/show the side playlist.
This was an often requested feature (and it also looks kind of cool).
Feature: 392781
mgallien | |
astippich |
This patch adds an option to the main menu to hide/show the side playlist.
This was an often requested feature (and it also looks kind of cool).
Feature: 392781
No Linters Available |
No Unit Test Coverage |
Buildable 542 | |
Build 554: arc lint + arc unit |
There's one small thing left to do for this one: add a customizable shortcut. I couldn't figure out how to do it though, should I add the action in C++ to do that?
Very nice! You'll lure me away from Lollypop yet. :)
Couple of behavioral suggestions:
And one formatting issue: let's do Feature: 392781 instead of BUG 392781, to help out the release team. :)
Works fine so far. I guess it is by design that the playlist is still visible when on the "Now playing" view?
I don't know if the main menu is the correct place for this. At least when add more options like this we should move all of these to the elisa configuration kcm.
If you want to add a shortcut, have a look at e.g. https://phabricator.kde.org/R255:17edcbf3b1b6ca11f17d68332ba6a4353dac752e
Could also be in a following patch
Let's make that a milestone, "1.0 - We lured Nate away from Lollypop" :)
Yup, what I understood from the original bug report is that Now Playing would become "where the playlist is". I've been using it like this for a while and it's not a bad workflow.
I don't know if the main menu is the correct place for this. At least when add more options like this we should move all of these to the elisa configuration kcm.
If you want to add a shortcut, have a look at e.g. https://phabricator.kde.org/R255:17edcbf3b1b6ca11f17d68332ba6a4353dac752e
Could also be in a following patch
Awesome, I'll go over that and @ngraham suggestions over the weekend.
Since global playlist vs non-global-playlist seems to be cardinal UI design decision in music players, let me explain why I personally prefer the non-global-playlist approach:
I find that with a global playlist is only a benefit to me when I want to queue up specific several songs or albums in a specific order, but most of the time, that's not that I want to do. Instead, what I typically want is to navigate to a particular "view" (e.g. all artists albums within a certain genre; all albums by a specific artist; one particular album), then start playing a song within that view, and then have the music player move sequentially onto the next song and keep playing everything else visible. Once it reaches the end, it should loop around back to the beginning if the "Loop" feature is turned on. For music players with no global playlist, I find that this workflow almost always works. When there's a global playlist, I usually find that after the current song or album, the music player unexpectedly starts playing music by some other artist because I forgot to first clear the global playlist before playing the new thing. Even if I do remember to first clear the global playlist, the global playlist approach requires me to manually add the additional content that I want to play; the music player isn't smart enough to just continue playing what's visible until I tell it to stop or do something else.
Also, using the term "playlist" to mean "global play queue" overlaps the use of that term to mean "a user-defined list of music to play that was previously saved and can later be called up again."
Even if personally I prefer the current workflow (inspired by the design work by Andrew Lake), I believe we can also easily support other workflows.
In order to have something matching your description, we need to have a shared "is playing" in all views. Without that, I think one can easily gets confused.
We also need to be very careful with the interface to not try to merge too much of those workflows in one UI. I think it would be probably better to have a global setting that would configure the whole application with either the current workflow or one with no explicit global queue. We really need to optimize them without trying to merge them into a bad compromise.
Agreed. Whether you want the global playlist visible is probably a pretty good indication of your preferred style. Perhaps when the global playlist is hidden we could also hide the Enqueue button and make the Replace and Play button just say "Play."
In the end, my point of view is really to separate what is different and share the other parts.
I would also like to have a collection manager at one point. That would share most of the code with the player but have an optimized specific interface.
I don't quite understand what you guys mean by a different workflow.
I downloaded Lollypop to try it out, but the workflow is almost the same as Elisa for me. There's a global playlist (in a popup), if you click the play button the playlist is cleared and replaced, and you can click the + button to enqueue.
(offtopic: I'm really digging those giant cover images)
Yes, unfortunately Lollypop recently added a global playlist and I've struggled to adapt to it. :/ I'm addicted to its auto-fetching lyrics display though.
I do not know Lolypop very well. I meant players in general where you do not see an explicit global playlist but where you just play the music currently shown.
Some people kept asking for an iTunes like behavior. I also do not know it but I understood that it was optimized to work well without a global playlist.
Thanks for your work.
Can you fix one remaining issue and we should be good to go ?
src/qml/ElisaMainWindow.qml | ||
---|---|---|
60–63 | This change is breaking the back navigation. Can you put it back ? |
I used to use iTunes when I ran os X several years ago. It has multiple playlists that get saved in the program, you pick the one you want to listen to from the list of playlists. You can play stuff straight from the library if it's a single album or song though, but if you want multiple songs/albums you have to make a new playlist.
The closest thing in Linux would be Audacious I think, it uses tabs for the different playlists.
src/qml/ElisaMainWindow.qml | ||
---|---|---|
60–63 | lol why did I delete that? Thanks for catching it |