aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2017-04-21 15:47:07 +0200
committerTim Jenssen <tim.jenssen@qt.io>2017-04-25 15:14:23 +0000
commit6a6dffb9c62fbdce1949313cfaded3037ea7fafa (patch)
tree92a6acbab5755c49f236b2a14ec5f9a099e6cba7 /src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
parentc5d37af0e0fac7f1b9923d98d6e25b2a28a7645a (diff)
QmlDesigner: improve check class hierarchy code
- improve existing superClasses() via using transform (internal it uses reserve, shorter, ...) - remove unused superClassNames() if necessary it can be done by a simple transform call - introduce and use classHierarchy() and fix foreach loop which was using wrong "modelNode" instead of "superClass" Change-Id: Ia52bcbd322f3a047a020faf4a67aca2a1b8fd19a Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp')
-rw-r--r--src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp31
1 files changed, 12 insertions, 19 deletions
diff --git a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
index 66e636f20a..f3953f1a63 100644
--- a/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
+++ b/src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp
@@ -41,6 +41,7 @@
#include <languageutils/fakemetaobject.h>
#include <utils/qtcassert.h>
+#include <utils/algorithm.h>
namespace QmlDesigner {
@@ -1449,32 +1450,24 @@ QVariant NodeMetaInfo::propertyCastedValue(const PropertyName &propertyName, con
return Internal::PropertyParser::variantFromString(variant.toString());
}
-QList<NodeMetaInfo> NodeMetaInfo::superClasses() const
+QList<NodeMetaInfo> NodeMetaInfo::classHierarchy() const
{
- QList<NodeMetaInfo> list;
-
- foreach (const Internal::TypeDescription &type, m_privateData->prototypes()) {
- list.append(NodeMetaInfo(m_privateData->model(), type.className.toUtf8(), type.majorVersion, type.minorVersion));
- }
- return list;
+ QList<NodeMetaInfo> hierarchy = {*this};
+ hierarchy.append(superClasses());
+ return hierarchy;
}
-NodeMetaInfo NodeMetaInfo::directSuperClass() const
+QList<NodeMetaInfo> NodeMetaInfo::superClasses() const
{
- QList<NodeMetaInfo> superClassesList = superClasses();
- if (superClassesList.count() > 1)
- return superClassesList.at(1);
- return NodeMetaInfo();
+ Model *model = m_privateData->model();
+ return Utils::transform(m_privateData->prototypes(), [model](const Internal::TypeDescription &type) {
+ return NodeMetaInfo(model, type.className.toUtf8(), type.majorVersion, type.minorVersion);
+ });
}
-QStringList NodeMetaInfo::superClassNames() const
+NodeMetaInfo NodeMetaInfo::directSuperClass() const
{
- QStringList list;
-
- foreach (const Internal::TypeDescription &type, m_privateData->prototypes()) {
- list.append(type.className);
- }
- return list;
+ return superClasses().value(1, NodeMetaInfo());
}
bool NodeMetaInfo::defaultPropertyIsComponent() const