- QVariantMap::const_iterator iterator = properties.constBegin();
- QString propName;
- while(iterator != properties.constEnd()) {
- propName = iterator.key();
- if(propName == "objectName") {
- iterator++;
- continue;
+void SyncableObject::fromVariantMap(const QVariantMap &properties)
+{
+ const QMetaObject *meta = metaObject();
+
+ QVariantMap::const_iterator iterator = properties.constBegin();
+ QString propName;
+ while (iterator != properties.constEnd()) {
+ propName = iterator.key();
+ if (propName == "objectName") {
+ iterator++;
+ continue;
+ }
+
+ int propertyIndex = meta->indexOfProperty(propName.toAscii());
+
+ if (propertyIndex == -1 || !meta->property(propertyIndex).isWritable())
+ setInitValue(propName, iterator.value());
+ else
+ setProperty(propName.toAscii(), iterator.value());
+ // qDebug() << "<<< SYNC:" << name << iterator.value();
+ iterator++;