[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/amarok/src
From: Bart Cerneels <bart.cerneels () kde ! org>
Date: 2009-07-13 20:59:40
Message-ID: 1247518780.230923.20761.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 996111 by shanachie:
Move the actionsFor stuff to PlaylistManager where it will map to the individual providers.
WIP.
M +16 -13 browsers/playlistbrowser/UserPlaylistModel.cpp
M +0 -1 browsers/playlistbrowser/UserPlaylistModel.h
M +12 -0 playlistmanager/PlaylistManager.cpp
M +5 -1 playlistmanager/PlaylistManager.h
M +22 -1 playlistmanager/sql/SqlUserPlaylistProvider.cpp
M +3 -0 playlistmanager/sql/SqlUserPlaylistProvider.h
--- trunk/extragear/multimedia/amarok/src/browsers/playlistbrowser/UserPlaylistModel.cpp #996110:996111
@@ -23,7 +23,6 @@
#include "CollectionManager.h"
#include "context/popupdropper/libpud/PopupDropperAction.h"
#include "SvgHandler.h"
-#include "UserPlaylistProvider.h"
#include <KIcon>
@@ -32,7 +31,8 @@
#include <typeinfo>
//Playlist & Track index differentiator macros
-#define TRACK_MASK (0x1<<31)
+//QModelIndex::intenalId() is a qint64 to support 64-bit pointers in a union with the ID
+#define TRACK_MASK (0x1<<63)
#define IS_TRACK(x) ((x.internalId()) & (TRACK_MASK))?true:false
#define SET_TRACK_MASK(x) ((x) | (TRACK_MASK))
#define REMOVE_TRACK_MASK(x) ((x) & ~(TRACK_MASK))
@@ -408,19 +408,22 @@
if( !m_selectedPlaylists.isEmpty() )
{
- UserPlaylistProvider *provider =
- qobject_cast<UserPlaylistProvider *>(
- The::playlistManager()->getProviderForPlaylist(
- m_selectedPlaylists.front()
- )
+ actions += QSet<PopupDropperAction *>::fromList(
+ The::playlistManager()->playlistActions( m_selectedPlaylists )
);
-
- if( provider && !selectedPlaylists().isEmpty() )
- actions +=
- QSet<PopupDropperAction *>::fromList(
- provider->playlistActions( m_selectedPlaylists )
- );
}
+ else
+ {
+ foreach( const QModelIndex &idx, indices )
+ {
+ actions += QSet<PopupDropperAction *>::fromList(
+ The::playlistManager()->trackActions(
+ m_playlists.value( idx.parent().internalId() ),
+ idx.row()
+ )
+ );
+ }
+ }
actionList = actions.toList();
actionList << createCommonActions( indices );
--- trunk/extragear/multimedia/amarok/src/browsers/playlistbrowser/UserPlaylistModel.h #996110:996111
@@ -27,7 +27,6 @@
#define PLAYLIST_DB_VERSION 1
-class PlaylistProvider;
class PopupDropperAction;
namespace PlaylistBrowserNS {
--- trunk/extragear/multimedia/amarok/src/playlistmanager/PlaylistManager.cpp #996110:996111
@@ -398,6 +398,18 @@
return 0;
}
+QList<PopupDropperAction *>
+PlaylistManager::playlistActions( const Meta::PlaylistList lists )
+{
+ return QList<PopupDropperAction *>();
+}
+
+QList<PopupDropperAction *>
+PlaylistManager::trackActions( const Meta::PlaylistPtr playlist, int trackIndex )
+{
+ return QList<PopupDropperAction *>();
+}
+
namespace Amarok
{
//this function (C) Copyright 2003-4 Max Howell, (C) Copyright 2004 Mark Kretschmann
--- trunk/extragear/multimedia/amarok/src/playlistmanager/PlaylistManager.h #996110:996111
@@ -30,6 +30,7 @@
class PlaylistProvider;
typedef QList<PlaylistProvider *> PlaylistProviderList;
class PodcastProvider;
+class PopupDropperAction;
class UserPlaylistProvider;
namespace The {
@@ -151,9 +152,12 @@
* Retrieves the provider owning the given playlist
* @arg playlist the playlist whose provider we want
*/
-
PlaylistProvider* getProviderForPlaylist( const Meta::PlaylistPtr &playlist );
+ QList<PopupDropperAction *> playlistActions( const Meta::PlaylistList lists );
+ QList<PopupDropperAction *> trackActions( const Meta::PlaylistPtr playlist,
+ int trackIndex );
+
signals:
void updated();
void categoryAdded( int category );
--- trunk/extragear/multimedia/amarok/src/playlistmanager/sql/SqlUserPlaylistProvider.cpp #996110:996111
@@ -42,6 +42,7 @@
: UserPlaylistProvider()
, m_renameAction( 0 )
, m_deleteAction( 0 )
+ , m_removeTrackAction( 0 )
{
checkTables();
m_root = Meta::SqlPlaylistGroupPtr( new Meta::SqlPlaylistGroup( "",
@@ -105,7 +106,6 @@
QList<PopupDropperAction *>
SqlUserPlaylistProvider::playlistActions( Meta::PlaylistList list )
{
- Q_UNUSED( list )
QList<PopupDropperAction *> actions;
m_selectedPlaylists.clear();
@@ -128,6 +128,27 @@
return actions;
}
+QList<PopupDropperAction *>
+SqlUserPlaylistProvider::trackActions( Meta::PlaylistPtr playlist, Meta::TrackList list )
+{
+ QList<PopupDropperAction *> actions;
+
+ if( m_removeTrackAction == 0 )
+ {
+ m_removeTrackAction = new PopupDropperAction(
+ The::svgHandler()->getRenderer( "amarok/images/pud_items.svg" ),
+ "delete",
+ KIcon( "media-track-remove-amarok" ),
+ i18n( "Remove From Playlist" ),
+ this
+ );
+ connect( m_deleteAction, SIGNAL( triggered() ), SLOT( slotDelete() ) );
+ }
+ actions << m_removeTrackAction;
+
+ return actions;
+}
+
Meta::PlaylistPtr
SqlUserPlaylistProvider::save( const Meta::TrackList &tracks )
{
--- trunk/extragear/multimedia/amarok/src/playlistmanager/sql/SqlUserPlaylistProvider.h #996110:996111
@@ -45,6 +45,8 @@
virtual bool supportsEmptyGroups() { return true; }
QList<PopupDropperAction *> playlistActions( Meta::PlaylistList list );
+ QList<PopupDropperAction *> trackActions( Meta::PlaylistPtr playlist,
+ Meta::TrackList list );
Meta::SqlPlaylistGroupPtr group( const QString &name );
bool import( const QString& fromLocation );
@@ -72,6 +74,7 @@
Meta::SqlPlaylistList m_selectedPlaylists;
PopupDropperAction *m_renameAction;
PopupDropperAction *m_deleteAction;
+ PopupDropperAction *m_removeTrackAction;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic