Revision 868947

Go back to digest for 12th October 2008

Bug Fixes in Multimedia

Soren Harward committed changes in /trunk/extragear/multimedia/amarok:

Major overhaul of the playlist subsystem

== Changes for end users ==
In the playlist view, mouse and keyboard event handling, and the selection system have both been significantly improved. The undo/redo commands now work properly in all cases. Album grouping works consistently. Some of the eye candy (like animations) has been temporarily removed, but will hopefully return in the future.

== Changes in general Amarok code ==
The PlaylistModel has been split into four different classes:
1) PlaylistActions
2) PlaylistController
3) PlaylistModel
4) GroupingProxy

The play, nextTrack, and previousTrack functions are now part of PlaylistActions. Functions that modify the contents of the playlist (insert, remove, and move tracks; undo and redo) are now part of PlaylistController. If you want to find out about the contents of the playlist, you still use PlaylistModel, though you cannot modify it without using the Controller. I encourage you to take a look at the headers for each of these classes to find out what functions are available.

The album grouping functionality that used to be in the PlaylistModel has been moved into GroupingProxy. Both GraphicsView and PrettyListView (described in the next section) use GroupingProxy. It really isn't useful for anything other than playlist views.

The signals and slots for the PlaylistModel have changed substantially; PlaylistModel now behaves much more like a QAbstractItem model when it is modified.

A position-independent accessing system has been added to the model for situations where you care what is in the playlist, but not what order the playlist is in (eg, Random Track mode).

The Model::trackNumberLessThan() function has moved to Meta::Track::lessThan()

== Changes in the playlist subsystem ==
The src/playlist/ directory has been rearranged.

Along with the PlaylistModel changes, there is a new View for the playlist, called PrettyListView. It subclasses QListView and is designed to be a replacement for GraphicsView. The code for GraphicsView still exists in the source tree and has been mostly ported to the new PlaylistModel system, but PrettyListView solves a lot of the selection model and event handling problems of the GraphicsView.

File Changes

Added 47 files
  • /trunk/extragear/multimedia/amarok/src/playlist
  •   /GroupingProxy.cpp
  •   /GroupingProxy.h
  •   /navigators
  •   /PlaylistActions.cpp
  •   /PlaylistActions.h
  •   /PlaylistController.cpp
  •   /PlaylistController.h
  •   /view
  •   /navigators/DynamicTrackNavigator.cpp
  •   /navigators/DynamicTrackNavigator.h
  •   /navigators/RandomAlbumNavigator.cpp
  •   /navigators/RandomAlbumNavigator.h
  •   /navigators/RandomTrackNavigator.cpp
  •   /navigators/RandomTrackNavigator.h
  •   /navigators/RepeatAlbumNavigator.cpp
  •   /navigators/RepeatAlbumNavigator.h
  •   /navigators/RepeatPlaylistNavigator.cpp
  •   /navigators/RepeatPlaylistNavigator.h
  •   /navigators/RepeatTrackNavigator.cpp
  •   /navigators/RepeatTrackNavigator.h
  •   /navigators/SimpleTrackNavigator.cpp
  •   /navigators/SimpleTrackNavigator.h
  •   /navigators/StandardTrackNavigator.cpp
  •   /navigators/StandardTrackNavigator.h
  •   /navigators/TrackNavigator.cpp
  •   /navigators/TrackNavigator.h
  •   /view/classic
  •   /view/graphic
  •   /view/listview
  •   /view/PlaylistViewCommon.cpp
  •   /view/PlaylistViewCommon.h
  •   /view/classic/PlaylistClassicView.cpp
  •   /view/classic/PlaylistClassicView.h
  •   /view/graphic/PlaylistDropVis.cpp
  •   /view/graphic/PlaylistDropVis.h
  •   /view/graphic/PlaylistGraphicsItem.cpp
  •   /view/graphic/PlaylistGraphicsItem.h
  •   /view/graphic/PlaylistGraphicsScene.cpp
  •   /view/graphic/PlaylistGraphicsScene.h
  •   /view/graphic/PlaylistGraphicsView.cpp
  •   /view/graphic/PlaylistGraphicsView.h
  •   /view/graphic/PlaylistTextItem.cpp
  •   /view/graphic/PlaylistTextItem.h
  •   /view/listview/PrettyItemDelegate.cpp
  •   /view/listview/PrettyItemDelegate.h
  •   /view/listview/PrettyListView.cpp
  •   /view/listview/PrettyListView.h
Deleted 36 files
  • /trunk/extragear/multimedia/amarok/src/playlist
  •   /DynamicTrackNavigator.cpp
  •   /DynamicTrackNavigator.h
  •   /PlaylistAlbumGroup.cpp
  •   /PlaylistAlbumGroup.h
  •   /PlaylistClassicView.cpp
  •   /PlaylistClassicView.h
  •   /PlaylistDropVis.cpp
  •   /PlaylistDropVis.h
  •   /PlaylistGraphicsItem.cpp
  •   /PlaylistGraphicsItem.h
  •   /PlaylistGraphicsScene.cpp
  •   /PlaylistGraphicsScene.h
  •   /PlaylistGraphicsView.cpp
  •   /PlaylistGraphicsView.h
  •   /PlaylistRowList.cpp
  •   /PlaylistRowList.h
  •   /PlaylistTextItem.cpp
  •   /PlaylistTextItem.h
  •   /PlaylistViewCommon.cpp
  •   /PlaylistViewCommon.h
  •   /RandomAlbumNavigator.cpp
  •   /RandomAlbumNavigator.h
  •   /RandomTrackNavigator.cpp
  •   /RandomTrackNavigator.h
  •   /RepeatAlbumNavigator.cpp
  •   /RepeatAlbumNavigator.h
  •   /RepeatPlaylistNavigator.cpp
  •   /RepeatPlaylistNavigator.h
  •   /RepeatTrackNavigator.cpp
  •   /RepeatTrackNavigator.h
  •   /SimpleTrackNavigator.cpp
  •   /SimpleTrackNavigator.h
  •   /StandardTrackNavigator.cpp
  •   /StandardTrackNavigator.h
  •   /TrackNavigator.cpp
  •   /TrackNavigator.h
Modified 42 files
  • /trunk/extragear/multimedia/amarok
  •   /ChangeLog
  •   /src/ActionClasses.cpp
  •   /src/App.cpp
  •   /src/CMakeLists.txt
  •   /src/DirectoryLoader.cpp
  •   /src/EngineController.cpp
  •   /src/main.cpp
  •   /src/MainWindow.cpp
  •   /src/Systray.cpp
  •   /src/covermanager/CoverManager.cpp
  •   /src/dbus/PlayerDBusHandler.cpp
  •   /src/dbus/TracklistDBusHandler.cpp
  •   /src/dbus/TracklistDBusHandler.h
  •   /src/dynamic/BiasedPlaylist.cpp
  •   /src/meta/Meta.cpp
  •   /src/meta/Meta.h
  •   /src/playlist/PlaylistHeader.cpp
  •   /src/playlist/PlaylistItem.cpp
  •   /src/playlist/PlaylistItem.h
  •   /src/playlist/PlaylistModel.cpp
  •   /src/playlist/PlaylistModel.h
  •   /src/playlist/PlaylistWidget.cpp
  •   /src/playlist/PlaylistWidget.h
  •   /src/playlist/UndoCommands.cpp
  •   /src/playlist/UndoCommands.h
  •   /src/scriptengine/AmarokEngineScript.cpp
  •   /src/scriptengine/AmarokPlaylistScript.cpp
  •   /src/scriptengine/AmarokPlaylistScript.h
  •   /src/services/ServiceCollectionTreeView.cpp
  •   /src/browsers/collectionbrowser/CollectionTreeView.cpp
  •   /src/browsers/collectionbrowser/CollectionTreeView.h
  •   /src/browsers/collectionbrowser/CollectionWidget.cpp
  •   /src/browsers/filebrowser/MyDirOperator.cpp
  •   /src/browsers/playlistbrowser/DynamicCategory.cpp
  •   /src/browsers/playlistbrowser/PodcastCategory.cpp
  •   /src/browsers/playlistbrowser/PodcastModel.cpp
  •   /src/browsers/playlistbrowser/UserPlaylistTreeView.cpp
  •   /src/services/lastfm/LastFmService.cpp
  •   /src/services/lastfm/SimilarArtistsAction.cpp
  •   /src/services/magnatune/MagnatuneStore.cpp
  •   /src/services/shoutcast/ShoutcastServiceQueryMaker.cpp
  •   /src/context/applets/serviceinfo/ServiceInfo.cpp
125 files changed in total