mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-03-19 15:29:42 +01:00
Handle generic JS object serialization in JSPlugin
This commit is contained in:
parent
67fde57345
commit
6a87492c07
@ -221,12 +221,6 @@ JSInfoPlugin::serializeQVariantMap( const QVariantMap& map )
|
||||
{
|
||||
QVariant currentVariant = localMap[ key ];
|
||||
|
||||
// strip unserializable types - at least QJson needs this, check with QtJson
|
||||
if( currentVariant.canConvert<QImage>() )
|
||||
{
|
||||
localMap.remove( key );
|
||||
}
|
||||
|
||||
// convert InfoStringHash to QVariantMap
|
||||
if( currentVariant.canConvert< Tomahawk::InfoSystem::InfoStringHash >() )
|
||||
{
|
||||
@ -235,9 +229,7 @@ JSInfoPlugin::serializeQVariantMap( const QVariantMap& map )
|
||||
}
|
||||
}
|
||||
|
||||
QByteArray serialized = TomahawkUtils::toJson( localMap );
|
||||
|
||||
return QString( "JSON.parse('%1')" ).arg( JSPlugin::escape( QString::fromUtf8( serialized ) ) );
|
||||
return JSPlugin::serializeQVariantMap( localMap );
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,6 +17,9 @@
|
||||
*/
|
||||
|
||||
#include "JSResolver.h"
|
||||
|
||||
#include "../utils/Json.h"
|
||||
|
||||
#include <QWebFrame>
|
||||
|
||||
|
||||
@ -27,3 +30,25 @@ JSPlugin::addToJavaScriptWindowObject( const QString& name, QObject* object )
|
||||
{
|
||||
m_engine->mainFrame()->addToJavaScriptWindowObject( name, object );
|
||||
}
|
||||
|
||||
|
||||
QString
|
||||
JSPlugin::serializeQVariantMap( const QVariantMap& map )
|
||||
{
|
||||
QVariantMap localMap = map;
|
||||
|
||||
foreach( const QString& key, localMap.keys() )
|
||||
{
|
||||
QVariant currentVariant = localMap[ key ];
|
||||
|
||||
// strip unserializable types - at least QJson needs this, check with QtJson
|
||||
if( currentVariant.canConvert<QImage>() )
|
||||
{
|
||||
localMap.remove( key );
|
||||
}
|
||||
}
|
||||
|
||||
QByteArray serialized = TomahawkUtils::toJson( localMap );
|
||||
|
||||
return QString( "JSON.parse('%1')" ).arg( JSPlugin::escape( QString::fromUtf8( serialized ) ) );
|
||||
}
|
||||
|
@ -77,6 +77,9 @@ public:
|
||||
void loadScript( const QString& path );
|
||||
void loadScripts( const QStringList& paths );
|
||||
void addToJavaScriptWindowObject( const QString& name, QObject* object );
|
||||
|
||||
static QString serializeQVariantMap(const QVariantMap& map);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Wrap the pure evaluateJavaScript call in here, while the threadings guards are in public methods
|
||||
|
Loading…
x
Reference in New Issue
Block a user