diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-04-09 12:37:32 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-04-09 14:20:30 +0200 |
commit | a38b017331cda15f39f2728278fb9e8bafa41821 (patch) | |
tree | 83c95bcc285ca7d8b9550230e65b670edc1d0641 | |
parent | bf205b45a29ba80d94df3b6bac5fec4c7cd79bf9 (diff) |
qmltyperegistrar: Retain alias and isFlag information for enums
Change-Id: Id484c7bb1a3ed3b2bf593f6197664e4ee2ad4006
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-rw-r--r-- | src/qmltyperegistrar/qmltypescreator.cpp | 6 | ||||
-rw-r--r-- | tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp | 7 | ||||
-rw-r--r-- | tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h | 10 |
3 files changed, 23 insertions, 0 deletions
diff --git a/src/qmltyperegistrar/qmltypescreator.cpp b/src/qmltyperegistrar/qmltypescreator.cpp index 26261795c7..1119f88282 100644 --- a/src/qmltyperegistrar/qmltypescreator.cpp +++ b/src/qmltyperegistrar/qmltypescreator.cpp @@ -213,6 +213,12 @@ void QmlTypesCreator::writeEnums(const QJsonArray &enums) m_qml.writeStartObject(QLatin1String("Enum")); m_qml.writeScriptBinding(QLatin1String("name"), enquote(obj.value(QLatin1String("name")).toString())); + auto alias = obj.find(QLatin1String("alias")); + if (alias != obj.end()) + m_qml.writeScriptBinding(alias.key(), enquote(alias->toString())); + auto isFlag = obj.find(QLatin1String("isFlag")); + if (isFlag != obj.end() && isFlag->toBool()) + m_qml.writeBooleanBinding(isFlag.key(), true); m_qml.writeArrayBinding(QLatin1String("values"), valueList); m_qml.writeEndObject(); } diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp index 8bdee2f937..b3304963d8 100644 --- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp +++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp @@ -58,4 +58,11 @@ void tst_qmltyperegistrar::qmltypesHasFileNames() QVERIFY(qmltypesData.contains("file: \"tst_qmltyperegistrar.h\"")); } +void tst_qmltyperegistrar::qmltypesHasFlags() +{ + QVERIFY(qmltypesData.contains("name: \"Flags\"")); + QVERIFY(qmltypesData.contains("alias: \"Flag\"")); + QVERIFY(qmltypesData.contains("isFlag: true")); +} + QTEST_MAIN(tst_qmltyperegistrar) diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h index 37d49efa40..07a28e1976 100644 --- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h +++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h @@ -37,6 +37,15 @@ class Local : public Foreign { Q_OBJECT QML_ELEMENT +public: + enum Flag { + Flag1 = 0x1, + Flag2 = 0x2, + Flag3 = 0x4, + Flag4 = 0x8 + }; + Q_DECLARE_FLAGS(Flags, Flag) + Q_FLAG(Flags) }; class tst_qmltyperegistrar : public QObject @@ -48,6 +57,7 @@ private slots: void qmltypesHasForeign(); void qmltypesHasHppClassAndNoext(); void qmltypesHasFileNames(); + void qmltypesHasFlags(); private: QByteArray qmltypesData; |