diff options
-rw-r--r-- | examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro | 2 | ||||
-rw-r--r-- | src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro | 2 | ||||
-rw-r--r-- | src/tools/ivigenerator/common/plugins.qmltypes.tpl (renamed from src/tools/ivigenerator/templates_frontend/plugins.qmltypes.tpl) | 0 | ||||
-rw-r--r-- | src/tools/ivigenerator/common/qmldir.tpl (renamed from src/tools/ivigenerator/templates_frontend/qmldir.tpl) | 0 | ||||
-rw-r--r-- | src/tools/ivigenerator/common/simulation.qmltypes.tpl | 255 | ||||
-rw-r--r-- | src/tools/ivigenerator/ivigenerator.pro | 9 | ||||
-rw-r--r-- | src/tools/ivigenerator/templates_backend_simulator.yaml | 8 |
7 files changed, 272 insertions, 4 deletions
diff --git a/examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro b/examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro index a65f7d5..c1cc0e1 100644 --- a/examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro +++ b/examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro @@ -23,3 +23,5 @@ INSTALLS += target #! [0] RESOURCES += plugin_resource.qrc #! [0] + +QML_IMPORT_PATH = $$OUT_PWD/qml diff --git a/src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro b/src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro index c2f3ff3..400191c 100644 --- a/src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro +++ b/src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro @@ -21,3 +21,5 @@ load(qt_plugin) RESOURCES += \ qml.qrc + +QML_IMPORT_PATH = $$OUT_PWD/qml diff --git a/src/tools/ivigenerator/templates_frontend/plugins.qmltypes.tpl b/src/tools/ivigenerator/common/plugins.qmltypes.tpl index cbe086c..cbe086c 100644 --- a/src/tools/ivigenerator/templates_frontend/plugins.qmltypes.tpl +++ b/src/tools/ivigenerator/common/plugins.qmltypes.tpl diff --git a/src/tools/ivigenerator/templates_frontend/qmldir.tpl b/src/tools/ivigenerator/common/qmldir.tpl index 4ed2cd6..4ed2cd6 100644 --- a/src/tools/ivigenerator/templates_frontend/qmldir.tpl +++ b/src/tools/ivigenerator/common/qmldir.tpl diff --git a/src/tools/ivigenerator/common/simulation.qmltypes.tpl b/src/tools/ivigenerator/common/simulation.qmltypes.tpl new file mode 100644 index 0000000..4ad2f34 --- /dev/null +++ b/src/tools/ivigenerator/common/simulation.qmltypes.tpl @@ -0,0 +1,255 @@ +{# +# Copyright (C) 2019 Luxoft Sweden AB +# Contact: https://www.qt.io/licensing/ +# +# This file is part of the QtIvi module of the Qt Toolkit. +# +# $QT_BEGIN_LICENSE:LGPL-QTAS$ +# Commercial License Usage +# Licensees holding valid commercial Qt Automotive Suite licenses may use +# this file in accordance with the commercial license agreement provided +# with the Software or, alternatively, in accordance with the terms +# contained in a written agreement between you and The Qt Company. For +# licensing terms and conditions see https://www.qt.io/terms-conditions. +# For further information use the contact form at https://www.qt.io/contact-us. +# +# GNU Lesser General Public License Usage +# Alternatively, this file may be used under the terms of the GNU Lesser +# General Public License version 3 as published by the Free Software +# Foundation and appearing in the file LICENSE.LGPL3 included in the +# packaging of this file. Please review the following information to +# ensure the GNU Lesser General Public License version 3 requirements +# will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +# +# GNU General Public License Usage +# Alternatively, this file may be used under the terms of the GNU +# General Public License version 2.0 or (at your option) the GNU General +# Public license version 3 or any later version approved by the KDE Free +# Qt Foundation. The licenses are as published by the Free Software +# Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +# included in the packaging of this file. Please review the following +# information to ensure the GNU General Public License requirements will +# be met: https://www.gnu.org/licenses/gpl-2.0.html and +# https://www.gnu.org/licenses/gpl-3.0.html. +# +# $QT_END_LICENSE$ +# +# SPDX-License-Identifier: LGPL-3.0 +#} +{% import 'qtivi_macros.j2' as ivi %} +{% set module_qml_name = (module|qml_type).split('.')[-1]|upperfirst %} +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated with the QtIvi ivigenerator + +Module { + dependencies: ["QtIvi 1.0"] + Component { + name: "IviSimulator" + prototype: "QIviSimulationGlobalObject" + exports: ["{{module|qml_type}}.simulation/IviSimulator {{module.majorVersion}}.{{module.minorVersion}}"] + isCreatable: false + isSingleton: true + + Property { name: "simulationData"; type: "QVariantMap" } + Method { + name: "findData" + type: "QVariantMap" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "interface"; type: "string" } + } + Method { + name: "initializeDefault" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "defaultValue" + type: "QVariant" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "zone"; type: "string" } + } + Method { + name: "constraint" + type: "string" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "checkSettings" + type: "bool" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "zone"; type: "string" } + } + Method { + name: "parseDomainValue" + type: "QVariant" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "domain"; type: "string" } + Parameter { name: "zone"; type: "string" } + } + } + +{% for interface in module.interfaces %} +{% for property in interface.properties %} +{% if property.type.is_model %} + Component { + name: "{{property|upperfirst}}ModelBackend" + prototype: "{{property|upperfirst}}ModelBackendInterface" + exports: ["{{module|qml_type}}.simulation/{{property|upperfirst}}ModelBackend {{module.majorVersion}}.{{module.minorVersion}}"] + + Property { name: "Base"; type: "{{property|upperfirst}}ModelBackend"; isPointer: true } + + Method { name: "initialize" } + Method { + name: "registerInstance" + Parameter { name: "identifier"; type: "QUuid" } + } + Method { + name: "unregisterInstance" + Parameter { name: "identifier"; type: "QUuid" } + } + Method { + name: "fetchData" + Parameter { name: "identifier"; type: "QUuid" } + Parameter { name: "start"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { + name: "insert" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "{{property.type.nested}}" } + } + Method { + name: "remove" + Parameter { name: "index"; type: "int" } + } + Method { + name: "move" + Parameter { name: "currentIndex"; type: "int" } + Parameter { name: "newIndex"; type: "int" } + } + Method { name: "reset" } + Method { + name: "update" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "{{property.type.nested}}" } + } + Method { + name: "at" + type: "{{property.type.nested}}" + Parameter { name: "index"; type: "int" } + } + } + +{% endif %} +{% endfor %} +{% set class = interface %} +{% set interface_zoned = interface.tags.config and interface.tags.config.zoned %} +{% if interface_zoned %} + Component { + name: "{{class}}Zone" + prototype: "{{class}}Zone" + isCreatable: false + exports: ["{{module|qml_type}}.simulation/{{class}}Zone {{module.majorVersion}}.{{module.minorVersion}}"] + exportMetaObjectRevisions: [0] + Property { name: "zones"; type: "QQmlPropertyMap"; isPointer: true } +{% for property in interface.properties %} + Property { name: "{{property}}" {% if property.type.is_model %}; type: "{{property|upperfirst}}ModelBackend"; isPointer: true {% else %} ; type: "{{property|qml_info_type}}" {% endif %} } +{% endfor %} +{% for property in interface.properties %} + Signal { + name: "{{property}}Changed" + Parameter { name: "{{property}}" {% if property.type.is_model %}; type: "{{property|upperfirst}}ModelBackend"; isPointer: true {% else %} ; type: "{{property|qml_info_type}}" {% endif %} } + } +{% endfor %} +{% for property in interface.properties %} + Method { + name: "{{property|setter_name}}" + Parameter { name: "{{property}}" {% if property.type.is_model %}; type: "{{property|upperfirst}}ModelBackend"; isPointer: true {% else %} ; type: "{{property|qml_info_type}}" {% endif %} } + } +{% endfor %} + } +{% endif %} + Component { + name: "{{class}}Backend" + prototype: "{{class}}BackendInterface" + exports: ["{{module|qml_type}}.simulation/{{class}}Backend {{module.majorVersion}}.{{module.minorVersion}}"] + exportMetaObjectRevisions: [0] + Property { name: "Base"; type: "{{class}}Backend"; isPointer: true } +{% for property in interface.properties %} + Property { name: "{{property}}" {% if property.type.is_model %}; type: "{{property|upperfirst}}ModelBackend"; isPointer: true {% else %} ; type: "{{property|qml_info_type}}" {% endif %} } +{% endfor %} +{% for property in interface.properties %} + Signal { + name: "{{property}}Changed" + Parameter { name: "{{property}}"; type: "{{property|qml_info_type}}" } + } +{% endfor %} +{% for signal in interface.signals %} + Signal { + name: "{{signal}}" +{% for parameter in signal.parameters %} + Parameter { name: "{{parameter}}"; type: "{{parameter|qml_info_type}}" } +{% endfor %} + } +{% endfor %} + Method { name: "initialize" } +{% for operation in interface.operations %} + Method { + name: "{{operation}}" +{# TODO: Once QtCreator can also provide the completion for return types we need to reevaluate this #} + type: "QIviPendingReply<{{operation|return_type}}>" +{% for parameter in operation.parameters %} + Parameter { name: "{{parameter}}"; type: "{{parameter|qml_info_type}}" } +{% endfor %} + } +{% endfor %} +{% for property in interface.properties %} + Method { + name: "{{property|setter_name}}" + Parameter { name: "{{property}}"; type: "{{property|qml_info_type}}" } + } +{% endfor %} + } +{% endfor %} + + Component { + name: "{{module.module_name|upperfirst}}Module" + prototype: "QObject" + exports: ["{{module|qml_type}}.simulation/{{module_qml_name}} {{module.majorVersion}}.{{module.minorVersion}}"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] +{% for enum in module.enums %} + Enum { + name: "{{enum|flag_type}}" + values: { +{% for member in enum.members %} + "{{member.name}}": {{member.value}}{% if not loop.last %},{% endif %} + +{% endfor %} + } + } +{% endfor %} +{% for struct in module.structs %} + Method { + name: "{{struct|lowerfirst}}" + type: "{{struct}}" +{% for fields in struct.fields %} + Parameter { name: "{{fields}}"; type: "{{fields|qml_info_type}}" } +{% endfor %} + } +{% endfor %} +{% for struct in module.structs %} + Method { + name: "{{struct|lowerfirst}}" + type: "{{struct}}" + } +{% endfor %} + } +} diff --git a/src/tools/ivigenerator/ivigenerator.pro b/src/tools/ivigenerator/ivigenerator.pro index cfd64cc..02afe56 100644 --- a/src/tools/ivigenerator/ivigenerator.pro +++ b/src/tools/ivigenerator/ivigenerator.pro @@ -13,7 +13,10 @@ CONFIG -= debug_and_release common.files += \ common/generated_comment.cpp.tpl \ - common/qtivi_macros.j2 + common/qtivi_macros.j2 \ + common/simulation.qmltypes.tpl \ + common/plugins.qmltypes.tpl \ + common/qmldir.tpl common.path = $$[QT_HOST_BINS]/ivigenerator/common templates_frontend.files += \ @@ -30,9 +33,7 @@ templates_frontend.files += \ templates_frontend/modulefactory.cpp.tpl \ templates_frontend/modulefactory.h.tpl \ templates_frontend/struct.cpp.tpl \ - templates_frontend/struct.h.tpl \ - templates_frontend/plugins.qmltypes.tpl \ - templates_frontend/qmldir.tpl + templates_frontend/struct.h.tpl templates_frontend.path = $$[QT_HOST_BINS]/ivigenerator/templates_frontend templates_backend_simulator.files += \ diff --git a/src/tools/ivigenerator/templates_backend_simulator.yaml b/src/tools/ivigenerator/templates_backend_simulator.yaml index f9749d5..c93f586 100644 --- a/src/tools/ivigenerator/templates_backend_simulator.yaml +++ b/src/tools/ivigenerator/templates_backend_simulator.yaml @@ -14,6 +14,14 @@ generate_rules: template_file: "data.qrc.tpl" - dest_file: "{{srcBase|lower}}.pri" template_file: "plugin.pri.tpl" + - dest_file: "qml/{{module|qml_type|replace('.', '/')}}/simulation/plugins.qmltypes" + template_file: "simulation.qmltypes.tpl" + - dest_file: "qml/{{module|qml_type|replace('.', '/')}}/simulation/qmldir" + template_file: "qmldir.tpl" + - dest_file: "qml/{{module|qml_type|replace('.', '/')}}/plugins.qmltypes" + template_file: "plugins.qmltypes.tpl" + - dest_file: "qml/{{module|qml_type|replace('.', '/')}}/qmldir" + template_file: "qmldir.tpl" interface_rules: - dest_file: '{{interface|lower}}backend.h' template_file: 'backend.h.tpl' |