forked from qt-creator/qt-creator
QmlDesigner: Refactor QmlModelState
Change-Id: Idd1aac53bafda25a2334fdd84b064f1204755764 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
@@ -53,11 +53,7 @@ QmlModelState::QmlModelState(const ModelNode &modelNode)
|
|||||||
|
|
||||||
QmlPropertyChanges QmlModelState::propertyChanges(const ModelNode &node)
|
QmlPropertyChanges QmlModelState::propertyChanges(const ModelNode &node)
|
||||||
{
|
{
|
||||||
//### exception if not valid
|
if (!isBaseState()) {
|
||||||
|
|
||||||
if (isBaseState())
|
|
||||||
return QmlPropertyChanges();
|
|
||||||
|
|
||||||
addChangeSetIfNotExists(node);
|
addChangeSetIfNotExists(node);
|
||||||
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
||||||
//### exception if not valid QmlModelStateOperation
|
//### exception if not valid QmlModelStateOperation
|
||||||
@@ -66,22 +62,16 @@ QmlPropertyChanges QmlModelState::propertyChanges(const ModelNode &node)
|
|||||||
&& QmlPropertyChanges(childNode).target() == node)
|
&& QmlPropertyChanges(childNode).target() == node)
|
||||||
return QmlPropertyChanges(childNode); //### exception if not valid(childNode);
|
return QmlPropertyChanges(childNode); //### exception if not valid(childNode);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return QmlPropertyChanges(); //not found
|
return QmlPropertyChanges(); //not found
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QmlModelStateOperation> QmlModelState::stateOperations(const ModelNode &node) const
|
QList<QmlModelStateOperation> QmlModelState::stateOperations(const ModelNode &node) const
|
||||||
{
|
{
|
||||||
QList<QmlModelStateOperation> returnList;
|
QList<QmlModelStateOperation> returnList;
|
||||||
//### exception if not valid
|
|
||||||
|
|
||||||
if (isBaseState())
|
|
||||||
return returnList;
|
|
||||||
|
|
||||||
if (!modelNode().hasProperty("changes"))
|
|
||||||
return returnList;
|
|
||||||
|
|
||||||
Q_ASSERT(modelNode().property("changes").isNodeListProperty());
|
|
||||||
|
|
||||||
|
if (!isBaseState() && modelNode().hasNodeListProperty("changes")) {
|
||||||
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
||||||
if (QmlModelStateOperation::isValidQmlModelStateOperation(childNode)) {
|
if (QmlModelStateOperation::isValidQmlModelStateOperation(childNode)) {
|
||||||
QmlModelStateOperation stateOperation(childNode);
|
QmlModelStateOperation stateOperation(childNode);
|
||||||
@@ -90,57 +80,47 @@ QList<QmlModelStateOperation> QmlModelState::stateOperations(const ModelNode &no
|
|||||||
returnList.append(stateOperation); //### exception if not valid(childNode);
|
returnList.append(stateOperation); //### exception if not valid(childNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return returnList; //not found
|
return returnList; //not found
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QmlPropertyChanges> QmlModelState::propertyChanges() const
|
QList<QmlPropertyChanges> QmlModelState::propertyChanges() const
|
||||||
{
|
{
|
||||||
//### exception if not valid
|
|
||||||
QList<QmlPropertyChanges> returnList;
|
QList<QmlPropertyChanges> returnList;
|
||||||
|
|
||||||
if (isBaseState())
|
if (!isBaseState() && modelNode().hasNodeListProperty("changes")) {
|
||||||
return returnList;
|
|
||||||
|
|
||||||
if (!modelNode().hasProperty("changes"))
|
|
||||||
return returnList;
|
|
||||||
|
|
||||||
Q_ASSERT(modelNode().property("changes").isNodeListProperty());
|
|
||||||
|
|
||||||
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
||||||
//### exception if not valid QmlModelStateOperation
|
//### exception if not valid QmlModelStateOperation
|
||||||
if (QmlPropertyChanges(childNode).isValid())
|
if (QmlPropertyChanges::isValidQmlPropertyChanges(childNode))
|
||||||
returnList.append(QmlPropertyChanges(childNode));
|
returnList.append(QmlPropertyChanges(childNode));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return returnList;
|
return returnList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool QmlModelState::hasPropertyChanges(const ModelNode &node) const
|
bool QmlModelState::hasPropertyChanges(const ModelNode &node) const
|
||||||
{
|
{
|
||||||
//### exception if not valid
|
if (!isBaseState() && modelNode().hasNodeListProperty("changes")) {
|
||||||
|
|
||||||
if (isBaseState())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
foreach (const QmlPropertyChanges &changeSet, propertyChanges()) {
|
foreach (const QmlPropertyChanges &changeSet, propertyChanges()) {
|
||||||
if (changeSet.target().isValid() && changeSet.target() == node)
|
if (changeSet.target().isValid() && changeSet.target() == node)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlModelState::hasStateOperation(const ModelNode &node) const
|
bool QmlModelState::hasStateOperation(const ModelNode &node) const
|
||||||
{
|
{
|
||||||
//### exception if not valid
|
if (!isBaseState()) {
|
||||||
|
|
||||||
if (isBaseState())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
foreach (const QmlModelStateOperation &stateOperation, stateOperations()) {
|
foreach (const QmlModelStateOperation &stateOperation, stateOperations()) {
|
||||||
if (stateOperation.target() == node)
|
if (stateOperation.target() == node)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,19 +129,14 @@ QList<QmlModelStateOperation> QmlModelState::stateOperations() const
|
|||||||
//### exception if not valid
|
//### exception if not valid
|
||||||
QList<QmlModelStateOperation> returnList;
|
QList<QmlModelStateOperation> returnList;
|
||||||
|
|
||||||
if (isBaseState())
|
if (!isBaseState() && modelNode().hasNodeListProperty("changes")) {
|
||||||
return returnList;
|
|
||||||
|
|
||||||
if (!modelNode().hasProperty("changes"))
|
|
||||||
return returnList;
|
|
||||||
|
|
||||||
Q_ASSERT(modelNode().property("changes").isNodeListProperty());
|
|
||||||
|
|
||||||
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
||||||
//### exception if not valid QmlModelStateOperation
|
//### exception if not valid QmlModelStateOperation
|
||||||
if (QmlModelStateOperation(childNode).isValid())
|
if (QmlModelStateOperation::isValidQmlModelStateOperation(childNode))
|
||||||
returnList.append(QmlModelStateOperation(childNode));
|
returnList.append(QmlModelStateOperation(childNode));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return returnList;
|
return returnList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,14 +148,10 @@ QList<QmlModelStateOperation> QmlModelState::stateOperations() const
|
|||||||
|
|
||||||
void QmlModelState::addChangeSetIfNotExists(const ModelNode &node)
|
void QmlModelState::addChangeSetIfNotExists(const ModelNode &node)
|
||||||
{
|
{
|
||||||
//### exception if not valid
|
|
||||||
|
|
||||||
if (!isValid())
|
if (!isValid())
|
||||||
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
||||||
|
|
||||||
if (hasPropertyChanges(node))
|
if (!hasPropertyChanges(node)) {
|
||||||
return; //changeSet already there
|
|
||||||
|
|
||||||
ModelNode newChangeSet;
|
ModelNode newChangeSet;
|
||||||
if (view()->majorQtQuickVersion() > 1)
|
if (view()->majorQtQuickVersion() > 1)
|
||||||
newChangeSet = modelNode().view()->createModelNode("QtQuick.PropertyChanges", 2, 0);
|
newChangeSet = modelNode().view()->createModelNode("QtQuick.PropertyChanges", 2, 0);
|
||||||
@@ -190,7 +161,8 @@ void QmlModelState::addChangeSetIfNotExists(const ModelNode &node)
|
|||||||
modelNode().nodeListProperty("changes").reparentHere(newChangeSet);
|
modelNode().nodeListProperty("changes").reparentHere(newChangeSet);
|
||||||
|
|
||||||
QmlPropertyChanges(newChangeSet).setTarget(node);
|
QmlPropertyChanges(newChangeSet).setTarget(node);
|
||||||
Q_ASSERT(QmlPropertyChanges(newChangeSet).isValid());
|
Q_ASSERT(QmlPropertyChanges::isValidQmlPropertyChanges(newChangeSet));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlModelState::removePropertyChanges(const ModelNode &node)
|
void QmlModelState::removePropertyChanges(const ModelNode &node)
|
||||||
@@ -200,12 +172,11 @@ void QmlModelState::removePropertyChanges(const ModelNode &node)
|
|||||||
if (!isValid())
|
if (!isValid())
|
||||||
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
||||||
|
|
||||||
if (isBaseState())
|
if (!isBaseState()) {
|
||||||
return;
|
QmlPropertyChanges changeSet(propertyChanges(node));
|
||||||
|
if (changeSet.isValid())
|
||||||
QmlPropertyChanges theChangeSet(propertyChanges(node));
|
changeSet.modelNode().destroy();
|
||||||
if (theChangeSet.isValid())
|
}
|
||||||
theChangeSet.modelNode().destroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -227,11 +198,11 @@ QList<QmlObjectNode> QmlModelState::allAffectedNodes() const
|
|||||||
QList<QmlObjectNode> returnList;
|
QList<QmlObjectNode> returnList;
|
||||||
|
|
||||||
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) {
|
||||||
//### exception if not valid QmlModelStateOperation
|
if (QmlModelStateOperation::isValidQmlModelStateOperation(childNode) &&
|
||||||
if (QmlModelStateOperation(childNode).isValid() &&
|
|
||||||
!returnList.contains(QmlModelStateOperation(childNode).target()))
|
!returnList.contains(QmlModelStateOperation(childNode).target()))
|
||||||
returnList.append(QmlModelStateOperation(childNode).target());
|
returnList.append(QmlModelStateOperation(childNode).target());
|
||||||
}
|
}
|
||||||
|
|
||||||
return returnList;
|
return returnList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,8 +261,7 @@ QmlModelState QmlModelState::duplicate(const QString &name) const
|
|||||||
if (!isValid())
|
if (!isValid())
|
||||||
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
||||||
|
|
||||||
QmlItemNode parentNode(modelNode().parentProperty().parentModelNode());
|
if (!QmlItemNode::isValidQmlItemNode(modelNode().parentProperty().parentModelNode()))
|
||||||
if (!parentNode.isValid())
|
|
||||||
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
|
||||||
|
|
||||||
// QmlModelState newState(stateGroup().addState(name));
|
// QmlModelState newState(stateGroup().addState(name));
|
||||||
|
Reference in New Issue
Block a user