From 7f82cf6ea299c8143a792eabe8d097e23172625d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 25 Nov 2012 19:02:12 +0100 Subject: [PATCH] * Added interface for startFromGenre( QString ). --- .../PlayableProxyModelPlaylistInterface.cpp | 1 + .../playlist/dynamic/GeneratorInterface.h | 1 + .../dynamic/echonest/EchonestGenerator.cpp | 29 ++++++++++++++++++- .../dynamic/echonest/EchonestGenerator.h | 1 + .../dynamic/widgets/DynamicQmlWidget.cpp | 3 +- 5 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp index 0df538127..70f2c86bf 100644 --- a/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModelPlaylistInterface.cpp @@ -281,6 +281,7 @@ PlayableProxyModelPlaylistInterface::queryAt( qint64 index ) const if ( m_proxyModel.isNull() ) return query_ptr(); + tDebug() << Q_FUNC_INFO << "item on index:" << index; PlayableItem* item = static_cast( (void*)index ); if ( item && item->query() ) return item->query(); diff --git a/src/libtomahawk/playlist/dynamic/GeneratorInterface.h b/src/libtomahawk/playlist/dynamic/GeneratorInterface.h index c01c5d498..c483984ea 100644 --- a/src/libtomahawk/playlist/dynamic/GeneratorInterface.h +++ b/src/libtomahawk/playlist/dynamic/GeneratorInterface.h @@ -113,6 +113,7 @@ public: virtual bool startFromTrack( const Tomahawk::query_ptr& query ) = 0; virtual bool startFromArtist( const Tomahawk::artist_ptr& artist ) = 0; + virtual bool startFromGenre( const QString& genre ) = 0; signals: void error( const QString& title, const QString& body); diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp index cf25d4309..bfbf4254c 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.cpp @@ -191,6 +191,7 @@ EchonestGenerator::startOnDemand() connect( deleteReply, SIGNAL( finished() ), deleteReply, SLOT( deleteLater() ) ); } + tDebug() << Q_FUNC_INFO; connect( this, SIGNAL( paramsGenerated( Echonest::DynamicPlaylist::PlaylistParams ) ), this, SLOT( doStartOnDemand( Echonest::DynamicPlaylist::PlaylistParams ) ) ); try { getParams(); @@ -245,6 +246,32 @@ EchonestGenerator::startFromArtist( const Tomahawk::artist_ptr& artist ) } +bool +EchonestGenerator::startFromGenre( const QString& genre ) +{ + tDebug() << "Generating station content by genre:" << genre; + + if ( !m_dynPlaylist->sessionId().isNull() ) + { + // Running session, delete it + QNetworkReply* deleteReply = m_dynPlaylist->deleteSession(); + connect( deleteReply, SIGNAL( finished() ), deleteReply, SLOT( deleteLater() ) ); + } + + connect( this, SIGNAL( paramsGenerated( Echonest::DynamicPlaylist::PlaylistParams ) ), this, SLOT( doStartOnDemand( Echonest::DynamicPlaylist::PlaylistParams ) ) ); + + Echonest::DynamicPlaylist::PlaylistParamData data; + data.first = Echonest::DynamicPlaylist::Description; + data.second = genre; + + Echonest::DynamicPlaylist::PlaylistParams params; + params << data; + emit paramsGenerated( params ); + + return true; +} + + void EchonestGenerator::doGenerate( const Echonest::DynamicPlaylist::PlaylistParams& paramsIn ) { @@ -364,7 +391,7 @@ EchonestGenerator::getParams() throw( std::runtime_error ) // emit paramsGenerated( params ); // } - qDebug() << "ParamsGenerated" << params; + tDebug() << "ParamsGenerated" << params; } diff --git a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h index 41e208e03..9be862fab 100644 --- a/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h +++ b/src/libtomahawk/playlist/dynamic/echonest/EchonestGenerator.h @@ -78,6 +78,7 @@ public: virtual QWidget* steeringWidget() { return 0; } virtual bool startFromTrack( const Tomahawk::query_ptr& query ); virtual bool startFromArtist( const Tomahawk::artist_ptr& artist ); + virtual bool startFromGenre( const QString& genre ); Q_INVOKABLE static QStringList styles(); static QStringList moods(); diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.cpp index b2a04d891..7fe39f558 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicQmlWidget.cpp @@ -129,7 +129,8 @@ void DynamicQmlWidget::pause() void DynamicQmlWidget::startStationFromArtist(const QString &artist) { tDebug() << "should start startion from artist" << artist; - m_playlist->generator()->startFromArtist(Artist::get(artist)); + // m_playlist->generator()->startFromArtist(Artist::get(artist)); + m_playlist->generator()->startFromGenre( "rock" ); } void DynamicQmlWidget::currentIndexChanged( const QPersistentModelIndex ¤tIndex )