aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/ivigenerator/templates_frontend
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@qt.io>2019-12-17 15:33:23 +0100
committerDominik Holland <dominik.holland@qt.io>2019-12-17 15:33:23 +0100
commitf1e9eea76ff1e97c635e7676a3bf0158b29d2b30 (patch)
treeacbe2dbe7ba692356ca0b73239637b6335ea0d33 /src/tools/ivigenerator/templates_frontend
parentaf9ad4676d2a2487a6720deb5dda768c32d9f3c2 (diff)
parentaf67d98291f65d7b200d5d603c728f857dba0376 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Diffstat (limited to 'src/tools/ivigenerator/templates_frontend')
-rw-r--r--src/tools/ivigenerator/templates_frontend/struct.cpp.tpl49
-rw-r--r--src/tools/ivigenerator/templates_frontend/struct.h.tpl10
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;