[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/amarok/src
From: Alejandro Daniel Wainzinger <aikawarazuni () gmail ! com>
Date: 2009-06-26 19:32:02
Message-ID: 1246044722.218755.11861.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 987858 by awainzinger:
Added the ability to remove a playlistprovider, so that when devices disconnect, \
their playlists go away too. Added some Q_UNUSED and DEBUG_BLOCK.
M +9 -8 MainWindow.cpp
M +1 -0 browsers/playlistbrowser/PlaylistBrowser.cpp
M +2 -0 browsers/playlistbrowser/UserPlaylistModel.cpp
M +2 -0 collection/mediadevicecollection/MediaDeviceCollection.cpp
M +1 -0 collection/mediadevicecollection/MediaDeviceCollection.h
M +14 -1 collection/mediadevicecollection/handler/MediaDeviceHandler.cpp
M +2 -0 collection/mediadevicecollection/handler/MediaDeviceHandler.h
M +8 -1 collection/mediadevicecollection/playlist/MediaDeviceUserPlaylistProvider.cpp \
M +3 -0 collection/mediadevicecollection/playlist/MediaDeviceUserPlaylistProvider.h \
M +2 -0 playlistmanager/PlaylistFileProvider.cpp
M +27 -0 playlistmanager/PlaylistManager.cpp
M +7 -0 playlistmanager/PlaylistManager.h
--- trunk/extragear/multimedia/amarok/src/MainWindow.cpp #987857:987858
@@ -177,7 +177,7 @@
delete m_browserDummyTitleBarWidget;
delete m_contextDummyTitleBarWidget;
delete m_playlistDummyTitleBarWidget;
-
+
delete m_playlistFiles;
delete m_contextView;
delete m_corona;
@@ -222,8 +222,8 @@
m_browsersDock->setObjectName( "Browsers dock" );
m_browsersDock->setWidget( m_browsers );
m_browsersDock->setAllowedAreas( Qt::AllDockWidgetAreas );
-
+
PERF_LOG( "Create Playlist" )
m_playlistWidget = new Playlist::Widget( 0 );
m_playlistWidget->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored );
@@ -233,7 +233,7 @@
m_playlistDock->setObjectName( "Playlist dock" );
m_playlistDock->setWidget( m_playlistWidget );
m_playlistDock->setAllowedAreas( Qt::AllDockWidgetAreas );
-
+
PERF_LOG( "Playlist created" )
createMenus();
@@ -266,7 +266,7 @@
connect( m_browsers, SIGNAL( widgetActivated( int ) ), SLOT( slotShrinkBrowsers( \
int ) ) );
setDockOptions ( QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks \
);
-
+
addDockWidget( Qt::LeftDockWidgetArea, m_browsersDock );
addDockWidget( Qt::LeftDockWidgetArea, m_contextDock );
addDockWidget( Qt::RightDockWidgetArea, m_playlistDock );
@@ -291,7 +291,7 @@
m_browsers->list()->addCategory( m_collectionBrowser );
PERF_LOG( "Created CollectionWidget" )
-
+
PERF_LOG( "Creating ServiceBrowser" )
ServiceBrowser *internetContentServiceBrowser = ServiceBrowser::instance();
internetContentServiceBrowser->setParent( 0 );
@@ -312,7 +312,7 @@
m_browsers->list()->addCategory( m_playlistBrowser );
PERF_LOG( "CreatedPlaylsitBrowser" )
-
+
PERF_LOG( "Creating FileBrowser" )
FileBrowser::Widget * fileBrowser = new FileBrowser::Widget( "files", 0 );
fileBrowser->setPrettyName( i18n("Files") );
@@ -360,6 +360,7 @@
void
MainWindow::slotShrinkBrowsers( int index )
{
+ Q_UNUSED( index )
DEBUG_BLOCK
// Because QSplitter sucks and will not recompute sizes if a pane is shrunk and \
not hidden. @@ -388,6 +389,7 @@
void
MainWindow::showBrowser( const int index )
{
+ Q_UNUSED( index )
//if( index >= 0 && index != m_browsers->currentIndex() )
// m_browsers->showWidget( index );
}
@@ -1023,7 +1025,7 @@
{
debug() << "unlocked!";
const QFlags<QDockWidget::DockWidgetFeature> features = \
QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable | \
QDockWidget::DockWidgetClosable;
-
+
m_browsersDock->setFeatures( features );
m_contextDock->setFeatures( features );
m_playlistDock->setFeatures( features );
@@ -1087,4 +1089,3 @@
#include "MainWindow.moc"
-
\ No newline at end of file
--- trunk/extragear/multimedia/amarok/src/browsers/playlistbrowser/PlaylistBrowser.cpp \
#987857:987858 @@ -120,6 +120,7 @@
void
PlaylistBrowser::showCategory( int category )
{
+ Q_UNUSED( category )
DEBUG_BLOCK;
//m_toolBox->setCurrentIndex( m_categoryIndexMap.key( category ) );
}
--- trunk/extragear/multimedia/amarok/src/browsers/playlistbrowser/UserPlaylistModel.cpp \
#987857:987858 @@ -85,6 +85,7 @@
void
PlaylistBrowserNS::UserModel::slotUpdate()
{
+ DEBUG_BLOCK
loadPlaylists();
emit layoutAboutToBeChanged();
@@ -114,6 +115,7 @@
void
PlaylistBrowserNS::UserModel::loadPlaylists()
{
+ DEBUG_BLOCK
QList<Meta::PlaylistPtr> playlists =
The::playlistManager()->playlistsOfCategory( PlaylistManager::UserPlaylist );
QListIterator<Meta::PlaylistPtr> i(playlists);
--- trunk/extragear/multimedia/amarok/src/collection/mediadevicecollection/MediaDeviceCollection.cpp \
#987857:987858 @@ -196,6 +196,8 @@
void
MediaDeviceCollection::deleteCollection()
{
+ DEBUG_BLOCK
+ emit deletingCollection();
emit remove();
}
--- trunk/extragear/multimedia/amarok/src/collection/mediadevicecollection/MediaDeviceCollection.h \
#987857:987858 @@ -145,6 +145,7 @@
signals:
void collectionReady( Amarok::Collection* );
void collectionDisconnected( const QString &udi );
+ void deletingCollection();
void attemptConnectionDone( bool success );
--- trunk/extragear/multimedia/amarok/src/collection/mediadevicecollection/handler/MediaDeviceHandler.cpp \
#987857:987858 @@ -50,13 +50,23 @@
connect( this, SIGNAL( attemptConnectionDone(bool)),
m_memColl, SLOT( slotAttemptConnectionDone(bool) ) );
+ connect( m_memColl, SIGNAL( deletingCollection() ),
+ this, SLOT( slotDeletingHandler() ) );
+
}
MediaDeviceHandler::~MediaDeviceHandler()
{
+ DEBUG_BLOCK
delete m_provider;
}
+void
+MediaDeviceHandler::slotDeletingHandler()
+{
+ The::playlistManager()->removeProvider( m_provider );
+}
+
bool
MediaDeviceHandler::isWritable() const
{
@@ -802,8 +812,8 @@
// Register the playlist provider with the playlistmanager
// register a playlist provider for this type of device
+ debug() << "adding provider";
m_provider = new MediaDeviceUserPlaylistProvider();
- The::playlistManager()->addProvider( m_provider, m_provider->category() );
// Begin parsing the playlists
@@ -848,6 +858,9 @@
m_provider->addPlaylist( playlist );
}
+ The::playlistManager()->addProvider( m_provider, m_provider->category() );
+ m_provider->sendUpdated();
+
// Inform the provider of these new playlists
/*
foreach( Meta::MediaDevicePlaylistPtr playlist, playlists )
--- trunk/extragear/multimedia/amarok/src/collection/mediadevicecollection/handler/MediaDeviceHandler.h \
#987857:987858 @@ -453,6 +453,8 @@
void enqueueNextCopyThread();
+ void slotDeletingHandler();
+
/* Collection Variables */
private:
// Associated collection
--- trunk/extragear/multimedia/amarok/src/collection/mediadevicecollection/playlist/MediaDeviceUserPlaylistProvider.cpp \
#987857:987858 @@ -46,6 +46,7 @@
: UserPlaylistProvider()
// , m_renameAction( 0 )
{
+ DEBUG_BLOCK
// checkTables();
// m_root = Meta::MediaDevicePlaylistGroupPtr( new \
Meta::MediaDevicePlaylistGroup( "", // \
Meta::MediaDevicePlaylistGroupPtr() ) ); @@ -54,17 +55,21 @@
MediaDeviceUserPlaylistProvider::~MediaDeviceUserPlaylistProvider()
{
+ DEBUG_BLOCK
// foreach( Meta::MediaDevicePlaylistPtr playlist, m_playlists )
// {
// playlist->saveToDb( true );
// }
m_playlists.clear();
- emit updated();
+// emit updated();
+// The::playlistManager()->removeProvider( this );
+
}
Meta::PlaylistList
MediaDeviceUserPlaylistProvider::playlists()
{
+ DEBUG_BLOCK
Meta::PlaylistList playlists;
foreach( Meta::MediaDevicePlaylistPtr mediadevicePlaylist, m_playlists )
@@ -87,6 +92,8 @@
Meta::PlaylistPtr
MediaDeviceUserPlaylistProvider::save( const Meta::TrackList &tracks, const QString& \
name ) {
+ Q_UNUSED( tracks )
+ Q_UNUSED( name )
DEBUG_BLOCK
// debug() << "saving " << tracks.count() << " tracks to db with name" << name;
Meta::MediaDevicePlaylistPtr mediadevicePlaylist;
--- trunk/extragear/multimedia/amarok/src/collection/mediadevicecollection/playlist/MediaDeviceUserPlaylistProvider.h \
#987857:987858 @@ -50,6 +50,9 @@
void addPlaylist( Meta::MediaDevicePlaylistPtr &playlist );
+ public slots:
+ void sendUpdated() { emit updated(); }
+
private:
Meta::MediaDevicePlaylistList m_playlists;
--- trunk/extragear/multimedia/amarok/src/playlistmanager/PlaylistFileProvider.cpp \
#987857:987858 @@ -28,6 +28,7 @@
PlaylistFileProvider::PlaylistFileProvider()
: PlaylistProvider()
{
+ DEBUG_BLOCK
//load the playlists defined in the config
QStringList keys = Amarok::config( "Loaded Playlist Files" ).keyList();
debug() << "keys " << keys;
@@ -81,6 +82,7 @@
Meta::PlaylistList
PlaylistFileProvider::playlists()
{
+ DEBUG_BLOCK
return m_playlists;
}
--- trunk/extragear/multimedia/amarok/src/playlistmanager/PlaylistManager.cpp \
#987857:987858 @@ -126,6 +126,30 @@
emit( categoryAdded( category ) );
}
+void
+PlaylistManager::removeProvider( PlaylistProvider * provider )
+{
+ DEBUG_BLOCK
+
+ if ( !provider )
+ return;
+
+ if ( m_map.values( provider->category() ).contains( provider ) )
+ {
+ debug() << "Providers of this category: " << providersForCategory( \
provider->category() ).count(); + debug() << "Removing provider from map";
+ int removed = m_map.remove( provider->category(), provider );
+ debug() << "Removed provider from map:" << ( m_map.contains( \
provider->category(), provider ) ? "false" : "true" ); + debug() << "Providers \
removed: " << removed; + // Handle deletion of provider here
+// provider->deleteLater();
+ slotUpdated();
+
+ }
+
+
+}
+
int
PlaylistManager::registerCustomCategory( const QString & name )
{
@@ -147,12 +171,15 @@
Meta::PlaylistList
PlaylistManager::playlistsOfCategory( int playlistCategory )
{
+ DEBUG_BLOCK
QList<PlaylistProvider *> providers = m_map.values( playlistCategory );
QListIterator<PlaylistProvider *> i( providers );
Meta::PlaylistList list;
while ( i.hasNext() )
+ {
list << i.next()->playlists();
+ }
return list;
}
--- trunk/extragear/multimedia/amarok/src/playlistmanager/PlaylistManager.h \
#987857:987858 @@ -110,6 +110,13 @@
void addProvider( PlaylistProvider * provider, int category );
/**
+ * Remove a PlaylistProvider.
+ * @arg provider a PlaylistProvider
+ */
+
+ void removeProvider( PlaylistProvider * provider );
+
+ /**
* Makes sure custom categories don't conflict with the default \
PlaylistCategory enum or
* other custom category by dynamically providing a integer that identifies \
it.
* @arg name a translated name that can be used to identify playlists \
offered by this provider
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic