As some of you might have noticed, I skipped last weeks status update post. The reason for this was quite simply that I was doing a bit of Magnatune work as well as getting a new development workstation setup, so I did not really do anything interesting worth blogging about! This week I will be doing mostly Magnatune stuff as well, but I did spend the first two days doing a bit of interesting Amarok work that I thought I would share.
Since the new playlist for Amarok 2 is basically built using a QGraphicsView, we can do some realy interesting stuff with it. One of the things I have been thinking about was a way to group tracks from the same albums together to take up less space and avoid having the same cover shown over and over again. So after playling with this for a while, and completely discarding the fist prototype I did (as the other devs managed to convince me of the error of my ways), this is what I've come up with:
While the albums in this prototype looks like a coherent whole, each track is actually still an individual item that can be dragged around and removed just the same as with regular track items. Also, the header of each album is actually drawn as part of the first track in the album. This means that there are no "Ghost" elements and that the underlying playlist model can remain intact.
My favorite feature of the current implementation is that it groups items on the fly, meaning that if I insert a single track, it will appear as a normal track, but if I insert another track from the same album right after the first one, the playlist will rearrange itself to show the two tracks as part of an album.
There are many things that do not work really well yet, such as correctly updating groups when items are moved or deleted, but I will work on that. All in all, I think that this makes the playlist a whole lot more usable, while still potentially looking really good! I am still considering whether it should somehow be possible to collapse an album and show only the header ( and maybe the currently playing track if it is from within that album ) but this is something that can always be added later. Also, it might be interesting to show some more album related metadata in the group header that applies to the album but not the individual tracks, such as total running time.
And now for the part I really should not have to write... Please remember that this is a
PROTOTYPE and as such no work has been done on making it look good yet. So pretty please, with sugar on top, don't complain about the layout or the horrible color used to mark items as part of a group, it is currently just trying to illustrate a concept.