From 2e04ed35d2a308577e24ef739525eb48867b337d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 26 Sep 2014 08:07:20 +0200 Subject: [PATCH] * Display artist charts as a Grid. --- src/viewpages/charts/ChartsWidget.cpp | 40 ++++++++++----------------- src/viewpages/charts/ChartsWidget.h | 4 +-- src/viewpages/charts/ChartsWidget.ui | 14 +--------- 3 files changed, 17 insertions(+), 41 deletions(-) diff --git a/src/viewpages/charts/ChartsWidget.cpp b/src/viewpages/charts/ChartsWidget.cpp index de7ccb5d2..02067adb7 100644 --- a/src/viewpages/charts/ChartsWidget.cpp +++ b/src/viewpages/charts/ChartsWidget.cpp @@ -28,9 +28,11 @@ #include "Pipeline.h" #include "audio/AudioEngine.h" +#include "playlist/GridItemDelegate.h" #include "playlist/PlaylistChartItemDelegate.h" #include "widgets/ChartDataLoader.h" #include "utils/AnimatedSpinner.h" +#include "utils/DpiScaler.h" #include "utils/Logger.h" #include "utils/TomahawkUtilsGui.h" @@ -78,15 +80,9 @@ ChartsWidget::ChartsWidget( QWidget* parent ) ui->tracksViewLeft->setPlaylistItemDelegate( del ); ui->tracksViewLeft->setUniformRowHeights( false ); - TreeProxyModel* artistsProxy = new TreeProxyModel( ui->artistsViewLeft ); - artistsProxy->setFilterCaseSensitivity( Qt::CaseInsensitive ); - artistsProxy->setDynamicSortFilter( true ); - - ui->artistsViewLeft->setProxyModel( artistsProxy ); - ui->artistsViewLeft->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); - ui->artistsViewLeft->header()->setVisible( true ); - -// ui->albumsView->setStyleSheet( QString( "QListView { background-color: black; }" ) ); + ui->artistsView->setItemSize( TomahawkUtils::DpiScaler::scaled( this, QSize( 170, 170 + 38 ) ) ); + ui->artistsView->delegate()->setShowPosition( true ); + ui->albumsView->delegate()->setShowPosition( true ); m_workerThread = new QThread( this ); m_workerThread->start(); @@ -99,11 +95,11 @@ ChartsWidget::ChartsWidget( QWidget* parent ) // Read last viewed charts, to be used as defaults m_currentVIds = TomahawkSettings::instance()->lastChartIds(); - tDebug( LOGVERBOSE ) << "Re-loading last chartIds:" << m_currentVIds; + tDebug( LOGVERBOSE ) << "Reloading last chartIds:" << m_currentVIds; MetaPlaylistInterface* mpl = new MetaPlaylistInterface(); mpl->addChildInterface( ui->tracksViewLeft->playlistInterface() ); - mpl->addChildInterface( ui->artistsViewLeft->proxyModel()->playlistInterface() ); + mpl->addChildInterface( ui->artistsView->playlistInterface() ); mpl->addChildInterface( ui->albumsView->playlistInterface() ); m_playlistInterface = playlistinterface_ptr( mpl ); @@ -150,7 +146,7 @@ ChartsWidget::isBeingPlayed() const bool ChartsWidget::jumpToCurrentTrack() { - if ( ui->artistsViewLeft->model() && ui->artistsViewLeft->jumpToCurrentTrack() ) + if ( ui->artistsView->model() && ui->artistsView->jumpToCurrentTrack() ) return true; if ( ui->tracksViewLeft->model() && ui->tracksViewLeft->jumpToCurrentTrack() ) @@ -250,8 +246,7 @@ ChartsWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, connect( loader, SIGNAL( artists( Tomahawk::ChartDataLoader*, QList< Tomahawk::artist_ptr > ) ), SLOT( chartArtistsLoaded( Tomahawk::ChartDataLoader*, QList< Tomahawk::artist_ptr > ) ) ); - TreeModel* artistsModel = new TreeModel( ui->artistsViewLeft ); - artistsModel->setMode( InfoSystemMode ); + PlayableModel* artistsModel = new PlayableModel( ui->artistsView ); artistsModel->startLoading(); m_artistModels[ chartId ] = artistsModel; @@ -530,17 +525,16 @@ void ChartsWidget::setLeftViewAlbums( PlayableModel* model ) { ui->albumsView->setPlayableModel( model ); - ui->albumsView->proxyModel()->sort( -1 ); // disable sorting, must be called after artistsViewLeft->setTreeModel + ui->albumsView->proxyModel()->sort( -1 ); // disable sorting, must be called after artistsView->setTreeModel ui->stackLeft->setCurrentIndex( 2 ); } void -ChartsWidget::setLeftViewArtists( TreeModel* model ) +ChartsWidget::setLeftViewArtists( PlayableModel* model ) { - ui->artistsViewLeft->proxyModel()->setStyle( PlayableProxyModel::Collection ); - ui->artistsViewLeft->setTreeModel( model ); - ui->artistsViewLeft->proxyModel()->sort( -1 ); // disable sorting, must be called after artistsViewLeft->setTreeModel + ui->artistsView->setPlayableModel( model ); + ui->artistsView->proxyModel()->sort( -1 ); // disable sorting, must be called after artistsView->setTreeModel ui->stackLeft->setCurrentIndex( 1 ); } @@ -563,11 +557,7 @@ ChartsWidget::chartArtistsLoaded( ChartDataLoader* loader, const QList< artist_p if ( m_artistModels.contains( chartId ) ) { - foreach ( const artist_ptr& artist, artists ) - { - m_artistModels[ chartId ]->addArtists( artist ); - m_artistModels[ chartId ]->finishLoading(); - } + m_artistModels[ chartId ]->appendArtists( artists ); } m_workers.remove( loader ); @@ -585,7 +575,6 @@ ChartsWidget::chartTracksLoaded( ChartDataLoader* loader, const QList< query_ptr { Pipeline::instance()->resolve( tracks ); m_trackModels[ chartId ]->appendQueries( tracks ); - m_trackModels[ chartId ]->finishLoading(); } m_workers.remove( loader ); @@ -602,7 +591,6 @@ ChartsWidget::chartAlbumsLoaded( ChartDataLoader* loader, const QList< album_ptr if ( m_albumModels.contains( chartId ) ) { m_albumModels[ chartId ]->appendAlbums( albums ); - m_albumModels[ chartId ]->finishLoading(); } m_workers.remove( loader ); diff --git a/src/viewpages/charts/ChartsWidget.h b/src/viewpages/charts/ChartsWidget.h index a33127f2d..652af3b27 100644 --- a/src/viewpages/charts/ChartsWidget.h +++ b/src/viewpages/charts/ChartsWidget.h @@ -85,7 +85,7 @@ private slots: void chartTracksLoaded( Tomahawk::ChartDataLoader*, const QList< Tomahawk::query_ptr >& ); private: - void setLeftViewArtists( TreeModel* artistModel ); + void setLeftViewArtists( PlayableModel* artistModel ); void setLeftViewAlbums( PlayableModel* albumModel ); void setLeftViewTracks( PlaylistModel* trackModel ); void setViewData( const QVariantMap& data ); @@ -106,7 +106,7 @@ private: // Cache our model data QHash< QString, PlayableModel* > m_albumModels; - QHash< QString, TreeModel* > m_artistModels; + QHash< QString, PlayableModel* > m_artistModels; QHash< QString, PlaylistModel* > m_trackModels; QString m_queueItemToShow; QSet< QString > m_queuedFetches; diff --git a/src/viewpages/charts/ChartsWidget.ui b/src/viewpages/charts/ChartsWidget.ui index f1cd85abf..dcd711610 100644 --- a/src/viewpages/charts/ChartsWidget.ui +++ b/src/viewpages/charts/ChartsWidget.ui @@ -33,13 +33,7 @@ - - - - 320 - 0 - - + @@ -48,12 +42,6 @@ - - true - - - QAbstractItemView::ExtendedSelection -