/*! \brief Returns the property containing this node The NodeAbstractProperty is invalid if this ModelNode has no parent. NodeAbstractProperty can be a NodeProperty containing a single ModelNode, or a NodeListProperty. \return the property containing this ModelNode */ NodeAbstractProperty ModelNode::parentProperty() const { if (!isValid()) { Q_ASSERT_X(isValid(), Q_FUNC_INFO, "model node is invalid"); throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); } if (m_internalNode->parentProperty().isNull()) return NodeAbstractProperty(); return NodeAbstractProperty(m_internalNode->parentProperty()->name(), m_internalNode->parentProperty()->propertyOwner(), m_model.data(), view()); }
NodeAbstractProperty ModelNode::nodeAbstractProperty(const QString &name) const { if (!isValid()) throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); return NodeAbstractProperty(name, m_internalNode, model(), view()); }
NodeAbstractProperty AbstractProperty::toNodeAbstractProperty() const { if (!isValid()) throw InvalidPropertyException(__LINE__, __FUNCTION__, __FILE__, m_propertyName); NodeAbstractProperty propertyNodeAbstract(name(), internalNode(), model(), view()); if (propertyNodeAbstract.isNodeAbstractProperty()) return propertyNodeAbstract; return NodeAbstractProperty(); }
NodeAbstractProperty NodeAbstractProperty::parentProperty() const { if (!isValid()) { Q_ASSERT_X(isValid(), Q_FUNC_INFO, "property is invalid"); throw InvalidPropertyException(__LINE__, __FUNCTION__, __FILE__, name()); } if (internalNode()->parentProperty().isNull()) { Q_ASSERT_X(internalNode()->parentProperty(), Q_FUNC_INFO, "parentProperty is invalid"); throw InvalidPropertyException(__LINE__, __FUNCTION__, __FILE__, "parent"); } return NodeAbstractProperty(internalNode()->parentProperty()->name(), internalNode()->parentProperty()->propertyOwner(), model(), view()); }