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:
parent
bd6303a6e6
commit
94116cd7f2
@ -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 );
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user