1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-02-22 19:05:05 +01:00

Lazy load NewReleasesWidget

This commit is contained in:
Hugo Lindström 2013-04-01 21:29:41 +02:00
parent bd6303a6e6
commit 94116cd7f2
3 changed files with 35 additions and 14 deletions

View File

@ -76,7 +76,7 @@ ViewManager::ViewManager( QObject* parent )
, m_widget( new QWidget() )
, m_welcomeWidget( new WelcomeWidget() )
, m_whatsHotWidget( 0 )
, m_newReleasesWidget( new NewReleasesWidget() )
, m_newReleasesWidget( 0 )
, m_recentPlaysWidget( 0 )
, m_currentPage( 0 )
, m_loaded( false )
@ -110,7 +110,6 @@ ViewManager::ViewManager( QObject* parent )
connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) );
connect( m_infobar, SIGNAL( filterTextChanged( QString ) ), SLOT( setFilter( QString ) ) );
connect( this, SIGNAL( tomahawkLoaded() ), m_newReleasesWidget, SLOT( fetchData() ) );
connect( this, SIGNAL( tomahawkLoaded() ), m_welcomeWidget, SLOT( loadData() ) );
/* connect( m_infobar, SIGNAL( flatMode() ), SLOT( setTableMode() ) );
@ -387,6 +386,13 @@ ViewManager::showWhatsHotPage()
Tomahawk::ViewPage*
ViewManager::showNewReleasesPage()
{
if ( !m_newReleasesWidget )
{
m_newReleasesWidget = new NewReleasesWidget();
m_newReleasesWidget->fetchData();
}
return show( m_newReleasesWidget );
}

View File

@ -36,7 +36,7 @@
#include "utils/TomahawkUtilsGui.h"
#include "utils/Logger.h"
#include "Pipeline.h"
#include "utils/AnimatedSpinner.h"
#include <QPainter>
#include <QStandardItemModel>
#include <QStandardItem>
@ -56,6 +56,8 @@ NewReleasesWidget::NewReleasesWidget( QWidget* parent )
, ui( new Ui::NewReleasesWidget )
, m_sortedProxy( 0 )
, m_workerThread( 0 )
, m_spinner( 0 )
, m_loading( true )
{
ui->setupUi( this );
@ -72,8 +74,6 @@ NewReleasesWidget::NewReleasesWidget( QWidget* parent )
connect( ui->breadCrumbLeft, SIGNAL( activateIndex( QModelIndex ) ), SLOT( leftCrumbIndexChanged(QModelIndex) ) );
//m_playlistInterface = Tomahawk::playlistinterface_ptr( new ChartsPlaylistInterface( this ) );
m_workerThread = new QThread( this );
m_workerThread->start();
@ -82,6 +82,10 @@ NewReleasesWidget::NewReleasesWidget( QWidget* parent )
SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ) );
connect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( finished( QString ) ), SLOT( infoSystemFinished( QString ) ) );
ui->breadCrumbLeft->setVisible( false );
m_spinner = new AnimatedSpinner( ui->albumsView );
m_spinner->fadeIn();
}
@ -91,6 +95,7 @@ NewReleasesWidget::~NewReleasesWidget()
m_workers.clear();
m_workerThread->exit(0);
m_playlistInterface.clear();
delete m_spinner;
delete ui;
}
@ -152,7 +157,7 @@ NewReleasesWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData request
case InfoSystem::InfoNewReleaseCapabilities:
{
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Got InfoNewReleaseCapabilities";
QStandardItem *rootItem= m_crumbModelLeft->invisibleRootItem();
QStandardItem *rootItem = m_crumbModelLeft->invisibleRootItem();
foreach ( const QString label, returnedData.keys() )
{
@ -160,10 +165,6 @@ NewReleasesWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData request
rootItem->appendRow(childItem);
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "NewReleases:" << label;
}
m_sortedProxy->setSourceModel( m_crumbModelLeft );
m_sortedProxy->sort( 0, Qt::AscendingOrder );
ui->breadCrumbLeft->setModel( m_sortedProxy );
break;
}
@ -216,7 +217,21 @@ NewReleasesWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData request
void
NewReleasesWidget::infoSystemFinished( QString target )
{
Q_UNUSED( target );
if( m_loading )
{
if ( target != s_newReleasesIdentifier )
{
return;
}
m_sortedProxy->setSourceModel( m_crumbModelLeft );
m_sortedProxy->sort( 0, Qt::AscendingOrder );
ui->breadCrumbLeft->setModel( m_sortedProxy );
m_spinner->fadeOut();
ui->breadCrumbLeft->setVisible( true );
m_loading = false;
}
}

View File

@ -40,7 +40,7 @@ class PlaylistModel;
class TreeProxyModel;
class AlbumModel;
class PlayableModel;
class AnimatedSpinner;
namespace Ui
{
class NewReleasesWidget;
@ -115,8 +115,8 @@ private:
QHash< QString, PlayableModel* > m_albumModels;
QString m_queueItemToShow;
QSet< QString > m_queuedFetches;
QTimer* m_timer;
AnimatedSpinner* m_spinner;
bool m_loading;
friend class Tomahawk::ChartsPlaylistInterface;
};