summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorAntti Hölttä <AHoelttae@luxoft.com>2018-03-27 13:45:10 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2018-04-25 13:11:33 +0000
commit4b4a086f310ccf6570214e5ed4911116f8c96240 (patch)
tree282161e9519e81b90f4859144395f37cb47e4d90 /examples
parent7f49ef0fdbe26c9d639e52c3de1fd46ee3af7ab4 (diff)
downloadqtivi-4b4a086f310ccf6570214e5ed4911116f8c96240.tar.gz
Add documentation and an example for QtRemoteObjects templates
Add documentation for remote object templates: update list of template files and add a general description of the remote objects features. Add an example project and a walkthrough to demonstrate the remote objects generation features. Task-number: QTAUTO-919 Change-Id: I3d25d29fd9b9ca2a72bbc6662f05b968d9aa5413 Reviewed-by: Dominik Holland <dominik.holland@pelagicore.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/ivicore/ivicore.pro3
-rw-r--r--examples/ivicore/qface-ivi-remote/backend_qtro/backend_qtro.pro25
-rw-r--r--examples/ivicore/qface-ivi-remote/demo/demo.pro37
-rw-r--r--examples/ivicore/qface-ivi-remote/demo/main.cpp69
-rw-r--r--examples/ivicore/qface-ivi-remote/demo/main.qml103
-rw-r--r--examples/ivicore/qface-ivi-remote/demo/qml.qrc5
-rw-r--r--examples/ivicore/qface-ivi-remote/example-ivi-remote.qface16
-rw-r--r--examples/ivicore/qface-ivi-remote/frontend/frontend.pro18
-rw-r--r--examples/ivicore/qface-ivi-remote/qface-ivi-remote.pro11
-rw-r--r--examples/ivicore/qface-ivi-remote/server_qtro/main.cpp66
-rw-r--r--examples/ivicore/qface-ivi-remote/server_qtro/processingservice.cpp64
-rw-r--r--examples/ivicore/qface-ivi-remote/server_qtro/processingservice.h66
-rw-r--r--examples/ivicore/qface-ivi-remote/server_qtro/server_qtro.pro42
13 files changed, 524 insertions, 1 deletions
diff --git a/examples/ivicore/ivicore.pro b/examples/ivicore/ivicore.pro
index 14dc55e..8e7798d 100644
--- a/examples/ivicore/ivicore.pro
+++ b/examples/ivicore/ivicore.pro
@@ -1,4 +1,5 @@
TEMPLATE = subdirs
QT_FOR_CONFIG += ivicore
-qtConfig(ivigenerator): SUBDIRS = qface-ivi-climate
+qtConfig(ivigenerator): SUBDIRS += qface-ivi-climate
+qtConfig(ivigenerator): qtConfig(remoteobjects): SUBDIRS += qface-ivi-remote
diff --git a/examples/ivicore/qface-ivi-remote/backend_qtro/backend_qtro.pro b/examples/ivicore/qface-ivi-remote/backend_qtro/backend_qtro.pro
new file mode 100644
index 0000000..6b7f191
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/backend_qtro/backend_qtro.pro
@@ -0,0 +1,25 @@
+TEMPLATE=lib
+TARGET = $$qtLibraryTarget(example_ivi_remote)
+CONFIG += ivigenerator plugin
+macos: CONFIG += debug_and_release build_all
+
+QT_FOR_CONFIG += ivicore
+!qtConfig(ivigenerator): error("No ivigenerator available")
+
+LIBS += -L$$OUT_PWD/../ -l$$qtLibraryTarget(QtIviRemoteExample)
+DESTDIR = ../qtivi
+
+CONFIG += warn_off
+INCLUDEPATH += $$OUT_PWD/../frontend
+PLUGIN_TYPE = qtivi
+PLUGIN_EXTENDS = qtivi
+PLUGIN_CLASS_NAME = RemoteClientPlugin
+
+QT += core ivicore
+
+QFACE_FORMAT = backend_qtro
+QFACE_SOURCES = ../example-ivi-remote.qface
+
+CONFIG += install_ok # Do not cargo-cult this!
+target.path = $$[QT_INSTALL_EXAMPLES]/ivicore/qface-ivi-remote/qtivi/
+INSTALLS += target
diff --git a/examples/ivicore/qface-ivi-remote/demo/demo.pro b/examples/ivicore/qface-ivi-remote/demo/demo.pro
new file mode 100644
index 0000000..5a85a7c
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/demo/demo.pro
@@ -0,0 +1,37 @@
+TARGET = qface-ivi-remote
+TEMPLATE = app
+
+QT += qml quick
+CONFIG += c++11
+CONFIG -= app_bundle
+DESTDIR = ../
+
+LIBS += -L$$OUT_PWD/../ -l$$qtLibraryTarget(QtIviRemoteExample)
+INCLUDEPATH += $$OUT_PWD/../frontend
+
+SOURCES += main.cpp
+
+RESOURCES += qml.qrc
+
+QMAKE_RPATHDIR += $ORIGIN
+
+# Additional import path used to resolve QML modules in Qt Creator's code model
+QML_IMPORT_PATH =
+
+# Additional import path used to resolve QML modules just for Qt Quick Designer
+QML_DESIGNER_IMPORT_PATH =
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which as been marked deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+CONFIG += install_ok # Do not cargo-cult this!
+target.path = $$[QT_INSTALL_EXAMPLES]/ivicore/qface-ivi-remote
+INSTALLS += target
diff --git a/examples/ivicore/qface-ivi-remote/demo/main.cpp b/examples/ivicore/qface-ivi-remote/demo/main.cpp
new file mode 100644
index 0000000..1ccba57
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/demo/main.cpp
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtIvi module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD-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.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: BSD-3-Clause
+**
+****************************************************************************/
+
+#include <QGuiApplication>
+#include <QQmlApplicationEngine>
+
+#include <remotemodule.h>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication app(argc, argv);
+
+ RemoteModule::registerTypes();
+ RemoteModule::registerQmlTypes(QLatin1String("IviRemote"), 1, 0);
+
+ QQmlApplicationEngine engine;
+ engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
+
+ return app.exec();
+}
diff --git a/examples/ivicore/qface-ivi-remote/demo/main.qml b/examples/ivicore/qface-ivi-remote/demo/main.qml
new file mode 100644
index 0000000..a5c6c80
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/demo/main.qml
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtIvi module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD-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.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: BSD-3-Clause
+**
+****************************************************************************/
+
+import QtQuick 2.7
+import QtQuick.Controls 2.3
+import QtQuick.Window 2.2
+import IviRemote 1.0
+
+Window {
+ visible: true
+ width: 640
+ height: 480
+ title: qsTr("QtIVI Remote example")
+
+ UiProcessingService {
+ id: processingService
+ }
+
+ Column {
+ anchors.fill: parent
+ anchors.margins: 10
+
+ Row {
+ Button {
+ text: "Process"
+
+ onClicked: processingService.process(inputField.text).then(
+ function(result) { //success callback
+ resultLabel.text = result
+ },
+ function() { //failure callback
+ resultLabel.text = "failed"
+ } )
+ }
+ TextField {
+ placeholderText: "text to process"
+ id: inputField
+ }
+ }
+
+ Row {
+ Text { text: "Processing result: " }
+ Text { id: resultLabel }
+ }
+
+ Row {
+ Text { text: "Last message: " }
+ Text {
+ id: serverMessage
+ text: processingService.lastMessage
+ }
+ }
+ }
+}
diff --git a/examples/ivicore/qface-ivi-remote/demo/qml.qrc b/examples/ivicore/qface-ivi-remote/demo/qml.qrc
new file mode 100644
index 0000000..5f6483a
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/demo/qml.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ </qresource>
+</RCC>
diff --git a/examples/ivicore/qface-ivi-remote/example-ivi-remote.qface b/examples/ivicore/qface-ivi-remote/example-ivi-remote.qface
new file mode 100644
index 0000000..444163e
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/example-ivi-remote.qface
@@ -0,0 +1,16 @@
+/**
+ * Test module
+ */
+module Example.IVI.Remote 1.0;
+
+/**
+ * The ProcessingService provides a QML interface to a service doing
+ * all sorts of heavy processing
+ */
+@config: { id: "example.qtivi.ProcessingService/1.0", qml_type: "UiProcessingService" }
+interface ProcessingService {
+
+ string lastMessage;
+
+ int process(string data);
+}
diff --git a/examples/ivicore/qface-ivi-remote/frontend/frontend.pro b/examples/ivicore/qface-ivi-remote/frontend/frontend.pro
new file mode 100644
index 0000000..9259b86
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/frontend/frontend.pro
@@ -0,0 +1,18 @@
+TARGET = $$qtLibraryTarget(QtIviRemoteExample)
+TEMPLATE = lib
+CONFIG += ivigenerator
+DESTDIR = ..
+macos: CONFIG += debug_and_release build_all
+
+QT_FOR_CONFIG += ivicore
+!qtConfig(ivigenerator): error("No ivigenerator available")
+
+QT += ivicore ivicore-private qml quick
+
+DEFINES += QT_BUILD_REMOTE_LIB
+
+QFACE_SOURCES = ../example-ivi-remote.qface
+
+CONFIG += install_ok # Do not cargo-cult this!
+target.path = $$[QT_INSTALL_EXAMPLES]/ivicore/qface-ivi-remote
+INSTALLS += target
diff --git a/examples/ivicore/qface-ivi-remote/qface-ivi-remote.pro b/examples/ivicore/qface-ivi-remote/qface-ivi-remote.pro
new file mode 100644
index 0000000..f487cec
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/qface-ivi-remote.pro
@@ -0,0 +1,11 @@
+TEMPLATE = subdirs
+
+SUBDIRS = frontend \
+ backend_qtro \
+ server_qtro \
+ demo
+
+CONFIG += ordered
+
+OTHER_FILES += \
+ example-ivi-remote.qface
diff --git a/examples/ivicore/qface-ivi-remote/server_qtro/main.cpp b/examples/ivicore/qface-ivi-remote/server_qtro/main.cpp
new file mode 100644
index 0000000..9eb73d4
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/server_qtro/main.cpp
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 Pelagicore AG
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtIvi module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD-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.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: BSD-3-Clause
+**
+****************************************************************************/
+
+#include <QCoreApplication>
+
+#include "processingservice.h"
+#include "core.h"
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ ProcessingService service;
+ Core::instance()->host()->enableRemoting(&service,QStringLiteral("Example.IVI.Remote.ProcessingService"));
+
+ return app.exec();
+}
diff --git a/examples/ivicore/qface-ivi-remote/server_qtro/processingservice.cpp b/examples/ivicore/qface-ivi-remote/server_qtro/processingservice.cpp
new file mode 100644
index 0000000..a3f154c
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/server_qtro/processingservice.cpp
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 Luxoft GmbH
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtIvi module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD-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.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: BSD-3-Clause
+**
+****************************************************************************/
+
+#include "processingservice.h"
+
+ProcessingService::ProcessingService()
+{
+ setLastMessage("Service online.");
+}
+
+int ProcessingService::process(const QString & data)
+{
+ setLastMessage(QStringLiteral("Processed data \'%1\'").arg(data));
+ return data.length();
+}
diff --git a/examples/ivicore/qface-ivi-remote/server_qtro/processingservice.h b/examples/ivicore/qface-ivi-remote/server_qtro/processingservice.h
new file mode 100644
index 0000000..c7ef6b8
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/server_qtro/processingservice.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 Luxoft GmbH
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtIvi module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD-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.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+** SPDX-License-Identifier: BSD-3-Clause
+**
+****************************************************************************/
+
+#ifndef PROCESSINGSERVICE_H
+#define PROCESSINGSERVICE_H
+
+#include "rep_processingservice_source.h"
+
+class ProcessingService : public ProcessingServiceSimpleSource
+{
+public:
+ ProcessingService();
+
+ int process(const QString & data) override;
+};
+
+#endif // PROCESSINGSERVICE_H
diff --git a/examples/ivicore/qface-ivi-remote/server_qtro/server_qtro.pro b/examples/ivicore/qface-ivi-remote/server_qtro/server_qtro.pro
new file mode 100644
index 0000000..145872e
--- /dev/null
+++ b/examples/ivicore/qface-ivi-remote/server_qtro/server_qtro.pro
@@ -0,0 +1,42 @@
+TARGET = qface-ivi-remote-server
+TEMPLATE = app
+
+QT -= gui
+CONFIG += c++11 ivigenerator
+CONFIG -= app_bundle
+DESTDIR = ../
+
+LIBS += -L$$OUT_PWD/../ -l$$qtLibraryTarget(QtIviRemoteExample)
+INCLUDEPATH += $$OUT_PWD/../frontend
+
+SOURCES += main.cpp \
+ processingservice.cpp
+
+QMAKE_RPATHDIR += $ORIGIN
+
+QFACE_FORMAT = server_qtro
+QFACE_SOURCES = ../example-ivi-remote.qface
+
+# Additional import path used to resolve QML modules in Qt Creator's code model
+QML_IMPORT_PATH =
+
+# Additional import path used to resolve QML modules just for Qt Quick Designer
+QML_DESIGNER_IMPORT_PATH =
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which as been marked deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+CONFIG += install_ok # Do not cargo-cult this!
+target.path = $$[QT_INSTALL_EXAMPLES]/ivicore/qface-ivi-remote-server
+INSTALLS += target
+
+HEADERS += \
+ processingservice.h