void StatesEditorView::removeState(int nodeId) { try { if (nodeId > 0 && hasModelNodeForInternalId(nodeId)) { ModelNode stateNode(modelNodeForInternalId(nodeId)); Q_ASSERT(stateNode.metaInfo().isSubclassOf("QtQuick.State", -1, -1)); NodeListProperty parentProperty = stateNode.parentProperty().toNodeListProperty(); if (parentProperty.count() <= 1) { setCurrentState(baseState()); } else if (parentProperty.isValid()){ int index = parentProperty.indexOf(stateNode); if (index == 0) setCurrentState(parentProperty.at(1)); else setCurrentState(parentProperty.at(index - 1)); } stateNode.destroy(); } } catch (RewritingException &e) { QMessageBox::warning(0, "Error", e.description()); } }
void QmlModelView::modelAttached(Model *model) { m_state = QmlModelState(); ForwardView<NodeInstanceView>::modelAttached(model); m_state = baseState(); Q_ASSERT(m_state.isBaseState()); }
void StatesEditorView::nodeAboutToBeRemoved(const ModelNode &removedNode) { if (removedNode.hasParentProperty()) { const NodeAbstractProperty propertyParent = removedNode.parentProperty(); if (propertyParent.parentModelNode().isRootNode() && propertyParent.name() == "states") m_lastIndex = propertyParent.indexOf(removedNode); } if (currentState().isValid() && removedNode == currentState()) setCurrentState(baseState()); }
void QmlModelView::customNotification(const AbstractView * /* view */, const QString &identifier, const QList<ModelNode> &nodeList, const QList<QVariant> & /* data */) { if (debug) qDebug() << this << __FUNCTION__ << identifier << nodeList; if (identifier == "__state changed__") { QmlModelState state(nodeList.first()); if (state.isValid()) { activateState(state); } else { activateState(baseState()); } } }
void StatesEditorView::synchonizeCurrentStateFromWidget() { if (!model()) return; int internalId = m_statesEditorWidget->currentStateInternalId(); if (internalId > 0 && hasModelNodeForInternalId(internalId)) { ModelNode node = modelNodeForInternalId(internalId); QmlModelState modelState(node); if (modelState.isValid() && modelState != currentState()) setCurrentState(modelState); } else { setCurrentState(baseState()); } }
void StatesEditorView::renameState(int nodeId, const QString &newName) { if (hasModelNodeForInternalId(nodeId)) { QmlModelState state(modelNodeForInternalId(nodeId)); try { if (state.isValid() && state.name() != newName) { // Jump to base state for the change QmlModelState oldState = currentState(); setCurrentState(baseState()); state.setName(newName); setCurrentState(oldState); } } catch (RewritingException &e) { QMessageBox::warning(0, "Error", e.description()); } } }
void StatesEditorView::renameState(int internalNodeId, const QString &newName) { if (hasModelNodeForInternalId(internalNodeId)) { QmlModelState state(modelNodeForInternalId(internalNodeId)); try { if (state.isValid() && state.name() != newName) { // Jump to base state for the change QmlModelState oldState = currentState(); setCurrentState(baseState()); state.setName(newName); setCurrentState(oldState); } } catch (const RewritingException &e) { e.showException(); } } }
void QmlModelView::changeToState(const ModelNode &node, const QString &stateName) { if (debug) qDebug() << this << __FUNCTION__ << node << stateName; QmlItemNode itemNode(node); QmlModelState newState; if (stateName.isEmpty()) newState = baseState(); else newState = itemNode.states().state(stateName); QmlModelState oldState = m_state; if (newState.isValid() && oldState != newState) { m_state = newState; stateChanged(newState, oldState); } }