mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-01 03:40:16 +02:00
Lazyload Network Activities
This commit is contained in:
@@ -497,7 +497,6 @@ ViewPage *ViewManager::showNetworkActivityPage()
|
|||||||
if ( !m_networkActivityWidget )
|
if ( !m_networkActivityWidget )
|
||||||
{
|
{
|
||||||
m_networkActivityWidget = new NetworkActivityWidget( m_widget );
|
m_networkActivityWidget = new NetworkActivityWidget( m_widget );
|
||||||
m_networkActivityWidget->fetchData();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return show( m_networkActivityWidget );
|
return show( m_networkActivityWidget );
|
||||||
|
@@ -30,6 +30,12 @@ DatabaseCommand_NetworkCharts::DatabaseCommand_NetworkCharts( const QDateTime &f
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DatabaseCommand_NetworkCharts::DatabaseCommand_NetworkCharts( QObject *parent )
|
||||||
|
: DatabaseCommand( parent )
|
||||||
|
, m_amount( 0 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
DatabaseCommand_NetworkCharts::~DatabaseCommand_NetworkCharts()
|
DatabaseCommand_NetworkCharts::~DatabaseCommand_NetworkCharts()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -44,17 +50,23 @@ DatabaseCommand_NetworkCharts::exec( DatabaseImpl * dbi )
|
|||||||
{
|
{
|
||||||
limit = QString( "LIMIT 0, %1" ).arg( m_amount );
|
limit = QString( "LIMIT 0, %1" ).arg( m_amount );
|
||||||
}
|
}
|
||||||
|
QString timespan;
|
||||||
|
if ( m_from.isValid() && m_to.isValid() )
|
||||||
|
{
|
||||||
|
timespan = QString(
|
||||||
|
" AND playback_log.playtime >= %1 AND playback_log.playtime <= %2 "
|
||||||
|
).arg( m_from.toTime_t() ).arg( m_to.toTime_t() );
|
||||||
|
}
|
||||||
|
|
||||||
QString sql = QString(
|
QString sql = QString(
|
||||||
"SELECT COUNT(*) as counter, track.name, artist.name "
|
"SELECT COUNT(*) as counter, track.name, artist.name "
|
||||||
" FROM playback_log, track, artist "
|
" FROM playback_log, track, artist "
|
||||||
" WHERE track.id = playback_log.track AND artist.id = track.artist "
|
" WHERE track.id = playback_log.track AND artist.id = track.artist "
|
||||||
" AND playback_log.playtime >= %1 AND playback_log.playtime <= %2 " // incorportrate timespan
|
" AND playback_log.source IS NOT NULL %1 " // exclude self
|
||||||
" AND playback_log.source IS NOT NULL " // exclude self
|
|
||||||
" GROUP BY playback_log.track "
|
" GROUP BY playback_log.track "
|
||||||
" ORDER BY counter DESC "
|
" ORDER BY counter DESC "
|
||||||
" %3"
|
" %2"
|
||||||
).arg( m_from.toTime_t() ).arg( m_to.toTime_t() ).arg( limit );
|
).arg( timespan ).arg( limit );
|
||||||
|
|
||||||
query.prepare( sql );
|
query.prepare( sql );
|
||||||
query.exec();
|
query.exec();
|
||||||
@@ -71,4 +83,3 @@ DatabaseCommand_NetworkCharts::exec( DatabaseImpl * dbi )
|
|||||||
|
|
||||||
emit done( tracks );
|
emit done( tracks );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,6 +31,7 @@ class DLLEXPORT DatabaseCommand_NetworkCharts : public DatabaseCommand
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
explicit DatabaseCommand_NetworkCharts( QObject* parent = 0 );
|
||||||
explicit DatabaseCommand_NetworkCharts( const QDateTime& from, const QDateTime& to, QObject* parent = 0 );
|
explicit DatabaseCommand_NetworkCharts( const QDateTime& from, const QDateTime& to, QObject* parent = 0 );
|
||||||
virtual ~DatabaseCommand_NetworkCharts();
|
virtual ~DatabaseCommand_NetworkCharts();
|
||||||
|
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "database/DatabaseCommand_NetworkCharts.h"
|
#include "database/DatabaseCommand_NetworkCharts.h"
|
||||||
#include "playlist/PlaylistChartItemDelegate.h"
|
#include "playlist/PlaylistChartItemDelegate.h"
|
||||||
#include "utils/AnimatedSpinner.h"
|
#include "utils/AnimatedSpinner.h"
|
||||||
|
#include "utils/Logger.h"
|
||||||
#include "utils/TomahawkUtilsGui.h"
|
#include "utils/TomahawkUtilsGui.h"
|
||||||
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
@@ -65,10 +66,26 @@ NetworkActivityWidget::NetworkActivityWidget( QWidget* parent )
|
|||||||
|
|
||||||
d_func()->playlistInterface = d_func()->ui->tracksViewLeft->playlistInterface();
|
d_func()->playlistInterface = d_func()->ui->tracksViewLeft->playlistInterface();
|
||||||
|
|
||||||
// Lets have a spinner until loaded
|
// Build up breadcrumb
|
||||||
d_func()->ui->breadCrumbLeft->setVisible( false );
|
QStandardItem* rootItem = d_func()->crumbModelLeft->invisibleRootItem();
|
||||||
d_func()->spinner = new AnimatedSpinner( d_func()->ui->tracksViewLeft );
|
QStandardItem* chartItem = new QStandardItem( tr( "Charts" ) );
|
||||||
d_func()->spinner->fadeIn();
|
rootItem->appendRow( chartItem );
|
||||||
|
QStandardItem* weekItem = new QStandardItem( tr( "Last Week" ) );
|
||||||
|
weekItem->setData( WeekChart, Breadcrumb::DefaultRole );
|
||||||
|
chartItem->appendRow( weekItem );
|
||||||
|
QStandardItem* monthItem = new QStandardItem( tr( "Last Month" ) );
|
||||||
|
monthItem->setData( MonthChart, Breadcrumb::DefaultRole );
|
||||||
|
chartItem->appendRow( monthItem );
|
||||||
|
QStandardItem* yearItem = new QStandardItem( tr( "Last Year" ) );
|
||||||
|
yearItem->setData( YearChart, Breadcrumb::DefaultRole );
|
||||||
|
chartItem->appendRow( yearItem );
|
||||||
|
QStandardItem* overallItem = new QStandardItem( tr( "Overall" ) );
|
||||||
|
overallItem->setData( OverallChart, Breadcrumb::DefaultRole );
|
||||||
|
chartItem->appendRow( overallItem );
|
||||||
|
d_func()->sortedProxy->setSourceModel( d_func()->crumbModelLeft );
|
||||||
|
d_func()->sortedProxy->sort( 0, Qt::AscendingOrder );
|
||||||
|
d_func()->ui->breadCrumbLeft->setModel( d_func()->sortedProxy );
|
||||||
|
d_func()->ui->breadCrumbLeft->setVisible( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -105,24 +122,18 @@ NetworkActivityWidget::jumpToCurrentTrack()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
NetworkActivityWidget::fetchData()
|
|
||||||
{
|
|
||||||
// Do not block the UI thread
|
|
||||||
QtConcurrent::run( this, &NetworkActivityWidget::actualFetchData );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
NetworkActivityWidget::weeklyCharts( const QList<Tomahawk::track_ptr>& tracks )
|
NetworkActivityWidget::weeklyCharts( const QList<Tomahawk::track_ptr>& tracks )
|
||||||
{
|
{
|
||||||
d_func()->weeklyChartsModel = new PlaylistModel( d_func()->ui->tracksViewLeft );
|
d_func()->weeklyChartsModel = new PlaylistModel( d_func()->ui->tracksViewLeft );
|
||||||
d_func()->weeklyChartsModel->startLoading();
|
d_func()->weeklyChartsModel->startLoading();
|
||||||
// Pipeline::instance()->resolve( tracks );
|
|
||||||
d_func()->weeklyChartsModel->appendTracks( tracks );
|
d_func()->weeklyChartsModel->appendTracks( tracks );
|
||||||
d_func()->weeklyChartsModel->finishLoading();
|
d_func()->weeklyChartsModel->finishLoading();
|
||||||
|
|
||||||
checkDone();
|
if ( d_func()->activeView == WeekChart )
|
||||||
|
{
|
||||||
|
showWeekCharts();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -131,11 +142,13 @@ NetworkActivityWidget::monthlyCharts( const QList<Tomahawk::track_ptr>& tracks )
|
|||||||
{
|
{
|
||||||
d_func()->monthlyChartsModel = new PlaylistModel( d_func()->ui->tracksViewLeft );
|
d_func()->monthlyChartsModel = new PlaylistModel( d_func()->ui->tracksViewLeft );
|
||||||
d_func()->monthlyChartsModel->startLoading();
|
d_func()->monthlyChartsModel->startLoading();
|
||||||
// Pipeline::instance()->resolve( tracks );
|
|
||||||
d_func()->monthlyChartsModel->appendTracks( tracks );
|
d_func()->monthlyChartsModel->appendTracks( tracks );
|
||||||
d_func()->monthlyChartsModel->finishLoading();
|
d_func()->monthlyChartsModel->finishLoading();
|
||||||
|
|
||||||
checkDone();
|
if ( d_func()->activeView == MonthChart )
|
||||||
|
{
|
||||||
|
showMonthCharts();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -144,11 +157,27 @@ NetworkActivityWidget::yearlyCharts( const QList<Tomahawk::track_ptr>& tracks )
|
|||||||
{
|
{
|
||||||
d_func()->yearlyChartsModel = new PlaylistModel( d_func()->ui->tracksViewLeft );
|
d_func()->yearlyChartsModel = new PlaylistModel( d_func()->ui->tracksViewLeft );
|
||||||
d_func()->yearlyChartsModel->startLoading();
|
d_func()->yearlyChartsModel->startLoading();
|
||||||
// Pipeline::instance()->resolve( tracks );
|
|
||||||
d_func()->yearlyChartsModel->appendTracks( tracks );
|
d_func()->yearlyChartsModel->appendTracks( tracks );
|
||||||
d_func()->yearlyChartsModel->finishLoading();
|
d_func()->yearlyChartsModel->finishLoading();
|
||||||
|
|
||||||
checkDone();
|
if ( d_func()->activeView == YearChart )
|
||||||
|
{
|
||||||
|
showYearCharts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkActivityWidget::overallCharts( const QList<track_ptr>& tracks )
|
||||||
|
{
|
||||||
|
d_func()->overallChartsModel = new PlaylistModel( d_func()->ui->tracksViewLeft );
|
||||||
|
d_func()->overallChartsModel->startLoading();
|
||||||
|
d_func()->overallChartsModel->appendTracks( tracks );
|
||||||
|
d_func()->overallChartsModel->finishLoading();
|
||||||
|
|
||||||
|
if ( d_func()->activeView == OverallChart )
|
||||||
|
{
|
||||||
|
showOverallCharts();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -158,51 +187,33 @@ NetworkActivityWidget::leftCrumbIndexChanged( const QModelIndex& index )
|
|||||||
QStandardItem* item = d_func()->crumbModelLeft->itemFromIndex( d_func()->sortedProxy->mapToSource( index ) );
|
QStandardItem* item = d_func()->crumbModelLeft->itemFromIndex( d_func()->sortedProxy->mapToSource( index ) );
|
||||||
if ( !item )
|
if ( !item )
|
||||||
return;
|
return;
|
||||||
if ( !item->data( Breadcrumb::ChartIdRole ).isValid() )
|
if ( !item->data( Breadcrumb::DefaultRole ).isValid() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const QString chartId = item->data( Breadcrumb::ChartIdRole ).toString();
|
int chartId = item->data( Breadcrumb::DefaultRole ).toInt();
|
||||||
if ( chartId == NETWORKCHARTS_WEEK_CHARTS )
|
tLog( LOGVERBOSE ) << Q_FUNC_INFO << "Showing chart" << chartId;
|
||||||
|
switch ( chartId )
|
||||||
{
|
{
|
||||||
d_func()->ui->tracksViewLeft->proxyModel()->setStyle( PlayableProxyModel::Large );
|
case WeekChart:
|
||||||
d_func()->ui->tracksViewLeft->setPlaylistModel( d_func()->weeklyChartsModel );
|
showWeekCharts();
|
||||||
d_func()->ui->tracksViewLeft->proxyModel()->sort( -1 );
|
break;
|
||||||
}
|
case MonthChart:
|
||||||
else if ( chartId == NETWORKCHARTS_MONTH_CHARTS )
|
showMonthCharts();
|
||||||
{
|
break;
|
||||||
d_func()->ui->tracksViewLeft->proxyModel()->setStyle( PlayableProxyModel::Large );
|
case YearChart:
|
||||||
d_func()->ui->tracksViewLeft->setPlaylistModel( d_func()->monthlyChartsModel );
|
showYearCharts();
|
||||||
d_func()->ui->tracksViewLeft->proxyModel()->sort( -1 );
|
break;
|
||||||
}
|
case OverallChart:
|
||||||
else if ( chartId == NETWORKCHARTS_YEAR_CHARTS )
|
showOverallCharts();
|
||||||
{
|
break;
|
||||||
d_func()->ui->tracksViewLeft->proxyModel()->setStyle( PlayableProxyModel::Large );
|
|
||||||
d_func()->ui->tracksViewLeft->setPlaylistModel( d_func()->yearlyChartsModel );
|
|
||||||
d_func()->ui->tracksViewLeft->proxyModel()->sort( -1 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
NetworkActivityWidget::actualFetchData()
|
NetworkActivityWidget::fetchYearCharts()
|
||||||
{
|
{
|
||||||
QDateTime to = QDateTime::currentDateTime();
|
QDateTime to = QDateTime::currentDateTime();
|
||||||
|
|
||||||
// Weekly charts
|
|
||||||
QDateTime weekAgo = to.addDays( -7 );
|
|
||||||
DatabaseCommand_NetworkCharts* weekCharts = new DatabaseCommand_NetworkCharts( weekAgo, to );
|
|
||||||
weekCharts->setLimit( NETWORKCHARTS_NUM_TRACKS );
|
|
||||||
connect( weekCharts, SIGNAL( done( QList<Tomahawk::track_ptr> ) ), SLOT( weeklyCharts( QList<Tomahawk::track_ptr> ) ) );
|
|
||||||
Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( weekCharts ) );
|
|
||||||
|
|
||||||
// Monthly charts
|
|
||||||
QDateTime monthAgo = to.addMonths( -1 );
|
|
||||||
DatabaseCommand_NetworkCharts* monthCharts = new DatabaseCommand_NetworkCharts( monthAgo, to );
|
|
||||||
monthCharts->setLimit( NETWORKCHARTS_NUM_TRACKS );
|
|
||||||
connect( monthCharts, SIGNAL( done( QList<Tomahawk::track_ptr> ) ), SLOT( monthlyCharts( QList<Tomahawk::track_ptr> ) ) );
|
|
||||||
Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( monthCharts ) );
|
|
||||||
|
|
||||||
// Yearly charts
|
|
||||||
QDateTime yearAgo = to.addYears( -1 );
|
QDateTime yearAgo = to.addYears( -1 );
|
||||||
DatabaseCommand_NetworkCharts* yearCharts = new DatabaseCommand_NetworkCharts( yearAgo, to );
|
DatabaseCommand_NetworkCharts* yearCharts = new DatabaseCommand_NetworkCharts( yearAgo, to );
|
||||||
yearCharts->setLimit( NETWORKCHARTS_NUM_TRACKS );
|
yearCharts->setLimit( NETWORKCHARTS_NUM_TRACKS );
|
||||||
@@ -210,32 +221,98 @@ NetworkActivityWidget::actualFetchData()
|
|||||||
Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( yearCharts ) );
|
Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( yearCharts ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkActivityWidget::fetchOverallCharts()
|
||||||
|
{
|
||||||
|
DatabaseCommand_NetworkCharts* overallCharts = new DatabaseCommand_NetworkCharts();
|
||||||
|
overallCharts->setLimit( NETWORKCHARTS_NUM_TRACKS );
|
||||||
|
connect( overallCharts, SIGNAL( done( QList<Tomahawk::track_ptr> ) ), SLOT( overallCharts( QList<Tomahawk::track_ptr> ) ) );
|
||||||
|
Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( overallCharts ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
NetworkActivityWidget::checkDone()
|
NetworkActivityWidget::fetchWeekCharts()
|
||||||
{
|
{
|
||||||
if ( !d_func()->weeklyChartsModel.isNull() && !d_func()->yearlyChartsModel.isNull() && !d_func()->monthlyChartsModel.isNull() )
|
QDateTime to = QDateTime::currentDateTime();
|
||||||
|
QDateTime weekAgo = to.addDays( -7 );
|
||||||
|
DatabaseCommand_NetworkCharts* weekCharts = new DatabaseCommand_NetworkCharts( weekAgo, to );
|
||||||
|
weekCharts->setLimit( NETWORKCHARTS_NUM_TRACKS );
|
||||||
|
connect( weekCharts, SIGNAL( done( QList<Tomahawk::track_ptr> ) ), SLOT( weeklyCharts( QList<Tomahawk::track_ptr> ) ) );
|
||||||
|
Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( weekCharts ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkActivityWidget::fetchMonthCharts()
|
||||||
{
|
{
|
||||||
// All charts are loaded, do the remaining work UI work.
|
QDateTime to = QDateTime::currentDateTime();
|
||||||
|
QDateTime monthAgo = to.addMonths( -1 );
|
||||||
|
DatabaseCommand_NetworkCharts* monthCharts = new DatabaseCommand_NetworkCharts( monthAgo, to );
|
||||||
|
monthCharts->setLimit( NETWORKCHARTS_NUM_TRACKS );
|
||||||
|
connect( monthCharts, SIGNAL( done( QList<Tomahawk::track_ptr> ) ), SLOT( monthlyCharts( QList<Tomahawk::track_ptr> ) ) );
|
||||||
|
Database::instance()->enqueue( QSharedPointer< DatabaseCommand >( monthCharts ) );
|
||||||
|
}
|
||||||
|
|
||||||
// Build up breadcrumb
|
|
||||||
QStandardItem* rootItem = d_func()->crumbModelLeft->invisibleRootItem();
|
|
||||||
QStandardItem* chartItem = new QStandardItem( tr( "Charts" ) );
|
|
||||||
rootItem->appendRow( chartItem );
|
|
||||||
QStandardItem* weekItem = new QStandardItem( tr( "Last Week" ) );
|
|
||||||
weekItem->setData( NETWORKCHARTS_WEEK_CHARTS, Breadcrumb::ChartIdRole );
|
|
||||||
chartItem->appendRow( weekItem );
|
|
||||||
QStandardItem* monthItem = new QStandardItem( tr( "Last Month" ) );
|
|
||||||
monthItem->setData( NETWORKCHARTS_MONTH_CHARTS, Breadcrumb::ChartIdRole );
|
|
||||||
chartItem->appendRow( monthItem );
|
|
||||||
QStandardItem* yearItem = new QStandardItem( tr( "Last Year" ) );
|
|
||||||
yearItem->setData( NETWORKCHARTS_YEAR_CHARTS, Breadcrumb::ChartIdRole );
|
|
||||||
chartItem->appendRow( yearItem );
|
|
||||||
d_func()->sortedProxy->setSourceModel( d_func()->crumbModelLeft );
|
|
||||||
d_func()->sortedProxy->sort( 0, Qt::AscendingOrder );
|
|
||||||
d_func()->ui->breadCrumbLeft->setModel( d_func()->sortedProxy );
|
|
||||||
|
|
||||||
d_func()->spinner->fadeOut();
|
void
|
||||||
d_func()->ui->breadCrumbLeft->setVisible( true );
|
NetworkActivityWidget::showWeekCharts()
|
||||||
|
{
|
||||||
|
d_func()->activeView = WeekChart;
|
||||||
|
if ( !d_func()->weeklyChartsModel.isNull() )
|
||||||
|
{
|
||||||
|
d_func()->ui->tracksViewLeft->proxyModel()->setStyle( PlayableProxyModel::Large );
|
||||||
|
d_func()->ui->tracksViewLeft->setPlaylistModel( d_func()->weeklyChartsModel );
|
||||||
|
d_func()->ui->tracksViewLeft->proxyModel()->sort( -1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fetchWeekCharts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkActivityWidget::showMonthCharts()
|
||||||
|
{
|
||||||
|
d_func()->activeView = MonthChart;
|
||||||
|
if ( !d_func()->monthlyChartsModel.isNull() )
|
||||||
|
{
|
||||||
|
d_func()->ui->tracksViewLeft->proxyModel()->setStyle( PlayableProxyModel::Large );
|
||||||
|
d_func()->ui->tracksViewLeft->setPlaylistModel( d_func()->monthlyChartsModel );
|
||||||
|
d_func()->ui->tracksViewLeft->proxyModel()->sort( -1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fetchMonthCharts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
NetworkActivityWidget::showYearCharts()
|
||||||
|
{
|
||||||
|
d_func()->activeView = YearChart;
|
||||||
|
if ( !d_func()->yearlyChartsModel.isNull() )
|
||||||
|
{
|
||||||
|
d_func()->ui->tracksViewLeft->proxyModel()->setStyle( PlayableProxyModel::Large );
|
||||||
|
d_func()->ui->tracksViewLeft->setPlaylistModel( d_func()->yearlyChartsModel );
|
||||||
|
d_func()->ui->tracksViewLeft->proxyModel()->sort( -1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fetchYearCharts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NetworkActivityWidget::showOverallCharts()
|
||||||
|
{
|
||||||
|
d_func()->activeView = OverallChart;
|
||||||
|
if ( !d_func()->overallChartsModel.isNull() )
|
||||||
|
{
|
||||||
|
d_func()->ui->tracksViewLeft->proxyModel()->setStyle( PlayableProxyModel::Large );
|
||||||
|
d_func()->ui->tracksViewLeft->setPlaylistModel( d_func()->overallChartsModel );
|
||||||
|
d_func()->ui->tracksViewLeft->proxyModel()->sort( -1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fetchOverallCharts();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -36,6 +36,7 @@ class NetworkActivityWidget : public QWidget, public Tomahawk::ViewPage
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
enum ViewType { WeekChart = 1, MonthChart = 2, YearChart = 3, OverallChart = 4 };
|
||||||
NetworkActivityWidget(QWidget* parent = 0);
|
NetworkActivityWidget(QWidget* parent = 0);
|
||||||
~NetworkActivityWidget();
|
~NetworkActivityWidget();
|
||||||
|
|
||||||
@@ -49,20 +50,26 @@ public:
|
|||||||
virtual bool isBeingPlayed() const;
|
virtual bool isBeingPlayed() const;
|
||||||
|
|
||||||
virtual bool jumpToCurrentTrack();
|
virtual bool jumpToCurrentTrack();
|
||||||
|
|
||||||
void fetchData();
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void weeklyCharts( const QList<Tomahawk::track_ptr>& );
|
void weeklyCharts( const QList<Tomahawk::track_ptr>& );
|
||||||
void monthlyCharts( const QList<Tomahawk::track_ptr>& );
|
void monthlyCharts( const QList<Tomahawk::track_ptr>& );
|
||||||
void yearlyCharts( const QList<Tomahawk::track_ptr>& );
|
void yearlyCharts( const QList<Tomahawk::track_ptr>& );
|
||||||
|
void overallCharts( const QList<Tomahawk::track_ptr>& );
|
||||||
|
|
||||||
void leftCrumbIndexChanged( const QModelIndex& );
|
void leftCrumbIndexChanged( const QModelIndex& );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void actualFetchData();
|
void fetchWeekCharts();
|
||||||
void checkDone();
|
void fetchMonthCharts();
|
||||||
|
void fetchYearCharts();
|
||||||
|
void fetchOverallCharts();
|
||||||
|
|
||||||
|
void showWeekCharts();
|
||||||
|
void showMonthCharts();
|
||||||
|
void showYearCharts();
|
||||||
|
void showOverallCharts();
|
||||||
|
|
||||||
Q_DECLARE_PRIVATE( NetworkActivityWidget )
|
Q_DECLARE_PRIVATE( NetworkActivityWidget )
|
||||||
NetworkActivityWidgetPrivate* d_ptr;
|
NetworkActivityWidgetPrivate* d_ptr;
|
||||||
|
@@ -37,13 +37,14 @@ public:
|
|||||||
private:
|
private:
|
||||||
QSharedPointer<Ui::NetworkActivityWidget> ui;
|
QSharedPointer<Ui::NetworkActivityWidget> ui;
|
||||||
Tomahawk::playlistinterface_ptr playlistInterface;
|
Tomahawk::playlistinterface_ptr playlistInterface;
|
||||||
AnimatedSpinner* spinner;
|
|
||||||
QStandardItemModel* crumbModelLeft;
|
QStandardItemModel* crumbModelLeft;
|
||||||
QSortFilterProxyModel* sortedProxy;
|
QSortFilterProxyModel* sortedProxy;
|
||||||
|
|
||||||
QPointer<PlaylistModel> weeklyChartsModel;
|
QPointer<PlaylistModel> weeklyChartsModel;
|
||||||
QPointer<PlaylistModel> monthlyChartsModel;
|
QPointer<PlaylistModel> monthlyChartsModel;
|
||||||
QPointer<PlaylistModel> yearlyChartsModel;
|
QPointer<PlaylistModel> yearlyChartsModel;
|
||||||
|
QPointer<PlaylistModel> overallChartsModel;
|
||||||
|
NetworkActivityWidget::ViewType activeView;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // NETWORKACTIVITYWIDGET_P_H
|
#endif // NETWORKACTIVITYWIDGET_P_H
|
||||||
|
Reference in New Issue
Block a user