diff --git a/data/js/tomahawk.js b/data/js/tomahawk.js index 35ce76182..3fa8d7d9b 100644 --- a/data/js/tomahawk.js +++ b/data/js/tomahawk.js @@ -134,10 +134,6 @@ var TomahawkResolver = { { return this.resolve( qid, "", "", searchString ); }, - capabilities: function() - { - return TomahawkResolverCapability.NullCapability; - }, artists: function( qid ) { return { diff --git a/src/libtomahawk/resolvers/QtScriptResolver.cpp b/src/libtomahawk/resolvers/QtScriptResolver.cpp index b0679be4f..50a8fc530 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.cpp +++ b/src/libtomahawk/resolvers/QtScriptResolver.cpp @@ -234,6 +234,21 @@ QtScriptResolverHelper::addAlbumTrackResults( const QVariantMap& results ) } +void +QtScriptResolverHelper::reportCapabilities( const QVariant& v ) +{ + bool ok = 0; + int intCap = v.toInt( &ok ); + Tomahawk::ExternalResolver::Capabilities capabilities; + if ( !ok ) + capabilities = Tomahawk::ExternalResolver::NullCapability; + else + capabilities = static_cast< Tomahawk::ExternalResolver::Capabilities >( intCap ); + + m_resolver->onCapabilitiesChanged( capabilities ); +} + + void QtScriptResolverHelper::setResolverConfig( const QVariantMap& config ) { @@ -436,13 +451,6 @@ QtScriptResolver::init() m_timeout = m.value( "timeout", 25 ).toUInt() * 1000; bool compressed = m.value( "compressed", "false" ).toString() == "true"; - bool ok = 0; - int intCap = m_engine->mainFrame()->evaluateJavaScript( "resolver.capabilities()" ).toInt( &ok ); - if ( !ok ) - m_capabilities = NullCapability; - else - m_capabilities = static_cast< Capabilities >( intCap ); - QByteArray icoData = m.value( "icon" ).toByteArray(); if( compressed ) icoData = qUncompress( QByteArray::fromBase64( icoData ) ); @@ -470,8 +478,6 @@ QtScriptResolver::init() QVariantMap config = resolverUserConfig(); fillDataInWidgets( config ); - loadCollections(); - qDebug() << "JS" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon received" << success; m_ready = true; @@ -884,6 +890,14 @@ QtScriptResolver::fillDataInWidgets( const QVariantMap& data ) } +void +QtScriptResolver::onCapabilitiesChanged( Tomahawk::ExternalResolver::Capabilities capabilities ) +{ + m_capabilities = capabilities; + loadCollections(); +} + + void QtScriptResolver::loadCollections() { diff --git a/src/libtomahawk/resolvers/QtScriptResolver.h b/src/libtomahawk/resolvers/QtScriptResolver.h index 659754592..9ec07c72e 100644 --- a/src/libtomahawk/resolvers/QtScriptResolver.h +++ b/src/libtomahawk/resolvers/QtScriptResolver.h @@ -76,6 +76,8 @@ public slots: void addAlbumResults( const QVariantMap& results ); void addAlbumTrackResults( const QVariantMap& results ); + void reportCapabilities( const QVariant& capabilities ); + private: QString m_scriptPath, m_urlCallback; QVariantMap m_resolverConfig; @@ -171,6 +173,7 @@ private: QVariant widgetData( QWidget* widget, const QString& property ); QVariantMap loadDataFromWidgets(); void fillDataInWidgets( const QVariantMap& data ); + void onCapabilitiesChanged( Capabilities capabilities ); void loadCollections(); // encapsulate javascript calls