Commit eafb8e606213ea43f11e77eaf7e67e1137f4ca23
- Diff rendering mode:
- inline
- side by side
src/qobjecthelper.cpp
(2 / 3)
|   | |||
| 42 | 42 | { | |
| 43 | 43 | delete d; | |
| 44 | 44 | } | |
| 45 | #include <QDebug> | ||
| 45 | |||
| 46 | 46 | QVariantMap QObjectHelper::qobject2qvariant( const QObject* object, | |
| 47 | 47 | const QStringList& ignoredProperties) | |
| 48 | 48 | { | |
| … | … | ||
| 57 | 57 | continue; | |
| 58 | 58 | ||
| 59 | 59 | QVariant value = object->property(name); | |
| 60 | qDebug() << "looking at value:" << name << "(" << value.typeName() << ")"; | ||
| 61 | 60 | 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(); | ||
| 63 | 62 | result[QLatin1String(name)] = QObjectHelper::qobject2qvariant(obj, ignoredProperties); | |
| 64 | 63 | } else | |
| 65 | 64 | result[QLatin1String(name)] = value; |
|   | |||
| 46 | 46 | QJson::QObjectHelper::registerType<Person*>(QLatin1String("Person*")); | |
| 47 | 47 | QJson::QObjectHelper::registerType<PhoneNumber*>(QLatin1String("PhoneNumber*")); | |
| 48 | 48 | ||
| 49 | qDebug() << QJson::QObjectHelper::registeredTypes(); | ||
| 50 | |||
| 51 | 49 | QString name = QLatin1String("Flavio Castelli"); | |
| 52 | 50 | Person::Gender gender = Person::Male; | |
| 53 | 51 | QDate dob (1982, 7, 12); | |
| 54 | 52 | ||
| 55 | PhoneNumber phoneNumber; | ||
| 56 | 53 | QString phoneNumberDescription(QLatin1String("Home")); | |
| 57 | 54 | int phoneNumberNumber = 1234; | |
| 58 | phoneNumber.setNumber(phoneNumberNumber); | ||
| 59 | phoneNumber.setDescription(phoneNumberDescription); | ||
| 60 | 55 | ||
| 61 | 56 | Person person; | |
| 62 | 57 | person.setName(name); | |
| 63 | person.setPhoneNumber(&phoneNumber); | ||
| 58 | person.setPhoneNumber(phoneNumberDescription, phoneNumberNumber); | ||
| 64 | 59 | person.setGender(gender); | |
| 65 | 60 | person.setDob(dob); | |
| 66 | 61 | ||
| 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); | ||
| 75 | 70 | ||
| 76 | 71 | QVariantMap result = QObjectHelper::qobject2qvariant(&person); | |
| 77 | 72 | ||
| 78 | // QCOMPARE(result, expected); | ||
| 73 | QCOMPARE(result, expected); | ||
| 79 | 74 | } | |
| 80 | 75 | ||
| 81 | 76 | void TestQObjectHelper::testQVariant2QObject() |

