aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore/model/modelnode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/modelnode.cpp')
-rw-r--r--src/plugins/qmldesigner/designercore/model/modelnode.cpp78
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);