From 70fa4b73d48b5d16d6b2202f18793d952dc2fe70 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 27 May 2012 19:05:23 +0200 Subject: [PATCH] * Use the new Artist API in ArtistInfoWidget. --- .../widgets/infowidgets/ArtistInfoWidget.cpp | 76 ++++++++----------- .../widgets/infowidgets/ArtistInfoWidget.h | 2 + 2 files changed, 34 insertions(+), 44 deletions(-) diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp index 858e90f3a..d2c9c068c 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.cpp @@ -147,15 +147,29 @@ void ArtistInfoWidget::load( const artist_ptr& artist ) { if ( !m_artist.isNull() ) + { disconnect( m_artist.data(), SIGNAL( updated() ), this, SLOT( onArtistImageUpdated() ) ); + disconnect( m_artist.data(), SIGNAL( similarArtistsLoaded() ), this, SLOT( onSimilarArtistsLoaded() ) ); + disconnect( m_artist.data(), SIGNAL( albumsAdded( QList, Tomahawk::ModelMode ) ), + this, SLOT( onAlbumsFound( QList, Tomahawk::ModelMode ) ) ); + disconnect( m_artist.data(), SIGNAL( tracksAdded( QList, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ), + this, SLOT( onTracksFound( QList, Tomahawk::ModelMode ) ) ); + } m_artist = artist; m_title = artist->name(); - connect( artist.data(), SIGNAL( albumsAdded( QList, Tomahawk::ModelMode ) ), - SLOT( onAlbumsFound( QList, Tomahawk::ModelMode ) ) ); + connect( m_artist.data(), SIGNAL( similarArtistsLoaded() ), SLOT( onSimilarArtistsLoaded() ) ); + connect( m_artist.data(), SIGNAL( updated() ), SLOT( onArtistImageUpdated() ) ); + connect( m_artist.data(), SIGNAL( albumsAdded( QList, Tomahawk::ModelMode ) ), + SLOT( onAlbumsFound( QList, Tomahawk::ModelMode ) ) ); + connect( m_artist.data(), SIGNAL( tracksAdded( QList, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ), + SLOT( onTracksFound( QList, Tomahawk::ModelMode ) ) ); onAlbumsFound( artist->albums( Mixed ), Mixed ); + onTracksFound( m_artist->tracks(), Mixed ); + onSimilarArtistsLoaded(); + onArtistImageUpdated(); Tomahawk::InfoSystem::InfoStringHash artistInfo; artistInfo["artist"] = artist->name(); @@ -169,17 +183,6 @@ ArtistInfoWidget::load( const artist_ptr& artist ) Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData ); requestData.input = QVariant::fromValue< Tomahawk::InfoSystem::InfoStringHash >( artistInfo ); - - requestData.type = Tomahawk::InfoSystem::InfoArtistSimilars; - requestData.requestId = TomahawkUtils::infosystemRequestId(); - Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData ); - - requestData.type = Tomahawk::InfoSystem::InfoArtistSongs; - requestData.requestId = TomahawkUtils::infosystemRequestId(); - Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData ); - - connect( m_artist.data(), SIGNAL( updated() ), SLOT( onArtistImageUpdated() ) ); - onArtistImageUpdated(); } @@ -192,6 +195,22 @@ ArtistInfoWidget::onAlbumsFound( const QList& albums, Model } +void +ArtistInfoWidget::onTracksFound( const QList& queries, ModelMode mode ) +{ + Q_UNUSED( mode ); + + m_topHitsModel->append( queries ); +} + + +void +ArtistInfoWidget::onSimilarArtistsLoaded() +{ + m_relatedModel->addArtists( m_artist->similarArtists() ); +} + + void ArtistInfoWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output ) { @@ -227,37 +246,6 @@ ArtistInfoWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestD break; } - case InfoSystem::InfoArtistSongs: - { - const QStringList tracks = returnedData["tracks"].toStringList(); - - QList< query_ptr > queries; - int i = 0; - foreach ( const QString& track, tracks ) - { - queries << Query::get( m_artist->name(), track, QString(), QString(), false ); - - if ( ++i == 15 ) - break; - } - - Pipeline::instance()->resolve( queries ); - m_topHitsModel->append( queries ); - break; - } - - case InfoSystem::InfoArtistSimilars: - { - const QStringList artists = returnedData["artists"].toStringList(); - QList al; - foreach ( const QString& artist, artists ) - { - al << Artist::get( artist ); - } - m_relatedModel->addArtists( al ); - break; - } - default: return; } diff --git a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.h b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.h index adebbb21c..097cbca8b 100644 --- a/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.h +++ b/src/libtomahawk/widgets/infowidgets/ArtistInfoWidget.h @@ -95,6 +95,8 @@ private slots: void onArtistImageUpdated(); void onAlbumsFound( const QList& albums, Tomahawk::ModelMode mode ); + void onTracksFound( const QList& queries, Tomahawk::ModelMode mode ); + void onSimilarArtistsLoaded(); void onLoadingStarted(); void onLoadingFinished();