diff options
author | Maximilian Goldstein <max.goldstein@qt.io> | 2020-11-20 13:20:52 +0100 |
---|---|---|
committer | Maximilian Goldstein <max.goldstein@qt.io> | 2020-11-23 10:06:41 +0100 |
commit | 588d624837ae0174139f8db930ad20612463b1dd (patch) | |
tree | 13ef2dba7f6cc9ec4f22fe517c2c16f01db3ad06 /src/qmltyperegistrar | |
parent | 87533900738d65ad278722b292852c998e987c10 (diff) |
qmltyperegistrar: Expose interface information
Change-Id: Ica3f5c6696542921bc8d399cd46d901ba06f6d83
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qmltyperegistrar')
-rw-r--r-- | src/qmltyperegistrar/qmltypesclassdescription.cpp | 9 | ||||
-rw-r--r-- | src/qmltyperegistrar/qmltypesclassdescription.h | 1 | ||||
-rw-r--r-- | src/qmltyperegistrar/qmltypescreator.cpp | 8 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/qmltyperegistrar/qmltypesclassdescription.cpp b/src/qmltyperegistrar/qmltypesclassdescription.cpp index 94cfd2c2a4..add59ddd17 100644 --- a/src/qmltyperegistrar/qmltypesclassdescription.cpp +++ b/src/qmltyperegistrar/qmltypesclassdescription.cpp @@ -66,6 +66,15 @@ void QmlTypesClassDescription::collect(const QJsonObject *classDef, const QJsonObject *origClassDef = classDef; // if we find QML.Foreign, classDef changes. if (file.isEmpty() && classDef->value(QLatin1String("registerable")).toBool()) file = classDef->value(QLatin1String("inputFile")).toString(); + + if (classDef->contains(QLatin1String("interfaces"))) { + QJsonArray array = classDef->value(QLatin1String("interfaces")).toArray(); + for (const QJsonValue& value : array) { + auto object = value.toArray()[0].toObject(); + implementsInterfaces << object[QLatin1String("className")].toString(); + } + } + const auto classInfos = classDef->value(QLatin1String("classInfos")).toArray(); for (const QJsonValue classInfo : classInfos) { const QJsonObject obj = classInfo.toObject(); diff --git a/src/qmltyperegistrar/qmltypesclassdescription.h b/src/qmltyperegistrar/qmltypesclassdescription.h index 7e496159ff..fd172d1922 100644 --- a/src/qmltyperegistrar/qmltypesclassdescription.h +++ b/src/qmltyperegistrar/qmltypesclassdescription.h @@ -52,6 +52,7 @@ struct QmlTypesClassDescription bool isCreatable = true; bool isSingleton = false; bool isRootClass = false; + QStringList implementsInterfaces; enum CollectMode { TopLevel, diff --git a/src/qmltyperegistrar/qmltypescreator.cpp b/src/qmltyperegistrar/qmltypescreator.cpp index df257d1f53..2a3c10829a 100644 --- a/src/qmltyperegistrar/qmltypescreator.cpp +++ b/src/qmltyperegistrar/qmltypescreator.cpp @@ -96,6 +96,14 @@ void QmlTypesCreator::writeClassProperties(const QmlTypesClassDescription &colle if (!collector.attachedType.isEmpty()) m_qml.writeScriptBinding(QLatin1String("attachedType"), enquote(collector.attachedType)); + + if (!collector.implementsInterfaces.isEmpty()) { + QStringList interfaces; + for (const QString &interface : collector.implementsInterfaces) + interfaces << enquote(interface); + + m_qml.writeArrayBinding(QLatin1String("interfaces"), interfaces); + } } void QmlTypesCreator::writeType(const QJsonObject &property, const QString &key, bool isReadonly, |