1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-05 05:37:29 +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 );
},
capabilities: function()
{
return TomahawkResolverCapability.NullCapability;
},
artists: function( qid )
{
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
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()
{

View File

@@ -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