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:
@@ -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 );
|
||||
}
|
||||
|
||||
|
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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 );
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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 )
|
||||
{
|
||||
|
@@ -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 );
|
||||
|
||||
|
Reference in New Issue
Block a user