diff options
author | Dominik Holland <dominik.holland@qt.io> | 2019-12-17 15:33:23 +0100 |
---|---|---|
committer | Dominik Holland <dominik.holland@qt.io> | 2019-12-17 15:33:23 +0100 |
commit | f1e9eea76ff1e97c635e7676a3bf0158b29d2b30 (patch) | |
tree | acbe2dbe7ba692356ca0b73239637b6335ea0d33 /src/tools/ivigenerator/templates_frontend | |
parent | af9ad4676d2a2487a6720deb5dda768c32d9f3c2 (diff) | |
parent | af67d98291f65d7b200d5d603c728f857dba0376 (diff) |
Merge remote-tracking branch 'origin/5.12' into 5.13
Change-Id: I9a2ff22058e273be9334d9ca5a4b86ece7d9626b
Diffstat (limited to 'src/tools/ivigenerator/templates_frontend')
-rw-r--r-- | src/tools/ivigenerator/templates_frontend/struct.cpp.tpl | 49 | ||||
-rw-r--r-- | src/tools/ivigenerator/templates_frontend/struct.h.tpl | 10 |
2 files changed, 30 insertions, 29 deletions
diff --git a/src/tools/ivigenerator/templates_frontend/struct.cpp.tpl b/src/tools/ivigenerator/templates_frontend/struct.cpp.tpl index 7b4a57d..00ea37b 100644 --- a/src/tools/ivigenerator/templates_frontend/struct.cpp.tpl +++ b/src/tools/ivigenerator/templates_frontend/struct.cpp.tpl @@ -109,31 +109,6 @@ public: { } -{{class}}::{{class}}(const QVariant &variant) - : {{class}}() -{ - QVariant value = qtivi_convertFromJSON(variant); - // First try to convert the values to a Map or a List - // This is needed as it could also store a QStringList or a Hash - if (value.canConvert(QVariant::Map)) - value.convert(QVariant::Map); - if (value.canConvert(QVariant::List)) - value.convert(QVariant::List); - - if (value.type() == QVariant::Map) { - QVariantMap map = value.toMap(); -{% for field in struct.fields %} - if (map.contains(QStringLiteral("{{field}}"))) - d->m_{{field}} = map.value(QStringLiteral("{{field}}")).value<{{field|return_type}}>(); -{% endfor %} - } else if (value.type() == QVariant::List) { - QVariantList values = value.toList(); -{% for field in struct.fields %} - d->m_{{field}} = values.value({{loop.index0}}).value<{{field|return_type}}>(); -{% endfor %} - } -} - /*! \internal */ {{class}}::~{{class}}() { @@ -167,6 +142,30 @@ QString {{class}}::type() const {% endfor %} +void {{class}}::fromJSON(const QVariant &variant) +{ + QVariant value = qtivi_convertFromJSON(variant); + // First try to convert the values to a Map or a List + // This is needed as it could also store a QStringList or a Hash + if (value.canConvert(QVariant::Map)) + value.convert(QVariant::Map); + if (value.canConvert(QVariant::List)) + value.convert(QVariant::List); + + if (value.type() == QVariant::Map) { + QVariantMap map = value.toMap(); +{% for field in struct.fields %} + if (map.contains(QStringLiteral("{{field}}"))) + d->m_{{field}} = map.value(QStringLiteral("{{field}}")).value<{{field|return_type}}>(); +{% endfor %} + } else if (value.type() == QVariant::List) { + QVariantList values = value.toList(); +{% for field in struct.fields %} + d->m_{{field}} = values.value({{loop.index0}}).value<{{field|return_type}}>(); +{% endfor %} + } +} + bool operator==(const {{class}} &left, const {{class}} &right) Q_DECL_NOTHROW { if (left.d == right.d) diff --git a/src/tools/ivigenerator/templates_frontend/struct.h.tpl b/src/tools/ivigenerator/templates_frontend/struct.h.tpl index 76639c2..a6ee27b 100644 --- a/src/tools/ivigenerator/templates_frontend/struct.h.tpl +++ b/src/tools/ivigenerator/templates_frontend/struct.h.tpl @@ -73,11 +73,10 @@ class {{exportsymbol}} {{class}} : public QIviStandardItem Q_CLASSINFO("IviPropertyDomains", "{{ struct.fields|json_domain|replace("\"", "\\\"") }}") public: - Q_INVOKABLE {{class}}(); - Q_INVOKABLE {{class}}(const {{class}} &rhs); + {{class}}(); + {{class}}(const {{class}} &rhs); {{class}} &operator=(const {{class}} &); - Q_INVOKABLE {{class}}({{struct.fields|map('parameter_type')|join(', ')}}); - Q_INVOKABLE {{class}}(const QVariant &variant); + {{class}}({{struct.fields|map('parameter_type')|join(', ')}}); ~{{class}}(); QString type() const override; @@ -97,6 +96,9 @@ public: {% endif %} {% endfor %} +protected: + Q_INVOKABLE void fromJSON(const QVariant &variant); + private: QSharedDataPointer<{{class}}Private> d; friend {{exportsymbol}} bool operator==(const {{class}} &left, const {{class}} &right) Q_DECL_NOTHROW; |