diff options
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/modelnode.cpp')
-rw-r--r-- | src/plugins/qmldesigner/designercore/model/modelnode.cpp | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/modelnode.cpp b/src/plugins/qmldesigner/designercore/model/modelnode.cpp index 61d0f93cf5..eb2d285997 100644 --- a/src/plugins/qmldesigner/designercore/model/modelnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/modelnode.cpp @@ -93,7 +93,25 @@ ModelNode::ModelNode(const ModelNode &modelNode, AbstractView *view) m_model(modelNode.model()), m_view(view) { +} +ModelNode::ModelNode(ModelNode &&other) + : m_internalNode(std::move(other.m_internalNode)) + , m_model(std::move(other.m_model)) + , m_view(std::move(other.m_view)) +{ + other.m_model = {}; + other.m_view = {}; +} + +ModelNode &ModelNode::operator=(ModelNode &&other) +{ + ModelNode newNode; + + swap(other, newNode); + swap(*this, newNode); + + return *this; } /*! \brief contructs a invalid model node @@ -103,7 +121,6 @@ ModelNode::ModelNode(const ModelNode &modelNode, AbstractView *view) ModelNode::ModelNode(): m_internalNode(new InternalNode) { - } ModelNode::ModelNode(const ModelNode &other) = default; @@ -1150,6 +1167,65 @@ void ModelNode::removeAnnotation() } } +Annotation ModelNode::globalAnnotation() const +{ + Annotation result; + ModelNode root = view()->rootModelNode(); + + if (hasGlobalAnnotation()) + result.fromQString(root.auxiliaryData(globalAnnotationProperty).value<QString>()); + + return result; +} + +bool ModelNode::hasGlobalAnnotation() const +{ + return view()->rootModelNode().hasAuxiliaryData(globalAnnotationProperty); +} + +void ModelNode::setGlobalAnnotation(const Annotation &annotation) +{ + view()->rootModelNode().setAuxiliaryData(globalAnnotationProperty, + QVariant::fromValue<QString>(annotation.toQString())); +} + +void ModelNode::removeGlobalAnnotation() +{ + if (hasGlobalAnnotation()) { + view()->rootModelNode().removeAuxiliaryData(globalAnnotationProperty); + } +} + +GlobalAnnotationStatus ModelNode::globalStatus() const +{ + GlobalAnnotationStatus result; + ModelNode root = view()->rootModelNode(); + + if (hasGlobalAnnotation()) { + result.fromQString(root.auxiliaryData(globalAnnotationStatus).value<QString>()); + } + + return result; +} + +bool ModelNode::hasGlobalStatus() const +{ + return view()->rootModelNode().hasAuxiliaryData(globalAnnotationStatus); +} + +void ModelNode::setGlobalStatus(const GlobalAnnotationStatus &status) +{ + view()->rootModelNode().setAuxiliaryData(globalAnnotationStatus, + QVariant::fromValue<QString>(status.toQString())); +} + +void ModelNode::removeGlobalStatus() +{ + if (hasGlobalStatus()) { + view()->rootModelNode().removeAuxiliaryData(globalAnnotationStatus); + } +} + void ModelNode::setScriptFunctions(const QStringList &scriptFunctionList) { model()->d->setScriptFunctions(internalNode(), scriptFunctionList); |