void VariantProperty::setValue(const QVariant &value) { Internal::WriteLocker locker(model()); if (!isValid()) throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); if (isDynamic()) qWarning() << "Calling VariantProperty::setValue on dynamic property."; if (value.isNull()) throw InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, name()); if (internalNode()->hasProperty(name())) { //check if oldValue != value Internal::InternalProperty::Pointer internalProperty = internalNode()->property(name()); if (internalProperty->isVariantProperty() && internalProperty->toVariantProperty()->value() == value && dynamicTypeName().isEmpty()) return; } if (internalNode()->hasProperty(name()) && !internalNode()->property(name())->isVariantProperty()) model()->d->removeProperty(internalNode()->property(name())); model()->d->setVariantProperty(internalNode(), name(), value); }
void Dynamic::write(Xml& xml) const { xml.stag("Dynamic"); xml.tag("subtype", dynamicTypeName()); writeProperty(xml, P_VELOCITY); writeProperty(xml, P_DYNAMIC_RANGE); Text::writeProperties(xml, dynamicType() == 0); xml.etag(); }
void Dynamic::write(Xml& xml) const { if (!xml.canWrite(this)) return; xml.stag("Dynamic"); xml.tag("subtype", dynamicTypeName()); writeProperty(xml, P_ID::VELOCITY); writeProperty(xml, P_ID::DYNAMIC_RANGE); Text::writeProperties(xml, dynamicType() == Type::OTHER); xml.etag(); }
bool AbstractProperty::isDynamic() const { return !dynamicTypeName().isEmpty(); }