[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/multimedia/amarok/src
From:       Seb Ruiz <me () sebruiz ! net>
Date:       2006-05-27 16:24:23
Message-ID: 1148747063.525643.5712.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 545481 by seb:

Lazy load the playlistbrowser and super improve the startup times for amaroK.
I have clocked up to an 80% improvements in startup times.
Unfortunately this reintroduces the "forgetton width" issue... Being looked into atm.


 M  +13 -6     browserbar.cpp  
 M  +1 -0      browserbar.h  
 M  +23 -53    playlistbrowser.cpp  


--- trunk/extragear/multimedia/amarok/src/browserbar.cpp #545480:545481
@@ -99,6 +99,17 @@
     config->writeEntry( "Width", m_browserBox->width() );
 }
 
+int
+BrowserBar::restoreWidth()
+{
+    KConfig* const config = amaroK::config( "BrowserBar" );
+    const int index = indexForName( config->readEntry( "CurrentPane" ) );
+    const int width = config->readNumEntry( "Width", browser( index \
)->sizeHint().width() ); +
+    m_browserBox->resize( width, height() );
+    return index;
+}
+
 void
 BrowserBar::polish()
 {
@@ -112,17 +123,13 @@
         if( m > M ) M = m;
     }
 
-    KConfig* const config = amaroK::config( "BrowserBar" );
-    const int index = indexForName( config->readEntry( "CurrentPane" ) );
-    const int width = config->readNumEntry( "Width", browser( index \
                )->sizeHint().width() );
-
     if( M > 250 ) {
         warning() << "Some browsers are insisting on a silly minimum size! " << M << \
endl;  M = 250;
     }
 
     m_browserBox->setMinimumWidth( M );
-    m_browserBox->resize( width, height() );
+    const int index = restoreWidth();
 
     if( index != -1 )
         // if we did it for -1 it ruins the browserBox size
@@ -266,7 +273,7 @@
             adjustWidgetSizes();
         }
     }
-    
+
     emit browserActivated( index );
 }
 
--- trunk/extragear/multimedia/amarok/src/browserbar.h #545480:545481
@@ -44,6 +44,7 @@
     int visibleCount() const;
 
     void addBrowser( QWidget*, const QString&, const QString& );
+    int restoreWidth();
 
     /// for internal use
     void mouseMovedOverSplitter( QMouseEvent* );
--- trunk/extragear/multimedia/amarok/src/playlistbrowser.cpp #545480:545481
@@ -138,45 +138,8 @@
 
     m_infoPane = new InfoPane( this );
 
-    // FIXME the following code moved here from polish(), until the width
-    // forgetting issue is fixed:
-
-    m_polished = true;
-
-    m_playlistCategory = loadPlaylists();
-    if( !CollectionDB::instance()->isEmpty() ) {
-        m_smartCategory = loadSmartPlaylists();
-        loadDefaultSmartPlaylists();
-    }
-    m_dynamicCategory = loadDynamics();
-    m_randomDynamic    = new DynamicEntry( m_dynamicCategory, 0, i18n("Random Mix") \
                );
-    m_suggestedDynamic = new DynamicEntry( m_dynamicCategory, m_randomDynamic, \
                i18n("Suggested Songs" ) );
-    m_suggestedDynamic->setAppendType( DynamicMode::SUGGESTION );
-
-    m_streamsCategory = loadStreams();
-    loadCoolStreams();
-
-    // must be loaded after streams
     m_podcastCategory = loadPodcasts();
 
-    if ( amaroK::dynamicMode() ) {
-
-        QStringList playlists = amaroK::dynamicMode()->items();
-
-        for( uint i=0; i < playlists.count(); i++ )
-        {
-            QListViewItem *item = m_listview->findItem( playlists[i], 0, \
                Qt::ExactMatch );
-            if( item )
-            {
-                m_dynamicEntries.append( item );
-                if( item->rtti() == PlaylistEntry::RTTI )
-                    static_cast<PlaylistEntry*>( item )->setDynamic( true );
-                if( item->rtti() == SmartPlaylist::RTTI )
-                    static_cast<SmartPlaylist*>( item )->setDynamic( true );
-            }
-        }
-    }
-
     setSpacing( 4 );
     setFocusProxy( m_listview );
 }
@@ -188,47 +151,54 @@
     // we make startup faster by doing the slow bits for this
     // only when we are shown on screen
 
-    DEBUG_BLOCK
+    DEBUG_FUNC_INFO
 
-//     amaroK::OverrideCursor allocate_on_stack;
+    amaroK::OverrideCursor cursor;
 
+//     blockSignals( true );
+//     BrowserBar::instance()->restoreWidth();
+//     blockSignals( false );
+
     QVBox::polish();
 
     // FIXME the following code moved to the ctor, until the width forgetting
     // issue is fixed:
 
-/*    m_polished = true;
+    /// Podcasting is always initialised in the ctor because of autoscanning
 
+    m_polished = true;
+
     KConfig *config = amaroK::config( "PlaylistBrowser" );
 
     m_playlistCategory = loadPlaylists();
     m_streamsCategory  = loadStreams();
     loadCoolStreams();
 
-    if( !CollectionDB::instance()->isEmpty() ) {
+    if( !CollectionDB::instance()->isEmpty() )
+    {
         m_smartCategory = loadSmartPlaylists();
         loadDefaultSmartPlaylists();
         m_smartCategory->setOpen( true );
     }
-    // must be loaded after streams
-    m_podcastCategory = loadPodcasts();
 
     m_dynamicCategory = loadDynamics();
 
     m_playlistCategory->setOpen( true );
-    m_podcastCategory->setOpen( true );
     m_streamsCategory->setOpen( true );
     m_dynamicCategory->setOpen( true );
 
-    QStringList playlists = amaroK::dynamicMode()->items();
-
-    for( uint i=0; i < playlists.count(); i++ )
+    if( amaroK::dynamicMode() )
     {
-        QListViewItem *item = m_listview->findItem( playlists[i], 0, Qt::ExactMatch \
                );
-        if( item )
+        QStringList playlists = amaroK::dynamicMode()->items();
+
+        for( uint i=0; i < playlists.count(); i++ )
         {
-            item->setPixmap( 1, SmallIcon("favorites") );
-            m_dynamicEntries.append( item );
+            QListViewItem *item = m_listview->findItem( playlists[i], 0, \
Qt::ExactMatch ); +            if( item )
+            {
+                item->setPixmap( 1, SmallIcon("favorites") );
+                m_dynamicEntries.append( item );
+            }
         }
     }
 
@@ -256,7 +226,7 @@
             }
             ++it;
         }
-    }*/
+    }
 }
 
 
@@ -847,7 +817,7 @@
     QDomDocument d;
     QDomElement e;
 
-    QListViewItem *after = m_streamsCategory;
+    QListViewItem *after = 0;
 
     if( !file.open( IO_ReadOnly ) || !d.setContent( stream.read() ) )
     { /*Couldn't open the file or it had invalid content, so let's create an empty \
element*/


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic