diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2017-09-06 16:22:26 +0200 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2017-09-19 13:05:21 +0000 |
commit | 245b4f9bfc2e8d2241817a7d117daba65cdf4afb (patch) | |
tree | 18037a0fc8fa973f01aa58fcd270d9d4b65d5475 | |
parent | 88859769f2a06b2fa8502ea758814788c2f619f0 (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.tpl | 28 | ||||
-rw-r--r-- | src/tools/ivigenerator/templates_frontend/interface_p.h.tpl | 7 |
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; |