[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