1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-09 15:47:38 +02:00

Add simple Qt5-based qvariant2qobject variant

This commit is contained in:
Uwe L. Korn
2014-04-15 16:47:21 +01:00
parent 3b617a7380
commit f75d91f6ad
6 changed files with 35 additions and 7 deletions

View File

@@ -30,8 +30,6 @@
#include "utils/Logger.h"
#include <qjson/qobjecthelper.h>
using namespace Tomahawk;
SourceList* SourceList::s_instance = 0;
@@ -225,7 +223,7 @@ void
SourceList::createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents )
{
Tomahawk::playlist_ptr p = Tomahawk::playlist_ptr( new Tomahawk::Playlist( src ) );
QJson::QObjectHelper::qvariant2qobject( contents.toMap(), p.data() );
TomahawkUtils::qvariant2qobject( contents.toMap(), p.data() );
p->reportCreated( p );
}
@@ -234,7 +232,7 @@ void
SourceList::createDynamicPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents )
{
Tomahawk::dynplaylist_ptr p = Tomahawk::dynplaylist_ptr( new Tomahawk::DynamicPlaylist( src, contents.toMap().value( "type", QString() ).toString() ) );
QJson::QObjectHelper::qvariant2qobject( contents.toMap(), p.data() );
TomahawkUtils::qvariant2qobject( contents.toMap(), p.data() );
p->reportCreated( p );
}

View File

@@ -345,7 +345,7 @@ Database::createCommandInstance(const QVariant& op, const source_ptr& source)
return command;
command->setSource( source );
QJson::QObjectHelper::qvariant2qobject( op.toMap(), command.data() );
TomahawkUtils::qvariant2qobject( op.toMap(), command.data() );
return command;
}

View File

@@ -284,7 +284,7 @@ DatabaseCommand_SetPlaylistRevision::setAddedentriesV( const QVariantList& vlist
foreach( const QVariant& v, vlist )
{
PlaylistEntry* pep = new PlaylistEntry;
QJson::QObjectHelper::qvariant2qobject( v.toMap(), pep );
TomahawkUtils::qvariant2qobject( v.toMap(), pep );
if ( pep->isValid() )
m_addedentries << plentry_ptr( pep );

View File

@@ -556,7 +556,7 @@ DynamicPlaylist::variantsToControl( const QList< QVariantMap >& controlsV )
// qDebug() << "Creating control with data:" << controlV;
if ( control )
{
QJson::QObjectHelper::qvariant2qobject( controlV, control.data() );
TomahawkUtils::qvariant2qobject( controlV, control.data() );
realControls << control;
}
}

View File

@@ -60,6 +60,8 @@
#include <QJsonDocument>
#else
#include <qjson/parser.h>
#include <qjson/qobjecthelper.h>
#include <qjson/serializer.h>
#endif
#ifdef Q_OS_WIN
@@ -846,6 +848,33 @@ compareVersionStrings( const QString& first, const QString& second )
}
void
qvariant2qobject( const QVariantMap& variant, QObject* object )
{
#if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 )
for ( QVariantMap::const_iterator iter = variant.begin(); iter != variant.end(); ++iter )
{
QVariant property = object->property( iter.key().toLatin1() );
QVariant value = iter.value();
Q_ASSERT( property.isValid() );
if ( property.isValid() )
{
if ( value.canConvert( property.type() ) )
{
value.convert( property.type() );
object->setProperty( iter.key().toLatin1(), value );
} else if ( QString( QLatin1String("QVariant") ).compare( QLatin1String( property.typeName() ) ) == 0 ) {
object->setProperty( iter.key().toLatin1(), value );
}
}
}
#else
QJson::QObjectHelper::qvariant2qobject( variant, objects );
#endif
}
QVariant
parseJson( const QByteArray& jsonData, bool* ok )
{

View File

@@ -208,6 +208,7 @@ namespace TomahawkUtils
*/
/* QJson */
DLLEXPORT void qvariant2qobject( const QVariantMap& variant, QObject* object );
DLLEXPORT QVariant parseJson( const QByteArray& jsonData, bool* ok = 0 );
DLLEXPORT QByteArray toJson( const QVariant &variant, bool* ok = 0 );