Make playlist-related actions consistent throughout Amarok code (behaviour change)
This commits boasts a couple of changes, starting with the uncontroversial ones: 1. The Playlist::AddOptions enum is extended with extended with "convenience consistency" aliases: OnDoubleClickOnSelectedItems OnMiddleClickOnSelectedItems OnReturnPressedOnSelectedItems OnPlayMediaAction OnAppendToPlaylistAction OnReplacePlaylistAction OnQueueToPlaylistAction ...and all callers of PlaylistController::insertOptioned() are modified to use one of these values instead of the "low-level" flags like DirectPlay that are actually tested for in the insertOptioned() implementation. This serves that we remain consistent across Amarok from now on. 2. The actual "low-level" enum values have been changed and insertOptioned() was updated accordingly: a) PrependToQueue, which implies Queue, was added. b) StartPlay (start playing unless something is already playing) was removed. No caller uses it anymore (see below) and this was convoluted anyway, IMO. c) DirectPlay now implies PrependToQueue. This may seem strange, but the rationale is following: when you directplay just one track (which is the case 90% of the time), it is played immediately, and this should apply even when you add more tracks. PrependToQueue makes this possible without hacks and is invisible in case of just one track, because it is immediately popped from the queue. Plus it has a positive side-effect of inserting the track at a meaningful place (affects what track is played next). d) LoadAndPlay and LoadAndPlayImmediatelly were removed, because they were replaces with consistency aliases. 3. Thanks to 2b), 2c) and implementation changes, the actual action performed upon a certain trigger no longer depends on any state. The state of playlist search no longer affects whether a track will be played in case of DirectPlay. 4. insertOptioned() was cleaned up and changed, for example it tries to choose the best place to insert tracks according to PrependToQueue or Queue. 5. The convenience aliases were assigned as follows: OnDoubleClickOnSelectedItems = OnReturnPressedOnSelectedItems = = OnPlayMediaAction = DirectPlay. OnMiddleClickOnSelectedItems = OnAppendToPlaylistAction = Append (0). OnReplacePlaylistAction = Replace (no-brainer). OnQueueToPlaylistAction = Queue (no-brainer). These aren't of course set in stone, they were however chosen to be as much consistent with other KDE apps as possible. Especially the "DirectPlay implies PrependToQueue" change is a bit controversial, my opinion in that matter is anything but strong and I'm open to any discussion. But perhaps try to use it for a couple of days to get over the barrier of change. CHANGES: * Playlist-related actions were harmonized: double-clicking, pressing enter or using any "play media" action will prepend tracks to queue and immediately start playing; middle-clicking appends to playlist; append or replace actions will no longer start playback. CCMAIL: amarok-promo@kde.org CCMAIL: amarok-devel@kde.org BUG: 145468 BUG: 145490 BUG: 194549 FIXED-IN: 2.8 GUI: Behavioural change in some places, to increase consistency. Please check that the docs don't mention the old behaviour, see CHANGES. DIGEST: Amarok harmonizes playlist-related actions (double-clicking, pressing Enter, middle clicking...)
Showing
- ChangeLog 4 additions, 0 deletionsChangeLog
- playground/src/context/applets/coverbling/CoverBlingApplet.cpp 4 additions, 5 deletions...round/src/context/applets/coverbling/CoverBlingApplet.cpp
- playground/src/context/applets/coverbling/CoverBlingApplet.h 1 addition, 1 deletionplayground/src/context/applets/coverbling/CoverBlingApplet.h
- playground/src/context/applets/covergrid/AlbumItem.cpp 1 addition, 1 deletionplayground/src/context/applets/covergrid/AlbumItem.cpp
- src/App.cpp 5 additions, 8 deletionssrc/App.cpp
- src/MainWindow.cpp 5 additions, 5 deletionssrc/MainWindow.cpp
- src/amarokurls/BookmarkTreeView.cpp 1 addition, 1 deletionsrc/amarokurls/BookmarkTreeView.cpp
- src/browsers/CollectionTreeView.cpp 8 additions, 11 deletionssrc/browsers/CollectionTreeView.cpp
- src/browsers/CollectionTreeView.h 1 addition, 1 deletionsrc/browsers/CollectionTreeView.h
- src/browsers/filebrowser/FileView.cpp 7 additions, 7 deletionssrc/browsers/filebrowser/FileView.cpp
- src/browsers/playlistbrowser/DynamicView.cpp 1 addition, 1 deletionsrc/browsers/playlistbrowser/DynamicView.cpp
- src/browsers/playlistbrowser/PlaylistBrowserView.cpp 10 additions, 12 deletionssrc/browsers/playlistbrowser/PlaylistBrowserView.cpp
- src/browsers/playlistbrowser/PlaylistBrowserView.h 3 additions, 3 deletionssrc/browsers/playlistbrowser/PlaylistBrowserView.h
- src/context/applets/albums/AlbumsView.cpp 12 additions, 6 deletionssrc/context/applets/albums/AlbumsView.cpp
- src/context/applets/albums/AlbumsView.h 2 additions, 1 deletionsrc/context/applets/albums/AlbumsView.h
- src/context/applets/similarartists/ArtistWidget.cpp 2 additions, 2 deletionssrc/context/applets/similarartists/ArtistWidget.cpp
- src/dbus/mpris1/TrackListHandler.cpp 2 additions, 1 deletionsrc/dbus/mpris1/TrackListHandler.cpp
- src/dbus/mpris2/MediaPlayer2Player.cpp 1 addition, 1 deletionsrc/dbus/mpris2/MediaPlayer2Player.cpp
- src/playlist/PlaylistController.cpp 63 additions, 48 deletionssrc/playlist/PlaylistController.cpp
- src/playlist/PlaylistController.h 19 additions, 7 deletionssrc/playlist/PlaylistController.h
Loading
Please register or sign in to comment