aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmltyperegistrar
diff options
context:
space:
mode:
authorMaximilian Goldstein <max.goldstein@qt.io>2020-11-20 13:20:52 +0100
committerMaximilian Goldstein <max.goldstein@qt.io>2020-11-23 10:06:41 +0100
commit588d624837ae0174139f8db930ad20612463b1dd (patch)
tree13ef2dba7f6cc9ec4f22fe517c2c16f01db3ad06 /src/qmltyperegistrar
parent87533900738d65ad278722b292852c998e987c10 (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.cpp9
-rw-r--r--src/qmltyperegistrar/qmltypesclassdescription.h1
-rw-r--r--src/qmltyperegistrar/qmltypescreator.cpp8
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,