aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2017-09-06 16:22:26 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2017-09-19 13:05:21 +0000
commit245b4f9bfc2e8d2241817a7d117daba65cdf4afb (patch)
tree18037a0fc8fa973f01aa58fcd270d9d4b65d5475
parent88859769f2a06b2fa8502ea758814788c2f619f0 (diff)
ivigenerator: Also connect signals from backend to frontend
Change-Id: If367eca672f311b73ac4494a9ad9405fcb10f6f1 Reviewed-by: Mike Krus <mike.krus@kdab.com>
-rw-r--r--src/tools/ivigenerator/templates_frontend/interface.cpp.tpl28
-rw-r--r--src/tools/ivigenerator/templates_frontend/interface_p.h.tpl7
2 files changed, 35 insertions, 0 deletions
diff --git a/src/tools/ivigenerator/templates_frontend/interface.cpp.tpl b/src/tools/ivigenerator/templates_frontend/interface.cpp.tpl
index 5e5244b..b221e8a 100644
--- a/src/tools/ivigenerator/templates_frontend/interface.cpp.tpl
+++ b/src/tools/ivigenerator/templates_frontend/interface.cpp.tpl
@@ -175,6 +175,28 @@ void {{class}}Private::on{{property|upperfirst}}Changed({{property|parameter_typ
{% endif %}
{% endfor %}
+{% for signal in interface.signals %}
+/*! \internal */
+{% if interface.tags.config.zoned %}
+void {{class}}Private::on{{signal|upperfirst}}({{signal.parameters|map('parameter_type')|join(', ')}}, const QString &zone)
+{
+ auto q = getParent();
+ auto f = qobject_cast<{{class}}*>(q->zoneAt(zone));
+ if (!f)
+ f = q;
+ if (f->zone() != zone)
+ return;
+ emit f->{{signal}}({{signal.parameters|join(', ')}});
+}
+{% else %}
+void {{class}}Private::on{{signal|upperfirst}}({{signal.parameters|map('parameter_type')|join(', ')}})
+{
+ auto q = getParent();
+ emit q->{{signal}}({{signal.parameters|join(', ')}});
+}
+{% endif %}
+
+{% endfor %}
{% if not module.tags.config.disablePrivateIVI %}
bool {{class}}Private::notify(const QByteArray &propertyName, const QVariant &value)
@@ -364,6 +386,12 @@ void {{class}}::connectToServiceObject(QIviServiceObject *serviceObject)
{{Connect}}(backend, &{{class}}BackendInterface::{{property}}Changed,
d, &{{class}}Private::on{{property|upperfirst}}Changed);
{% endfor %}
+{% for signal in interface.signals %}
+{% if module.tags.config.disablePrivateIVI %}{% set Connect = 'QObject::connect' %}
+{% else %}{% set Connect = 'QObjectPrivate::connect' %}{% endif %}
+ {{Connect}}(backend, &{{class}}BackendInterface::{{signal}},
+ d, &{{class}}Private::on{{signal|upperfirst}});
+{% endfor %}
backend->initialize();
}
diff --git a/src/tools/ivigenerator/templates_frontend/interface_p.h.tpl b/src/tools/ivigenerator/templates_frontend/interface_p.h.tpl
index 4f31516..6372e17 100644
--- a/src/tools/ivigenerator/templates_frontend/interface_p.h.tpl
+++ b/src/tools/ivigenerator/templates_frontend/interface_p.h.tpl
@@ -104,6 +104,13 @@ public:
void on{{property|upperfirst}}Changed({{property|parameter_type}});
{% endif %}
{% endfor %}
+{% for signal in interface.signals %}
+{% if interface.tags.config.zoned %}
+ void on{{signal|upperfirst}}({{signal.parameters|map('parameter_type')|join(', ')}}, const QString &zone);
+{% else %}
+ void on{{signal|upperfirst}}({{signal.parameters|map('parameter_type')|join(', ')}});
+{% endif %}
+{% endfor %}
{% if not module.tags.config.disablePrivateIVI %}
bool notify(const QByteArray &propertyName, const QVariant &value) override;