From ecab5b41b03e18819032e9baa28c91fb7c20f51e Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 29 Jun 2013 21:15:51 +0200 Subject: [PATCH] * Create EchonestParams out of the variant list. --- .../dynamic/echonest/EchonestGenerator.cpp | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp index ffcbbd982..87527c6af 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp @@ -419,22 +419,40 @@ EchonestGenerator::staticFinished() void EchonestGenerator::getParams() throw( std::runtime_error ) { + /*Echonest::DynamicPlaylist::PlaylistParamData data; + data.first = Echonest::DynamicPlaylist::Artist; + data.second = artist->name(); + Echonest::DynamicPlaylist::PlaylistParams params; -/* foreach( const dyncontrol_ptr& control, m_controls ) { - params.append( control.dynamicCast()->toENParam() ); + params << data; + */ + + Echonest::DynamicPlaylist::PlaylistParams params; + foreach( const QVariant& control, m_controls ) + { + QVariantMap controlMap = control.toMap(); + Echonest::DynamicPlaylist::PlaylistParamData data; + data.first = (Echonest::DynamicPlaylist::PlaylistParam)controlMap[ "match" ].toUInt(); + data.second = controlMap[ "input" ].toString(); + + params.append( data ); } - if( appendRadioType( params ) == Echonest::DynamicPlaylist::SongRadioType ) { + if ( appendRadioType( params ) == Echonest::DynamicPlaylist::SongRadioType ) + { // we need to do another pass, converting all song queries to song-ids. m_storedParams = params; qDeleteAll( m_waiting ); m_waiting.clear(); // one query per track - for( int i = 0; i < params.count(); i++ ) { + for( int i = 0; i < params.count(); i++ ) + { const Echonest::DynamicPlaylist::PlaylistParamData param = params.value( i ); - if( param.first == Echonest::DynamicPlaylist::SongId ) { // this is a song type enum + if ( param.first == Echonest::DynamicPlaylist::SongId ) + { + // this is a song type enum QString text = param.second.toString(); Echonest::Song::SearchParams q; @@ -448,14 +466,16 @@ EchonestGenerator::getParams() throw( std::runtime_error ) } } - if( m_waiting.isEmpty() ) { + if ( m_waiting.isEmpty() ) + { m_storedParams.clear(); emit paramsGenerated( params ); } - - } else { + } + else + { emit paramsGenerated( params ); - }*/ + } }