void QtPropertyDataDavaKeyedArcive::ChildsSync() { QSet<QtPropertyData *> dataToRemove; // at first step of sync we mark (placing to vector) items to remove for(int i = 0; i < ChildCount(); ++i) { QPair<QString, QtPropertyData *> pair = ChildGet(i); if(NULL != pair.second) { dataToRemove.insert(pair.second); } } // as second step we go throught keyed archive and add new data items, // and remove deleting mark from items that are still in archive if(NULL != curArchive) { DAVA::Map<DAVA::String, DAVA::VariantType*> data = curArchive->GetArchieveData(); DAVA::Map<DAVA::String, DAVA::VariantType*>::iterator i = data.begin(); for(; i != data.end(); ++i) { QtPropertyData *childData = ChildGet(i->first.c_str()); // this key already in items list if(NULL != childData) { // remove deleting mark dataToRemove.remove(childData); } // create new child data else { ChildCreate(i->first.c_str(), i->second); } } } // delete all marked items QSetIterator<QtPropertyData *> it(dataToRemove); while(it.hasNext()) { ChildRemove(it.next()); } }
void QtPropertyData::ChildRemove(int i) { QPair<QString, QtPropertyData*> pair = ChildGet(i); if(!pair.first.isEmpty() && NULL != pair.second) { emit ChildRemoving(pair.first, pair.second); children.remove(pair.first); childrenOrder.remove(pair.first); delete pair.second; } }
void QtPropertyData::ChildRemove(const QString &key) { QtPropertyData *data = ChildGet(key); if(NULL != data) { emit ChildRemoving(key, data); children.remove(key); childrenOrder.remove(key); delete data; } }
void QtPropertyDataDavaVariant::MeSetFromChilds(const QString &lastChangedChildKey, QtPropertyData *lastChangedChildData) { switch(curVariantValue.type) { case DAVA::VariantType::TYPE_KEYED_ARCHIVE: { QtPropertyDataDavaVariant *childVariantData = (QtPropertyDataDavaVariant *) lastChangedChildData; DAVA::KeyedArchive *archive = curVariantValue.AsKeyedArchive(); if(NULL != archive && NULL != childVariantData) { archive->SetVariant(lastChangedChildKey.toStdString(), childVariantData->curVariantValue); } } break; case DAVA::VariantType::TYPE_MATRIX2: break; case DAVA::VariantType::TYPE_MATRIX3: break; case DAVA::VariantType::TYPE_MATRIX4: break; case DAVA::VariantType::TYPE_VECTOR2: { DAVA::Vector2 vec; vec.x = ChildGet("X")->GetValue().toFloat(); vec.y = ChildGet("Y")->GetValue().toFloat(); curVariantValue.SetVector2(vec); } break; case DAVA::VariantType::TYPE_VECTOR3: { DAVA::Vector3 vec; vec.x = ChildGet("X")->GetValue().toFloat(); vec.y = ChildGet("Y")->GetValue().toFloat(); vec.z = ChildGet("Z")->GetValue().toFloat(); curVariantValue.SetVector3(vec); } break; case DAVA::VariantType::TYPE_VECTOR4: { DAVA::Vector4 vec; vec.x = ChildGet("X")->GetValue().toFloat(); vec.y = ChildGet("Y")->GetValue().toFloat(); vec.z = ChildGet("Z")->GetValue().toFloat(); vec.w = ChildGet("W")->GetValue().toFloat(); curVariantValue.SetVector4(vec); } break; case DAVA::VariantType::TYPE_COLOR: { // DAVA::Color color; // color.r = ChildGet("R")->GetValue().toFloat(); // color.g = ChildGet("G")->GetValue().toFloat(); // color.b = ChildGet("B")->GetValue().toFloat(); // color.a = ChildGet("A")->GetValue().toFloat(); // curVariantValue.SetColor(color); } break; case DAVA::VariantType::TYPE_AABBOX3: { DAVA::AABBox3 box; QtPropertyData* min = ChildGet("min"); box.min.x = min->ChildGet("X")->GetValue().toFloat(); box.min.y = min->ChildGet("Y")->GetValue().toFloat(); box.min.z = min->ChildGet("Z")->GetValue().toFloat(); QtPropertyData* max = ChildGet("max"); box.max.x = max->ChildGet("X")->GetValue().toFloat(); box.max.y = max->ChildGet("Y")->GetValue().toFloat(); box.max.z = max->ChildGet("Z")->GetValue().toFloat(); curVariantValue.SetAABBox3(box); } break; } }
void QtPropertyDataDavaVariant::ChildsSetFromMe() { switch(curVariantValue.type) { case DAVA::VariantType::TYPE_KEYED_ARCHIVE: { // No way to change whole archive // so don't need to re-set childs } break; case DAVA::VariantType::TYPE_MATRIX2: break; case DAVA::VariantType::TYPE_MATRIX3: break; case DAVA::VariantType::TYPE_MATRIX4: break; case DAVA::VariantType::TYPE_VECTOR2: { DAVA::Vector2 vec = curVariantValue.AsVector2(); ChildGet("X")->SetValue(vec.x); ChildGet("Y")->SetValue(vec.y); } break; case DAVA::VariantType::TYPE_VECTOR3: { DAVA::Vector3 vec = curVariantValue.AsVector3(); ChildGet("X")->SetValue(vec.x); ChildGet("Y")->SetValue(vec.y); ChildGet("Z")->SetValue(vec.z); } break; case DAVA::VariantType::TYPE_VECTOR4: { DAVA::Vector4 vec = curVariantValue.AsVector4(); ChildGet("X")->SetValue(vec.x); ChildGet("Y")->SetValue(vec.y); ChildGet("Z")->SetValue(vec.z); ChildGet("W")->SetValue(vec.w); } break; case DAVA::VariantType::TYPE_COLOR: { // DAVA::Color color = curVariantValue.AsColor(); // ChildGet("R")->SetValue(color.r); // ChildGet("G")->SetValue(color.g); // ChildGet("B")->SetValue(color.b); // ChildGet("A")->SetValue(color.a); } break; case DAVA::VariantType::TYPE_AABBOX3: { DAVA::AABBox3 box = curVariantValue.AsAABBox3(); QtPropertyData* min = ChildGet("min"); min->SetValue(FromVector3(box.min)); min->ChildGet("X")->SetValue(box.min.x); min->ChildGet("Y")->SetValue(box.min.y); min->ChildGet("Z")->SetValue(box.min.z); QtPropertyData* max = ChildGet("max"); max->SetValue(FromVector3(box.max)); max->ChildGet("X")->SetValue(box.max.x); max->ChildGet("Y")->SetValue(box.max.y); max->ChildGet("Z")->SetValue(box.max.z); } break; } }
void QtPropertyDataDavaVariant::ChildsCreate() { switch(curVariantValue.type) { case DAVA::VariantType::TYPE_KEYED_ARCHIVE: { DAVA::KeyedArchive *archive = curVariantValue.AsKeyedArchive(); DAVA::Map<DAVA::String, DAVA::VariantType*> data = archive->GetArchieveData(); DAVA::Map<DAVA::String, DAVA::VariantType*>::iterator i = data.begin(); for(; i != data.end(); ++i) { ChildAdd(i->first.c_str(), new QtPropertyDataDavaVariant(*(i->second))); } } break; case DAVA::VariantType::TYPE_MATRIX2: break; case DAVA::VariantType::TYPE_MATRIX3: break; case DAVA::VariantType::TYPE_MATRIX4: break; case DAVA::VariantType::TYPE_VECTOR2: { DAVA::Vector2 vec = curVariantValue.AsVector2(); ChildAdd("X", vec.x); ChildAdd("Y", vec.y); } break; case DAVA::VariantType::TYPE_VECTOR3: { DAVA::Vector3 vec = curVariantValue.AsVector3(); ChildAdd("X", vec.x); ChildAdd("Y", vec.y); ChildAdd("Z", vec.z); } break; case DAVA::VariantType::TYPE_VECTOR4: { DAVA::Vector4 vec = curVariantValue.AsVector4(); ChildAdd("X", vec.x); ChildAdd("Y", vec.y); ChildAdd("Z", vec.z); ChildAdd("W", vec.w); } break; case DAVA::VariantType::TYPE_COLOR: { // DAVA::Color color = curVariantValue.AsColor(); // ChildAdd("R", color.r); // ChildAdd("G", color.g); // ChildAdd("B", color.b); // ChildAdd("A", color.a); } break; case DAVA::VariantType::TYPE_AABBOX3: { DAVA::AABBox3 box = curVariantValue.AsAABBox3(); ChildAdd("min", FromVector3(box.min)); ChildAdd("max", FromVector3(box.max)); QtPropertyData* min = ChildGet("min"); min->SetFlags(FLAG_IS_NOT_EDITABLE); min->ChildAdd("X", box.min.x); min->ChildAdd("Y", box.min.y); min->ChildAdd("Z", box.min.z); QtPropertyData* max = ChildGet("max"); max->SetFlags(FLAG_IS_NOT_EDITABLE); max->ChildAdd("X", box.max.x); max->ChildAdd("Y", box.max.y); max->ChildAdd("Z", box.max.z); } break; } }