From 7c452ae1228b01a3db697b5a74c9dee60dcfe352 Mon Sep 17 00:00:00 2001
From: Petr Nechaev <petr.nechaev@cogentembedded.com>
Date: Mon, 3 Aug 2015 14:17:40 +0300
Subject: [PATCH 8/9] Add simple Qt-QML example

The example requires qtdeclarative. It outputs values of basic vehicle
properties.
---
 plugins/dbus/amb-qt/CMakeLists.txt  |  6 +++++
 plugins/dbus/amb-qt/Meter.qml       | 46 +++++++++++++++++++++++++++++++++++++
 plugins/dbus/amb-qt/qtquicktest.cpp | 12 ++++++++++
 plugins/dbus/amb-qt/qtquicktest.qml | 35 ++++++++++++++++++++++++++++
 plugins/dbus/amb-qt/qtquicktest.qrc |  6 +++++
 5 files changed, 105 insertions(+)
 create mode 100644 plugins/dbus/amb-qt/Meter.qml
 create mode 100644 plugins/dbus/amb-qt/qtquicktest.cpp
 create mode 100644 plugins/dbus/amb-qt/qtquicktest.qml
 create mode 100644 plugins/dbus/amb-qt/qtquicktest.qrc

diff --git a/plugins/dbus/amb-qt/CMakeLists.txt b/plugins/dbus/amb-qt/CMakeLists.txt
index 42b7fb4..99f691b 100644
--- a/plugins/dbus/amb-qt/CMakeLists.txt
+++ b/plugins/dbus/amb-qt/CMakeLists.txt
@@ -31,10 +31,16 @@ target_link_libraries(ambqtquick amb-qt ${QT_LIBRARIES} -L${CMAKE_CURRENT_BINARY
 add_executable(ambtestclient test.cpp)
 target_link_libraries(ambtestclient amb amb-qt ${QT_LIBRARIES} -L${CMAKE_CURRENT_BINARY_DIR}/lib ${link_libraries} ${gio_LIBRARIES})
 
+qt5_add_resources(ambqtquicktest_RESOURCES qtquicktest.qrc)
+add_executable(ambqtquicktest qtquicktest.cpp ${ambqtquicktest_RESOURCES})
+target_link_libraries(ambqtquicktest amb amb-qt ${QT_LIBRARIES} -L${CMAKE_CURRENT_BINARY_DIR}/lib ${link_libraries})
+qt5_use_modules(ambqtquicktest Quick Core)
+
 install (TARGETS amb-qt LIBRARY DESTINATION lib${LIB_SUFFIX})
 
 install (FILES ${ambqt_headers} DESTINATION ${INCLUDE_INSTALL_DIR}/ COMPONENT Devel)
 install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/qmldir DESTINATION ${LIB_INSTALL_DIR}/qt5/qml/amb COMPONENT Devel)
 install (TARGETS ambqtquick DESTINATION ${LIB_INSTALL_DIR}/qt5/qml/amb)
 install (TARGETS ambtestclient RUNTIME DESTINATION bin)
+install (TARGETS ambqtquicktest RUNTIME DESTINATION bin)
 endif(qt_bindings)
diff --git a/plugins/dbus/amb-qt/Meter.qml b/plugins/dbus/amb-qt/Meter.qml
new file mode 100644
index 0000000..370e4da
--- /dev/null
+++ b/plugins/dbus/amb-qt/Meter.qml
@@ -0,0 +1,46 @@
+/*
+Copyright (C) 2015 Cogent Embedded Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+import QtQuick 2.0
+import amb 0.1
+
+Row {
+
+    property string name
+    onNameChanged: {
+        // we use objectName.propertyName format
+        var parts = name.split(".");
+        prop.objectName = parts[0];
+        prop.propertyName = parts.length >= 2 ? parts[1] : "Value";
+        prop.connect();
+    }
+
+    spacing: 10
+    Text {
+        text: parent.name
+        font.pointSize: 14
+        width: 300 // this is a guess
+    }
+    Text {
+        text: qsTr("%1").arg(prop.value)
+        font.pointSize: 14
+    }
+
+    AutomotivePropertyItem {
+        id: prop
+    }
+}
diff --git a/plugins/dbus/amb-qt/qtquicktest.cpp b/plugins/dbus/amb-qt/qtquicktest.cpp
new file mode 100644
index 0000000..4735d57
--- /dev/null
+++ b/plugins/dbus/amb-qt/qtquicktest.cpp
@@ -0,0 +1,12 @@
+#include <QGuiApplication>
+#include <QQmlApplicationEngine>
+
+int main(int argc, char *argv[])
+{
+	QGuiApplication app(argc, argv);
+
+	QQmlApplicationEngine engine;
+	engine.load(QUrl(QStringLiteral("qrc:/qtquicktest.qml")));
+
+	return app.exec();
+}
diff --git a/plugins/dbus/amb-qt/qtquicktest.qml b/plugins/dbus/amb-qt/qtquicktest.qml
new file mode 100644
index 0000000..70cd846
--- /dev/null
+++ b/plugins/dbus/amb-qt/qtquicktest.qml
@@ -0,0 +1,35 @@
+/*
+Copyright (C) 2015 Cogent Embedded Inc.
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+import QtQuick 2.0
+import QtQuick.Window 2.0
+
+Window {
+    visible: true
+    width: 500
+    height: 400
+
+    Column {
+        anchors.fill: parent;
+
+        Meter { name: "VehicleSpeed.Speed"}
+        Meter { name: "EngineSpeed.Speed"}
+        Meter { name: "SteeringWheel.Angle"}
+        Meter { name: "ThrottlePosition.Value"}
+        Meter { name: "BrakeOperation.BrakePressure"}
+    }
+}
diff --git a/plugins/dbus/amb-qt/qtquicktest.qrc b/plugins/dbus/amb-qt/qtquicktest.qrc
new file mode 100644
index 0000000..998ec70
--- /dev/null
+++ b/plugins/dbus/amb-qt/qtquicktest.qrc
@@ -0,0 +1,6 @@
+<RCC>
+    <qresource prefix="/">
+        <file>qtquicktest.qml</file>
+        <file>Meter.qml</file>
+    </qresource>
+</RCC>
-- 
1.9.1

