diff --git a/src/libtomahawk/playlist/artistview.cpp b/src/libtomahawk/playlist/artistview.cpp index 8d558f8fe..c457b144d 100644 --- a/src/libtomahawk/playlist/artistview.cpp +++ b/src/libtomahawk/playlist/artistview.cpp @@ -25,6 +25,7 @@ #include #include "audio/audioengine.h" +#include "dynamic/widgets/LoadingSpinner.h" #include "tomahawksettings.h" #include "treeheader.h" @@ -44,6 +45,7 @@ ArtistView::ArtistView( QWidget* parent ) , m_model( 0 ) , m_proxyModel( 0 ) // , m_delegate( 0 ) + , m_loadingSpinner( new LoadingSpinner( this ) ) { setAlternatingRowColors( true ); setDragEnabled( true ); @@ -108,6 +110,9 @@ ArtistView::setModel( TreeModel* model ) m_proxyModel->sort( 0 ); } + 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( false ); diff --git a/src/libtomahawk/playlist/artistview.h b/src/libtomahawk/playlist/artistview.h index 6123905ec..1059b0b3d 100644 --- a/src/libtomahawk/playlist/artistview.h +++ b/src/libtomahawk/playlist/artistview.h @@ -29,6 +29,7 @@ #include "dllmacro.h" class TreeHeader; +class LoadingSpinner; class DLLEXPORT ArtistView : public QTreeView, public Tomahawk::ViewPage { @@ -80,6 +81,8 @@ private: TreeProxyModel* m_proxyModel; // PlaylistItemDelegate* m_delegate; + LoadingSpinner* m_loadingSpinner; + QTimer m_timer; }; diff --git a/src/libtomahawk/playlist/trackview.h b/src/libtomahawk/playlist/trackview.h index c14b42692..5d808bf31 100644 --- a/src/libtomahawk/playlist/trackview.h +++ b/src/libtomahawk/playlist/trackview.h @@ -82,6 +82,7 @@ private slots: void onFilterChanged( const QString& filter ); void copyLink(); + private: QString m_guid; TrackModel* m_model; diff --git a/src/libtomahawk/playlist/treemodel.cpp b/src/libtomahawk/playlist/treemodel.cpp index 28feb59d8..16b488257 100644 --- a/src/libtomahawk/playlist/treemodel.cpp +++ b/src/libtomahawk/playlist/treemodel.cpp @@ -361,6 +361,7 @@ TreeModel::addAllCollections() { qDebug() << Q_FUNC_INFO; + emit loadingStarted(); DatabaseCommand_AllArtists* cmd = new DatabaseCommand_AllArtists(); connect( cmd, SIGNAL( artists( QList ) ), @@ -377,6 +378,7 @@ TreeModel::addAlbums( const artist_ptr& artist, const QModelIndex& parent ) { qDebug() << Q_FUNC_INFO; + emit loadingStarted(); DatabaseCommand_AllAlbums* cmd = new DatabaseCommand_AllAlbums( m_collection, artist ); cmd->setData( parent.row() ); @@ -392,6 +394,7 @@ TreeModel::addTracks( const album_ptr& album, const QModelIndex& parent ) { qDebug() << Q_FUNC_INFO; + emit loadingStarted(); DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection ); cmd->setAlbum( album.data() ); // cmd->setArtist( album->artist().data() ); @@ -479,6 +482,7 @@ TreeModel::onArtistsAdded( const QList& artists ) emit endInsertRows(); qDebug() << rowCount( QModelIndex() ); + emit loadingFinished(); } @@ -525,6 +529,7 @@ TreeModel::onAlbumsAdded( const QList& albums, const QVaria emit dataChanged( albumitem->index, albumitem->index.sibling( albumitem->index.row(), columnCount( QModelIndex() ) - 1 ) ); qDebug() << rowCount( parent ); + emit loadingFinished(); } @@ -566,6 +571,7 @@ TreeModel::onTracksAdded( const QList& tracks, const QVaria emit dataChanged( item->index, item->index.sibling( item->index.row(), columnCount( QModelIndex() ) - 1 ) ); qDebug() << rowCount( parent ); + emit loadingFinished(); } diff --git a/src/libtomahawk/playlist/treemodel.h b/src/libtomahawk/playlist/treemodel.h index 002471f1b..4841ceee0 100644 --- a/src/libtomahawk/playlist/treemodel.h +++ b/src/libtomahawk/playlist/treemodel.h @@ -110,6 +110,9 @@ signals: void trackCountChanged( unsigned int tracks ); + void loadingStarted(); + void loadingFinished(); + protected: bool canFetchMore( const QModelIndex& parent ) const; void fetchMore( const QModelIndex& parent );