Commit eafb8e606213ea43f11e77eaf7e67e1137f4ca23

  • avatar
  • Flavio Castelli <fcastelli @nov…ll.com>
  • Thu Aug 05 08:27:15 CEST 2010
handle nested QObjects
  
4242{
4343 delete d;
4444}
45#include <QDebug>
45
4646QVariantMap QObjectHelper::qobject2qvariant( const QObject* object,
4747 const QStringList& ignoredProperties)
4848{
5757 continue;
5858
5959 QVariant value = object->property(name);
60 qDebug() << "looking at value:" << name << "(" << value.typeName() << ")";
6160 if (value.canConvert<QObject*>() || isTypeRegistered(QLatin1String(value.typeName()))) {
62 const QObject *obj = static_cast<const QObject*>(value.constData());
61 const QObject *obj = *(QObject**)value.constData();
6362 result[QLatin1String(name)] = QObjectHelper::qobject2qvariant(obj, ignoredProperties);
6463 } else
6564 result[QLatin1String(name)] = value;
  
4646 QJson::QObjectHelper::registerType<Person*>(QLatin1String("Person*"));
4747 QJson::QObjectHelper::registerType<PhoneNumber*>(QLatin1String("PhoneNumber*"));
4848
49 qDebug() << QJson::QObjectHelper::registeredTypes();
50
5149 QString name = QLatin1String("Flavio Castelli");
5250 Person::Gender gender = Person::Male;
5351 QDate dob (1982, 7, 12);
5452
55 PhoneNumber phoneNumber;
5653 QString phoneNumberDescription(QLatin1String("Home"));
5754 int phoneNumberNumber = 1234;
58 phoneNumber.setNumber(phoneNumberNumber);
59 phoneNumber.setDescription(phoneNumberDescription);
6055
6156 Person person;
6257 person.setName(name);
63 person.setPhoneNumber(&phoneNumber);
58 person.setPhoneNumber(phoneNumberDescription, phoneNumberNumber);
6459 person.setGender(gender);
6560 person.setDob(dob);
6661
67// QVariantMap expected;
68// expected[QLatin1String("name")] = QVariant(name);
69// QVariantMap phonenumberVariant;
70// phonenumberVariant.insert(QLatin1String("description"), phoneNumberDescription);
71// phonenumberVariant.insert(QLatin1String("number"), phoneNumberNumber);
72// expected[QLatin1String("phoneNumber")] = phonenumberVariant;
73// expected[QLatin1String("gender")] = QVariant(gender);
74// expected[QLatin1String("dob")] = QVariant(dob);
62 QVariantMap expected;
63 expected[QLatin1String("name")] = QVariant(name);
64 QVariantMap phonenumberVariant;
65 phonenumberVariant.insert(QLatin1String("description"), phoneNumberDescription);
66 phonenumberVariant.insert(QLatin1String("number"), phoneNumberNumber);
67 expected[QLatin1String("phoneNumber")] = phonenumberVariant;
68 expected[QLatin1String("gender")] = QVariant(gender);
69 expected[QLatin1String("dob")] = QVariant(dob);
7570
7671 QVariantMap result = QObjectHelper::qobject2qvariant(&person);
7772
78// QCOMPARE(result, expected);
73 QCOMPARE(result, expected);
7974}
8075
8176void TestQObjectHelper::testQVariant2QObject()