1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-20 04:41:36 +02:00

Implement new js-resolver api

This commit is contained in:
Dominik Schmidt
2011-06-26 19:20:55 +02:00
parent de74c0c3fe
commit 5d21dded5c
2 changed files with 32 additions and 14 deletions

View File

@@ -62,7 +62,7 @@ QtScriptResolverHelper::compress( const QString& data )
QVariantMap QVariantMap
QtScriptResolverHelper::resolver() QtScriptResolverHelper::resolverData()
{ {
QVariantMap resolver; QVariantMap resolver;
resolver["config"] = m_resolverConfig; resolver["config"] = m_resolverConfig;
@@ -96,18 +96,18 @@ QtScriptResolver::QtScriptResolver( const QString& scriptPath )
} }
m_engine->mainFrame()->setHtml( "<html><body></body></html>" ); m_engine->mainFrame()->setHtml( "<html><body></body></html>" );
m_engine->mainFrame()->evaluateJavaScript( scriptFile.readAll() );
m_engine->mainFrame()->addToJavaScriptWindowObject( "Tomahawk", m_resolverHelper ); m_engine->mainFrame()->addToJavaScriptWindowObject( "Tomahawk", m_resolverHelper );
m_engine->mainFrame()->evaluateJavaScript( scriptFile.readAll() );
scriptFile.close(); scriptFile.close();
QVariantMap m = m_engine->mainFrame()->evaluateJavaScript( "getSettings();" ).toMap(); QVariantMap m = resolverSettings();
m_name = m.value( "name" ).toString(); m_name = m.value( "name" ).toString();
m_weight = m.value( "weight", 0 ).toUInt(); m_weight = m.value( "weight", 0 ).toUInt();
m_timeout = m.value( "timeout", 25 ).toUInt() * 1000; m_timeout = m.value( "timeout", 25 ).toUInt() * 1000;
// load config widget and apply settings // load config widget and apply settings
loadUi(); loadUi();
QVariantMap config = m_engine->mainFrame()->evaluateJavaScript( "getConfig();" ).toMap(); QVariantMap config = resolverUserConfig();
fillDataInWidgets( config ); fillDataInWidgets( config );
qDebug() << Q_FUNC_INFO << m_name << m_weight << m_timeout; qDebug() << Q_FUNC_INFO << m_name << m_weight << m_timeout;
@@ -139,7 +139,7 @@ QtScriptResolver::resolve( const Tomahawk::query_ptr& query )
if ( !query->isFullTextQuery() ) if ( !query->isFullTextQuery() )
{ {
eval = QString( "resolve( '%1', '%2', '%3', '%4' );" ) eval = QString( "Tomahawk.resolver.instance.resolve( '%1', '%2', '%3', '%4' );" )
.arg( query->id().replace( "'", "\\'" ) ) .arg( query->id().replace( "'", "\\'" ) )
.arg( query->artist().replace( "'", "\\'" ) ) .arg( query->artist().replace( "'", "\\'" ) )
.arg( query->album().replace( "'", "\\'" ) ) .arg( query->album().replace( "'", "\\'" ) )
@@ -147,7 +147,7 @@ QtScriptResolver::resolve( const Tomahawk::query_ptr& query )
} }
else else
{ {
eval = QString( "resolve( '%1', '%2', '%3', '%4' );" ) eval = QString( "Tomahawk.resolver.instance.resolve( '%1', '%2', '%3', '%4' );" )
.arg( query->id().replace( "'", "\\'" ) ) .arg( query->id().replace( "'", "\\'" ) )
.arg( query->fullTextQuery().replace( "'", "\\'" ) ) .arg( query->fullTextQuery().replace( "'", "\\'" ) )
.arg( QString() ) .arg( QString() )
@@ -219,7 +219,9 @@ QtScriptResolver::loadUi()
{ {
qDebug() << Q_FUNC_INFO; qDebug() << Q_FUNC_INFO;
QVariantMap m = m_engine->mainFrame()->evaluateJavaScript( "getConfigUi();" ).toMap(); QVariantMap m = m_engine->mainFrame()->evaluateJavaScript( "Tomahawk.resolver.instance.getConfigUi();" ).toMap();
m_dataWidgets = m["fields"].toList();
bool compressed = m.value( "compressed", "false" ).toBool(); bool compressed = m.value( "compressed", "false" ).toBool();
bool base64 = m.value( "base64", "false" ).toBool(); bool base64 = m.value( "base64", "false" ).toBool();
@@ -237,8 +239,6 @@ QtScriptResolver::loadUi()
m_configWidget = QWeakPointer< QWidget >( widgetFromData( uiData, 0 ) ); m_configWidget = QWeakPointer< QWidget >( widgetFromData( uiData, 0 ) );
m_dataWidgets = m_engine->mainFrame()->evaluateJavaScript( "getDataWidgets();" ).toList();
emit changed(); emit changed();
} }
@@ -260,18 +260,18 @@ QtScriptResolver::saveConfig()
qDebug() << Q_FUNC_INFO << saveData; qDebug() << Q_FUNC_INFO << saveData;
m_resolverHelper->setResolverConfig( saveData.toMap() ); m_resolverHelper->setResolverConfig( saveData.toMap() );
m_engine->mainFrame()->evaluateJavaScript( "saveConfig();" ); m_engine->mainFrame()->evaluateJavaScript( "Tomahawk.resolver.instance.saveUserConfig();" );
} }
QWidget* QWidget*
QtScriptResolver::findWidget(QWidget* widget, const QStringList& widgetPath) QtScriptResolver::findWidget(QWidget* widget, const QStringList& widgetPath)
{ {
qDebug() << Q_FUNC_INFO << widget->objectName() << widgetPath;
if( !widget || !widget->isWidgetType() ) if( !widget || !widget->isWidgetType() )
return 0; return 0;
qDebug() << Q_FUNC_INFO << widget->objectName() << widgetPath;
if( widgetPath.isEmpty() ) if( widgetPath.isEmpty() )
return widget; return widget;
@@ -373,3 +373,17 @@ QtScriptResolver::fillDataInWidgets( const QVariantMap& data )
setWidgetData( data[ name ], widget, propertyName ); setWidgetData( data[ name ], widget, propertyName );
} }
} }
QVariantMap
QtScriptResolver::resolverSettings()
{
return m_engine->mainFrame()->evaluateJavaScript( "Tomahawk.resolver.instance.getSettings();" ).toMap();
}
QVariantMap
QtScriptResolver::resolverUserConfig()
{
return m_engine->mainFrame()->evaluateJavaScript( "Tomahawk.resolver.instance.getUserConfig();" ).toMap();
}

View File

@@ -44,7 +44,7 @@ public:
public slots: public slots:
QString readFile( const QString& fileName ); QString readFile( const QString& fileName );
QString compress( const QString& data ); QString compress( const QString& data );
QVariantMap resolver(); QVariantMap resolverData();
private: private:
QString m_scriptPath; QString m_scriptPath;
@@ -75,7 +75,7 @@ public slots:
protected: protected:
virtual void javaScriptConsoleMessage( const QString & message, int lineNumber, const QString & sourceID ) virtual void javaScriptConsoleMessage( const QString & message, int lineNumber, const QString & sourceID )
{ qDebug() << "JAVASCRIPT ERROR:" << message << lineNumber << sourceID; } { qDebug() << "JAVASCRIPT:" << message << lineNumber << sourceID; }
private: private:
QtScriptResolver* m_parent; QtScriptResolver* m_parent;
@@ -112,6 +112,10 @@ private:
QVariantMap loadDataFromWidgets(); QVariantMap loadDataFromWidgets();
void fillDataInWidgets( const QVariantMap& data ); void fillDataInWidgets( const QVariantMap& data );
// encapsulate javascript calls
QVariantMap resolverSettings();
QVariantMap resolverUserConfig();
ScriptEngine* m_engine; ScriptEngine* m_engine;
QString m_name; QString m_name;