QString QmlModelState::name() const { if (isBaseState()) return QString(); return modelNode().variantProperty("name").value().toString(); }
/*! \brief Returns if this state affects the specified ModelNode \return true if this state affects the specifigied ModelNode */ bool QmlModelState::affectsModelNode(const ModelNode &node) const { if (isBaseState()) return false; return !stateOperations(node).isEmpty(); }
QmlPropertyChanges QmlModelState::propertyChanges(const ModelNode &node) { if (!isBaseState()) { addChangeSetIfNotExists(node); foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) { //### exception if not valid QmlModelStateOperation if (QmlPropertyChanges::isValidQmlPropertyChanges(childNode) && QmlPropertyChanges(childNode).target().isValid() && QmlPropertyChanges(childNode).target() == node) return QmlPropertyChanges(childNode); //### exception if not valid(childNode); } }
bool QmlModelState::hasStateOperation(const ModelNode &node) const { //### exception if not valid if (isBaseState()) return false; foreach(const QmlModelStateOperation &stateOperation, stateOperations()) { if (stateOperation.target() == node) return true; } return false; }
bool QmlModelState::hasPropertyChanges(const ModelNode &node) const { //### exception if not valid if (isBaseState()) return false; foreach(const QmlPropertyChanges &changeSet, propertyChanges()) { if (changeSet.target().isValid() && changeSet.target() == node) return true; } return false; }
void QmlModelState::removePropertyChanges(const ModelNode &node) { //### exception if not valid if (!isValid()) throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); if (isBaseState()) return; QmlPropertyChanges theChangeSet(propertyChanges(node)); if (theChangeSet.isValid()) theChangeSet.modelNode().destroy(); }
QList<QmlPropertyChanges> QmlModelState::propertyChanges() const { //### exception if not valid QList<QmlPropertyChanges> returnList; if (isBaseState()) return returnList; if (!modelNode().hasProperty("changes")) return returnList; Q_ASSERT(modelNode().property("changes").isNodeListProperty()); foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) { //### exception if not valid QmlModelStateOperation if (QmlPropertyChanges(childNode).isValid()) returnList.append(QmlPropertyChanges(childNode)); } return returnList; }
QList<QmlModelStateOperation> QmlModelState::stateOperations(const ModelNode &node) const { QList<QmlModelStateOperation> returnList; //### exception if not valid if (isBaseState()) return returnList; if (!modelNode().hasProperty("changes")) return returnList; Q_ASSERT(modelNode().property("changes").isNodeListProperty()); foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) { QmlModelStateOperation stateOperation(childNode); if (stateOperation.isValid()) { ModelNode targetNode = stateOperation.target(); if (targetNode.isValid() && targetNode == node) returnList.append(stateOperation); //### exception if not valid(childNode); } } return returnList; //not found }
bool QmlModelState::isValid() const { return QmlModelNodeFacade::isValid() && modelNode().metaInfo().isValid() && (modelNode().metaInfo().isSubclassOf("QtQuick.State", -1, -1) || isBaseState()); }
void QmlModelState::setName(const QString &name) { if ((!isBaseState()) && (modelNode().isValid())) modelNode().variantProperty("name").setValue(name); }