mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-10 08:04:25 +02:00
Add simple Qt5-based qvariant2qobject variant
This commit is contained in:
@@ -30,8 +30,6 @@
|
|||||||
|
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
|
|
||||||
#include <qjson/qobjecthelper.h>
|
|
||||||
|
|
||||||
using namespace Tomahawk;
|
using namespace Tomahawk;
|
||||||
|
|
||||||
SourceList* SourceList::s_instance = 0;
|
SourceList* SourceList::s_instance = 0;
|
||||||
@@ -225,7 +223,7 @@ void
|
|||||||
SourceList::createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents )
|
SourceList::createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents )
|
||||||
{
|
{
|
||||||
Tomahawk::playlist_ptr p = Tomahawk::playlist_ptr( new Tomahawk::Playlist( src ) );
|
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 );
|
p->reportCreated( p );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,7 +232,7 @@ void
|
|||||||
SourceList::createDynamicPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents )
|
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() ) );
|
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 );
|
p->reportCreated( p );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -345,7 +345,7 @@ Database::createCommandInstance(const QVariant& op, const source_ptr& source)
|
|||||||
return command;
|
return command;
|
||||||
|
|
||||||
command->setSource( source );
|
command->setSource( source );
|
||||||
QJson::QObjectHelper::qvariant2qobject( op.toMap(), command.data() );
|
TomahawkUtils::qvariant2qobject( op.toMap(), command.data() );
|
||||||
return command;
|
return command;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -284,7 +284,7 @@ DatabaseCommand_SetPlaylistRevision::setAddedentriesV( const QVariantList& vlist
|
|||||||
foreach( const QVariant& v, vlist )
|
foreach( const QVariant& v, vlist )
|
||||||
{
|
{
|
||||||
PlaylistEntry* pep = new PlaylistEntry;
|
PlaylistEntry* pep = new PlaylistEntry;
|
||||||
QJson::QObjectHelper::qvariant2qobject( v.toMap(), pep );
|
TomahawkUtils::qvariant2qobject( v.toMap(), pep );
|
||||||
|
|
||||||
if ( pep->isValid() )
|
if ( pep->isValid() )
|
||||||
m_addedentries << plentry_ptr( pep );
|
m_addedentries << plentry_ptr( pep );
|
||||||
|
@@ -556,7 +556,7 @@ DynamicPlaylist::variantsToControl( const QList< QVariantMap >& controlsV )
|
|||||||
// qDebug() << "Creating control with data:" << controlV;
|
// qDebug() << "Creating control with data:" << controlV;
|
||||||
if ( control )
|
if ( control )
|
||||||
{
|
{
|
||||||
QJson::QObjectHelper::qvariant2qobject( controlV, control.data() );
|
TomahawkUtils::qvariant2qobject( controlV, control.data() );
|
||||||
realControls << control;
|
realControls << control;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -60,6 +60,8 @@
|
|||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
#else
|
#else
|
||||||
#include <qjson/parser.h>
|
#include <qjson/parser.h>
|
||||||
|
#include <qjson/qobjecthelper.h>
|
||||||
|
#include <qjson/serializer.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#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
|
QVariant
|
||||||
parseJson( const QByteArray& jsonData, bool* ok )
|
parseJson( const QByteArray& jsonData, bool* ok )
|
||||||
{
|
{
|
||||||
|
@@ -208,6 +208,7 @@ namespace TomahawkUtils
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* QJson */
|
/* QJson */
|
||||||
|
DLLEXPORT void qvariant2qobject( const QVariantMap& variant, QObject* object );
|
||||||
DLLEXPORT QVariant parseJson( const QByteArray& jsonData, bool* ok = 0 );
|
DLLEXPORT QVariant parseJson( const QByteArray& jsonData, bool* ok = 0 );
|
||||||
DLLEXPORT QByteArray toJson( const QVariant &variant, bool* ok = 0 );
|
DLLEXPORT QByteArray toJson( const QVariant &variant, bool* ok = 0 );
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user