diff --git a/src/libtomahawk/playlist/collectionflatmodel.cpp b/src/libtomahawk/playlist/collectionflatmodel.cpp index 825c75746..0d6b92fdf 100644 --- a/src/libtomahawk/playlist/collectionflatmodel.cpp +++ b/src/libtomahawk/playlist/collectionflatmodel.cpp @@ -51,19 +51,17 @@ CollectionFlatModel::addCollections( const QList< collection_ptr >& collections qDebug() << Q_FUNC_INFO << "Adding collections!"; foreach( const collection_ptr& col, collections ) { - if( !col->isLoaded() ) - m_loadingCollections << col.data(); - addCollection( col ); } - if( m_loadingCollections.isEmpty() ) - emit doneLoadingCollections(); + // we are waiting for some to load + if( !m_loadingCollections.isEmpty() ) + emit loadingStarted(); } void -CollectionFlatModel::addCollection( const collection_ptr& collection ) +CollectionFlatModel::addCollection( const collection_ptr& collection, bool sendNotifications ) { qDebug() << Q_FUNC_INFO << collection->name() << collection->source()->id() @@ -81,6 +79,8 @@ CollectionFlatModel::addCollection( const collection_ptr& collection ) collection->tracks(); // data will arrive via signals m_loadingCollections << collection.data(); + if( sendNotifications ) + emit loadingStarted(); } if ( collection->source()->isLocal() ) @@ -191,7 +191,7 @@ CollectionFlatModel::onTracksAdded( const QList& tracks ) m_loadingCollections.removeAll( qobject_cast< Collection* >( sender() ) ); } if( m_loadingCollections.isEmpty() ) - emit doneLoadingCollections(); + emit loadingFinished(); bool kickOff = m_tracksToAdd.isEmpty(); m_tracksToAdd << tracks; diff --git a/src/libtomahawk/playlist/collectionflatmodel.h b/src/libtomahawk/playlist/collectionflatmodel.h index 9eeafee52..5c1ffeb34 100644 --- a/src/libtomahawk/playlist/collectionflatmodel.h +++ b/src/libtomahawk/playlist/collectionflatmodel.h @@ -36,7 +36,7 @@ public: void addCollections( const QList< Tomahawk::collection_ptr >& collections ); - void addCollection( const Tomahawk::collection_ptr& collection ); + void addCollection( const Tomahawk::collection_ptr& collection, bool sendNotifications = true ); void removeCollection( const Tomahawk::collection_ptr& collection ); void addFilteredCollection( const Tomahawk::collection_ptr& collection, unsigned int amount, DatabaseCommand_AllTracks::SortOrder order ); @@ -49,8 +49,6 @@ signals: void itemSizeChanged( const QModelIndex& index ); - void doneLoadingCollections(); - private slots: void onDataChanged(); diff --git a/src/libtomahawk/playlist/playlistmanager.cpp b/src/libtomahawk/playlist/playlistmanager.cpp index 9de989a64..faf1308e4 100644 --- a/src/libtomahawk/playlist/playlistmanager.cpp +++ b/src/libtomahawk/playlist/playlistmanager.cpp @@ -27,7 +27,6 @@ #include "widgets/welcomewidget.h" #include "widgets/infowidgets/sourceinfowidget.h" -#include "dynamic/widgets/LoadingSpinner.h" #define FILTER_TIMEOUT 280 @@ -48,7 +47,6 @@ PlaylistManager::PlaylistManager( QObject* parent ) , m_widget( new QWidget() ) , m_welcomeWidget( new WelcomeWidget() ) , m_currentMode( 0 ) - , m_loadingSpinner( 0 ) { s_instance = this; @@ -101,9 +99,6 @@ PlaylistManager::PlaylistManager( QObject* parent ) m_widget->layout()->setMargin( 0 ); m_widget->layout()->setSpacing( 0 ); - m_loadingSpinner = new LoadingSpinner( m_widget ); - connect( m_superCollectionFlatModel, SIGNAL( doneLoadingCollections() ), m_loadingSpinner, SLOT( fadeOut() ) ); - connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) ); connect( m_topbar, SIGNAL( filterTextChanged( QString ) ), @@ -256,8 +251,6 @@ PlaylistManager::show( const Tomahawk::collection_ptr& collection ) view->setFrameShape( QFrame::NoFrame ); view->setAttribute( Qt::WA_MacShowFocusRect, 0 ); - m_loadingSpinner->fadeIn(); - connect( model, SIGNAL( doneLoadingCollections() ), m_loadingSpinner, SLOT( fadeOut() ) ); model->addCollection( collection ); m_collectionViews.insert( collection, view ); @@ -339,18 +332,13 @@ PlaylistManager::showSuperCollection() QList< collection_ptr > toAdd; foreach( const Tomahawk::source_ptr& source, SourceList::instance()->sources() ) { - bool addedStuff = false; if ( !m_superCollections.contains( source->collection() ) ) { m_superCollections.append( source->collection() ); toAdd << source->collection(); m_superAlbumModel->addCollection( source->collection() ); - addedStuff = true; } - if ( addedStuff ) - m_loadingSpinner->fadeIn(); - m_superCollectionFlatModel->setTitle( tr( "All available tracks" ) ); m_superAlbumModel->setTitle( tr( "All available albums" ) ); } diff --git a/src/libtomahawk/playlist/playlistmanager.h b/src/libtomahawk/playlist/playlistmanager.h index a491fbd91..4cab2f398 100644 --- a/src/libtomahawk/playlist/playlistmanager.h +++ b/src/libtomahawk/playlist/playlistmanager.h @@ -11,7 +11,6 @@ #include "dllmacro.h" -class LoadingSpinner; class AnimatedSplitter; class AlbumModel; class AlbumView; @@ -144,7 +143,6 @@ private: CollectionFlatModel* m_superCollectionFlatModel; CollectionView* m_superCollectionView; WelcomeWidget* m_welcomeWidget; - LoadingSpinner* m_loadingSpinner; QList< Tomahawk::collection_ptr > m_superCollections; diff --git a/src/libtomahawk/playlist/trackmodel.h b/src/libtomahawk/playlist/trackmodel.h index 2f001d5b4..0cccabab7 100644 --- a/src/libtomahawk/playlist/trackmodel.h +++ b/src/libtomahawk/playlist/trackmodel.h @@ -70,6 +70,8 @@ signals: void trackCountChanged( unsigned int tracks ); + void loadingStarted(); + void loadingFinished(); public slots: virtual void setCurrentItem( const QModelIndex& index ); diff --git a/src/libtomahawk/playlist/trackview.cpp b/src/libtomahawk/playlist/trackview.cpp index bdc139773..696a9be4a 100644 --- a/src/libtomahawk/playlist/trackview.cpp +++ b/src/libtomahawk/playlist/trackview.cpp @@ -8,6 +8,7 @@ #include "audio/audioengine.h" #include "utils/tomahawkutils.h" #include "widgets/overlaywidget.h" +#include "dynamic/widgets/LoadingSpinner.h" #include "trackheader.h" #include "playlistmanager.h" @@ -25,6 +26,7 @@ TrackView::TrackView( QWidget* parent ) , m_delegate( 0 ) , m_header( new TrackHeader( this ) ) , m_overlay( new OverlayWidget( this ) ) + , m_loadingSpinner( new LoadingSpinner( this ) ) , m_resizing( false ) { setSortingEnabled( false ); @@ -92,6 +94,9 @@ TrackView::setModel( TrackModel* model ) } connect( m_model, SIGNAL( itemSizeChanged( QModelIndex ) ), SLOT( onItemResized( QModelIndex ) ) ); + connect( m_model, SIGNAL( loadingStarted() ), m_loadingSpinner, SLOT( fadeIn() ) ); + connect( m_model, SIGNAL( loadingFinished() ), m_loadingSpinner, SLOT( fadeOut() ) ); + connect( m_proxyModel, SIGNAL( filterChanged( QString ) ), SLOT( onFilterChanged( QString ) ) ); setAcceptDrops( true ); diff --git a/src/libtomahawk/playlist/trackview.h b/src/libtomahawk/playlist/trackview.h index 337d004a5..7702fc6aa 100644 --- a/src/libtomahawk/playlist/trackview.h +++ b/src/libtomahawk/playlist/trackview.h @@ -8,6 +8,7 @@ #include "dllmacro.h" +class LoadingSpinner; class PlaylistInterface; class TrackHeader; class TrackModel; @@ -67,6 +68,7 @@ private: PlaylistItemDelegate* m_delegate; TrackHeader* m_header; OverlayWidget* m_overlay; + LoadingSpinner* m_loadingSpinner; bool m_resizing; bool m_dragging;