1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-05 13:47:26 +02:00

Instead of getting statically defined capabilities at resolver startup,

have resolvers report their actual capabilities as soon as they know
for sure they have them.
This commit is contained in:
Teo Mrnjavac
2013-02-07 20:35:09 +01:00
parent a4a0cb771f
commit 0077ca5c8d
3 changed files with 26 additions and 13 deletions

View File

@@ -134,10 +134,6 @@ var TomahawkResolver = {
{ {
return this.resolve( qid, "", "", searchString ); return this.resolve( qid, "", "", searchString );
}, },
capabilities: function()
{
return TomahawkResolverCapability.NullCapability;
},
artists: function( qid ) artists: function( qid )
{ {
return { return {

View File

@@ -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 void
QtScriptResolverHelper::setResolverConfig( const QVariantMap& config ) QtScriptResolverHelper::setResolverConfig( const QVariantMap& config )
{ {
@@ -436,13 +451,6 @@ QtScriptResolver::init()
m_timeout = m.value( "timeout", 25 ).toUInt() * 1000; m_timeout = m.value( "timeout", 25 ).toUInt() * 1000;
bool compressed = m.value( "compressed", "false" ).toString() == "true"; 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(); QByteArray icoData = m.value( "icon" ).toByteArray();
if( compressed ) if( compressed )
icoData = qUncompress( QByteArray::fromBase64( icoData ) ); icoData = qUncompress( QByteArray::fromBase64( icoData ) );
@@ -470,8 +478,6 @@ QtScriptResolver::init()
QVariantMap config = resolverUserConfig(); QVariantMap config = resolverUserConfig();
fillDataInWidgets( config ); fillDataInWidgets( config );
loadCollections();
qDebug() << "JS" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon received" << success; qDebug() << "JS" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout << "icon received" << success;
m_ready = true; m_ready = true;
@@ -884,6 +890,14 @@ QtScriptResolver::fillDataInWidgets( const QVariantMap& data )
} }
void
QtScriptResolver::onCapabilitiesChanged( Tomahawk::ExternalResolver::Capabilities capabilities )
{
m_capabilities = capabilities;
loadCollections();
}
void void
QtScriptResolver::loadCollections() QtScriptResolver::loadCollections()
{ {

View File

@@ -76,6 +76,8 @@ public slots:
void addAlbumResults( const QVariantMap& results ); void addAlbumResults( const QVariantMap& results );
void addAlbumTrackResults( const QVariantMap& results ); void addAlbumTrackResults( const QVariantMap& results );
void reportCapabilities( const QVariant& capabilities );
private: private:
QString m_scriptPath, m_urlCallback; QString m_scriptPath, m_urlCallback;
QVariantMap m_resolverConfig; QVariantMap m_resolverConfig;
@@ -171,6 +173,7 @@ private:
QVariant widgetData( QWidget* widget, const QString& property ); QVariant widgetData( QWidget* widget, const QString& property );
QVariantMap loadDataFromWidgets(); QVariantMap loadDataFromWidgets();
void fillDataInWidgets( const QVariantMap& data ); void fillDataInWidgets( const QVariantMap& data );
void onCapabilitiesChanged( Capabilities capabilities );
void loadCollections(); void loadCollections();
// encapsulate javascript calls // encapsulate javascript calls