From 7cac0ed9bc586f2b5e5fb3c9c812fa79ac754b11 Mon Sep 17 00:00:00 2001 From: Leo Franchi <lfranchi@kde.org> Date: Sun, 5 Jun 2011 16:47:32 -0400 Subject: [PATCH] Really don't go overboard asking for moods/styles --- .../dynamic/echonest/EchonestControl.cpp | 1 - .../dynamic/echonest/EchonestGenerator.cpp | 18 ++++++++++++------ .../dynamic/echonest/EchonestGenerator.h | 2 ++ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp index b04f9ce82..6d9603e79 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestControl.cpp @@ -724,7 +724,6 @@ Tomahawk::EchonestControl::insertMoodsAndStyles() if( !combo ) return false; - qDebug() << "Inserting moods and or styles, here's the list" << src; foreach( const QString& item, src ) { combo->addItem( item, item ); } diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp index ee55ae3a0..2568b3569 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp @@ -26,6 +26,8 @@ using namespace Tomahawk; QVector< QString > EchonestGenerator::s_moods = QVector< QString >(); QVector< QString > EchonestGenerator::s_styles = QVector< QString >(); +QNetworkReply* EchonestGenerator::s_moodsJob = 0; +QNetworkReply* EchonestGenerator::s_stylesJob = 0; EchonestFactory::EchonestFactory() {} @@ -59,12 +61,14 @@ EchonestGenerator::EchonestGenerator ( QObject* parent ) m_mode = OnDemand; m_logo.load( RESPATH "/images/echonest_logo.png" ); - // fetch style and moods - QNetworkReply* style = Echonest::Artist::listTerms( "style" ); - connect( style, SIGNAL( finished() ), this, SLOT( stylesReceived() ) ); - - QNetworkReply* moods = Echonest::Artist::listTerms( "mood" ); - connect( moods, SIGNAL( finished() ), this, SLOT( moodsReceived() ) ); + if( !s_stylesJob && s_styles.isEmpty() ) { + // fetch style and moods + s_stylesJob = Echonest::Artist::listTerms( "style" ); + connect( s_stylesJob, SIGNAL( finished() ), this, SLOT( stylesReceived() ) ); + } else if( !s_moodsJob && s_moods.isEmpty() ) { + s_moodsJob = Echonest::Artist::listTerms( "mood" ); + connect( s_moodsJob, SIGNAL( finished() ), this, SLOT( moodsReceived() ) ); + } // qDebug() << "ECHONEST:" << m_logo.size(); } @@ -530,6 +534,7 @@ EchonestGenerator::moodsReceived() } catch( Echonest::ParseError& e ) { qWarning() << "Echonest failed to parse moods list"; } + s_moodsJob = 0; } QVector< QString > @@ -549,4 +554,5 @@ EchonestGenerator::stylesReceived() } catch( Echonest::ParseError& e ) { qWarning() << "Echonest failed to parse styles list"; } + s_stylesJob = 0; } diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h index 1af9fc12c..aac93b25b 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h @@ -95,6 +95,8 @@ private: static QVector< QString > s_styles; static QVector< QString > s_moods; + static QNetworkReply* s_stylesJob; + static QNetworkReply* s_moodsJob; // used for the intermediary song id lookup QSet< QNetworkReply* > m_waiting;