diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2017-04-21 15:47:07 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2017-04-25 15:14:23 +0000 |
commit | 6a6dffb9c62fbdce1949313cfaded3037ea7fafa (patch) | |
tree | 92a6acbab5755c49f236b2a14ec5f9a099e6cba7 /src/plugins/qmldesigner/designercore/metainfo/nodemetainfo.cpp | |
parent | c5d37af0e0fac7f1b9923d98d6e25b2a28a7645a (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.cpp | 31 |
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 |