1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-27 07:44:34 +02:00

Add async api for returning results in a qtscriptresolver

This commit is contained in:
Dominik Schmidt
2011-08-14 15:42:03 +02:00
parent 4f24e9c5f8
commit 4db7228d0c
2 changed files with 29 additions and 9 deletions

View File

@@ -35,10 +35,11 @@
#define RESOLVER_LEGACY_CODE2 "var resolver = Tomahawk.resolver.instance ? Tomahawk.resolver.instance : window;" #define RESOLVER_LEGACY_CODE2 "var resolver = Tomahawk.resolver.instance ? Tomahawk.resolver.instance : window;"
QtScriptResolverHelper::QtScriptResolverHelper( const QString& scriptPath, QObject* parent ) QtScriptResolverHelper::QtScriptResolverHelper( const QString& scriptPath, QtScriptResolver* parent )
: QObject( parent ) : QObject( parent )
{ {
m_scriptPath = scriptPath; m_scriptPath = scriptPath;
m_resolver = parent;
} }
@@ -102,7 +103,18 @@ QtScriptResolverHelper::log( const QString& message )
void void
QtScriptResolverHelper::setResolverConfig( QVariantMap config ) QtScriptResolverHelper::addTrackResults( const QVariantMap& results )
{
QList< Tomahawk::result_ptr > tracks = m_resolver->parseResultVariantList( results.value("results").toList() );
QString qid = results.value("qid").toString();
Tomahawk::Pipeline::instance()->reportResults( qid, tracks );
}
void
QtScriptResolverHelper::setResolverConfig( const QVariantMap& config )
{ {
m_resolverConfig = config; m_resolverConfig = config;
} }
@@ -245,6 +257,14 @@ QtScriptResolver::resolve( const Tomahawk::query_ptr& query )
} }
QVariantMap m = m_engine->mainFrame()->evaluateJavaScript( eval ).toMap(); QVariantMap m = m_engine->mainFrame()->evaluateJavaScript( eval ).toMap();
if( m.isEmpty() )
{
// if the resolver doesn't return anything, async api is used
return;
}
return;
qDebug() << "JavaScript Result:" << m; qDebug() << "JavaScript Result:" << m;
const QString qid = query->id(); const QString qid = query->id();
@@ -265,11 +285,6 @@ QtScriptResolver::parseResultVariantList( const QVariantList& reslist )
{ {
QVariantMap m = rv.toMap(); QVariantMap m = rv.toMap();
qDebug() << "artist: " << m.value("artist").toString();
qDebug() << "track: " << m.value( "track" ).toString();
//Q_ASSERT(false);
Tomahawk::result_ptr rp( new Tomahawk::Result() ); Tomahawk::result_ptr rp( new Tomahawk::Result() );
Tomahawk::artist_ptr ap = Tomahawk::Artist::get( m.value( "artist" ).toString(), true ); Tomahawk::artist_ptr ap = Tomahawk::Artist::get( m.value( "artist" ).toString(), true );
rp->setArtist( ap ); rp->setArtist( ap );

View File

@@ -38,8 +38,8 @@ class QtScriptResolverHelper : public QObject
Q_OBJECT Q_OBJECT
public: public:
QtScriptResolverHelper( const QString& scriptPath, QObject* parent ); QtScriptResolverHelper( const QString& scriptPath, QtScriptResolver* parent );
void setResolverConfig( QVariantMap config ); void setResolverConfig( const QVariantMap& config );
public slots: public slots:
QByteArray readRaw( const QString& fileName ); QByteArray readRaw( const QString& fileName );
@@ -52,9 +52,12 @@ public slots:
void log( const QString& message ); void log( const QString& message );
bool fakeEnv() { return false; } bool fakeEnv() { return false; }
void addTrackResults( const QVariantMap& results );
private: private:
QString m_scriptPath; QString m_scriptPath;
QVariantMap m_resolverConfig; QVariantMap m_resolverConfig;
QtScriptResolver* m_resolver;
}; };
class ScriptEngine : public QWebPage class ScriptEngine : public QWebPage
@@ -97,6 +100,8 @@ class QtScriptResolver : public Tomahawk::ExternalResolver
{ {
Q_OBJECT Q_OBJECT
friend class QtScriptResolverHelper;
public: public:
explicit QtScriptResolver( const QString& scriptPath ); explicit QtScriptResolver( const QString& scriptPath );
virtual ~QtScriptResolver(); virtual ~QtScriptResolver();