Revision d3982dc...
Go back to digest for 12th May 2013Bug Fixes in Multimedia
Fix Saved Playlists and Podcasts actions
After 2 failed attempts to solve this non-intrusively, I realized the
obvious: the actions belong to the view, not the model! (Qt has no
Model/View/Controller, it has Model/View+Controller)
After this it was "easy", just a fair bit of work to move relevant
actions to PlaylistBrowserModel and ensure they work correctly. Some
playlist (and podcast) actions weren't really appropriate for
PlaylistBrowserModel. Methods to get actions from these needed to be
changed, because the old way simply didn't allow reliable action
execution.
When I was at it, I cleaned up a fair bit of things in podcasts (and
playlist providers) - I haven't seen such code bloat in a while -
100-line-long unused function isn't anything surprising there. I'm
pointing at you, Bart. :-)
This regression exists since Ralf's cleanups, although Ralf certainly
didn't introduce it - he just broke the delicate equilibrium of hacks
that kept it working. (and I still think it was working just by chance)
This doesn't go into ChangeLog as it was introduced post-2.7. The code
is not perfect yet (we have lost "Create Empty Playlist" if you clink
into empty space), but the bug this fixes is much more critical.
FIXED-IN: 2.8
File Changes
- src/playlistmanager/PlaylistManager.cpp
- src/playlistmanager/SyncedPlaylist.cpp
- src/playlistmanager/SyncedPlaylist.h
- src/browsers/playlistbrowser/PlaylistBrowserModel.cpp
- src/browsers/playlistbrowser/PlaylistBrowserModel.h
- src/browsers/playlistbrowser/PlaylistBrowserView.cpp
- src/browsers/playlistbrowser/PlaylistBrowserView.h
- src/browsers/playlistbrowser/PodcastModel.cpp
- src/browsers/playlistbrowser/PodcastModel.h
- src/core/playlists/Playlist.cpp
- src/core/playlists/Playlist.h
- src/core/playlists/PlaylistProvider.cpp
- src/core/playlists/PlaylistProvider.h
- src/core/podcasts/PodcastProvider.h
- src/playlistmanager/file/PlaylistFileProvider.cpp
- src/playlistmanager/file/PlaylistFileProvider.h
- src/playlistmanager/sql/SqlUserPlaylistProvider.cpp
- src/playlistmanager/sql/SqlUserPlaylistProvider.h
- src/services/gpodder/GpodderProvider.cpp
- src/services/gpodder/GpodderProvider.h
- tests/playlistmanager/file/TestPlaylistFileProvider.cpp
- tests/playlistmanager/sql/TestSqlUserPlaylistProvider.cpp
- src/core-impl/collections/ipodcollection/IpodPlaylistProvider.cpp
- src/core-impl/collections/ipodcollection/IpodPlaylistProvider.h
- src/core-impl/podcasts/sql/SqlPodcastProvider.cpp
- src/core-impl/podcasts/sql/SqlPodcastProvider.h
- src/core-impl/collections/mediadevicecollection/playlist/MediaDeviceUserPlaylistProvider.cpp
- src/core-impl/collections/mediadevicecollection/playlist/MediaDeviceUserPlaylistProvider.h
- src/core-impl/collections/umscollection/podcasts/UmsPodcastProvider.cpp
- src/core-impl/collections/umscollection/podcasts/UmsPodcastProvider.h
- src/core-impl/playlists/providers/user/UserPlaylistProvider.cpp
- src/core-impl/playlists/providers/user/UserPlaylistProvider.h
- src/core-impl/playlists/types/file/PlaylistFile.h