QmlDesigner: Add convenience functions

Those helpers make it easy to filter by types.

Change-Id: I36cedba043a1c89c68b98ef03a309ec0d8e67475
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Thomas Hartmann
2019-11-08 15:42:17 +01:00
parent 9af46e5114
commit bfafbfc232
4 changed files with 20 additions and 0 deletions

View File

@@ -164,6 +164,7 @@ public:
bool hasModelNodeForInternalId(qint32 internalId) const; bool hasModelNodeForInternalId(qint32 internalId) const;
QList<ModelNode> allModelNodes() const; QList<ModelNode> allModelNodes() const;
QList<ModelNode> allModelNodesOfType(const TypeName &typeName) const;
void emitDocumentMessage(const QList<DocumentMessage> &errors, const QList<DocumentMessage> &warnings = QList<DocumentMessage>()); void emitDocumentMessage(const QList<DocumentMessage> &errors, const QList<DocumentMessage> &warnings = QList<DocumentMessage>());
void emitDocumentMessage(const QString &error); void emitDocumentMessage(const QString &error);

View File

@@ -107,6 +107,8 @@ public:
bool hasParentProperty() const; bool hasParentProperty() const;
const QList<ModelNode> directSubModelNodes() const; const QList<ModelNode> directSubModelNodes() const;
const QList<ModelNode> directSubModelNodesOfType(const TypeName &typeName) const;
const QList<ModelNode> allSubModelNodes() const; const QList<ModelNode> allSubModelNodes() const;
const QList<ModelNode> allSubModelNodesAndThisNode() const; const QList<ModelNode> allSubModelNodesAndThisNode() const;
bool hasAnySubModelNodes() const; bool hasAnySubModelNodes() const;

View File

@@ -39,6 +39,7 @@
#include <coreplugin/helpmanager.h> #include <coreplugin/helpmanager.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/algorithm.h>
#include <QRegExp> #include <QRegExp>
@@ -635,6 +636,13 @@ QList<ModelNode> AbstractView::allModelNodes() const
return toModelNodeList(model()->d->allNodes()); return toModelNodeList(model()->d->allNodes());
} }
QList<ModelNode> AbstractView::allModelNodesOfType(const TypeName &typeName) const
{
return Utils::filtered(allModelNodes(), [typeName](const ModelNode &node){
return node.metaInfo().isValid() && node.metaInfo().isSubclassOf(typeName);
});
}
void AbstractView::emitDocumentMessage(const QString &error) void AbstractView::emitDocumentMessage(const QString &error)
{ {
emitDocumentMessage({DocumentMessage(error)}); emitDocumentMessage({DocumentMessage(error)});

View File

@@ -42,6 +42,8 @@
#include "nodeproperty.h" #include "nodeproperty.h"
#include <rewriterview.h> #include <rewriterview.h>
#include <utils/algorithm.h>
#include <QHash> #include <QHash>
#include <QRegExp> #include <QRegExp>
#include <QSet> #include <QSet>
@@ -775,6 +777,13 @@ const QList<ModelNode> ModelNode::directSubModelNodes() const
return toModelNodeList(internalNode()->allDirectSubNodes(), view()); return toModelNodeList(internalNode()->allDirectSubNodes(), view());
} }
const QList<ModelNode> ModelNode::directSubModelNodesOfType(const TypeName &typeName) const
{
return Utils::filtered(directSubModelNodes(), [typeName](const ModelNode &node){
return node.metaInfo().isValid() && node.metaInfo().isSubclassOf(typeName);
});
}
/*! /*!
\brief returns all ModelNodes that are direct or indirect children of this ModelNode \brief returns all ModelNodes that are direct or indirect children of this ModelNode