From 59d23c161921890425e8d2e91441381d0fef0a32 Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Wed, 15 Jan 2020 10:53:13 -0500 Subject: Add info page selected by steering wheel event Add a information window that can be switched to based on the "event.info" event from signal composer that the steering wheel "Info" button results in. For now, it simply displays the vehicle and engine speed in numeric form in a larger font, and a small time display. The speeds are also driven by the corresponding signal composer events that are hooked to the underlying CAN messages. Bug-AGL: SPEC-3109 Signed-off-by: Scott Murray Change-Id: Ibe66ecdb94b854d4ebc7f98ad7e1bf01fc615f1a --- app/qml/InfoWindow.qml | 101 +++++++++++++++++++++++++++++++++++++++++++++++++ app/qml/Main.qml | 44 ++++++++++++++++++++- app/qml/TbtBoard.qml | 17 +++++---- 3 files changed, 152 insertions(+), 10 deletions(-) create mode 100644 app/qml/InfoWindow.qml (limited to 'app/qml') diff --git a/app/qml/InfoWindow.qml b/app/qml/InfoWindow.qml new file mode 100644 index 0000000..4acba5d --- /dev/null +++ b/app/qml/InfoWindow.qml @@ -0,0 +1,101 @@ +import QtQuick 2.9 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 + +Rectangle { + id: infoWindow + + anchors.fill: parent + color: "black" + + property date now: new Date + Timer { + interval: 100; running: true; repeat: true; + onTriggered: parent.now = new Date + } + + ColumnLayout { + anchors.fill: parent + spacing: 0 + + Text { + Layout.fillWidth: true + Layout.fillHeight: false + Layout.alignment: Qt.AlignHCenter + Layout.topMargin: parent.height / 10 + + text: now.toLocaleString(Qt.locale("en_US"), 'h:mm A') + font.pixelSize: 40 + color: "white" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + padding: 0 + } + + Text { + id: speedText + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + Layout.topMargin: parent.height / 10 + + text: tbtnavi.vehicleSpeed.toFixed(0) + color: "white" + font.pixelSize: 280 + // Slight hack to shrink the border around the text by tweaking + // the line height, note that it is font size dependent + lineHeight: 0.8 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + padding: 0 + } + Text { + id: speedLabel + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + + text: "MPH" + color: "white" + font.pixelSize: 32 + font.bold: true + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + padding: 0 + } + + Text { + id: rpmText + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + Layout.topMargin: parent.height / 16 + + text: tbtnavi.engineSpeed.toFixed(0) + color: "white" + font.pixelSize: 64 + font.bold: true + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + padding: 0 + } + Text { + id: rpmLabel + Layout.fillWidth: true + Layout.alignment: Qt.AlignHCenter + + text: "RPM" + color: "white" + font.pixelSize: 32 + font.bold: true + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + padding: 0 + } + + // Use height filling rectangle to push things together, + // saving tinkering with minimum/preferred heights + Rectangle { + Layout.fillWidth: true + Layout.fillHeight: true + color: "black" + } + } +} diff --git a/app/qml/Main.qml b/app/qml/Main.qml index 346cded..7c83f37 100644 --- a/app/qml/Main.qml +++ b/app/qml/Main.qml @@ -4,22 +4,62 @@ import QtQuick.Controls 2.2 import "qrc:/qml" ApplicationWindow { - id: window + id: tbtnavi title: "Turn By Turn Navigation Demo" height: 720 width: 640 visible: true + property double vehicleSpeed: 0 + property double engineSpeed: 0 + + Connections { + target: SignalComposer + + onSignalEvent: { + //console.log ("Received uid = " + uid + ", value = " + value) + if (uid === "event.info" && value === "true") { + console.log ("Switching views!") + console.log ("currentIndex = " + container.currentIndex) + if (container.currentIndex === 0) { + console.log ("Switching to info") + container.currentIndex = 1 + } else if (container.currentIndex === 1) { + console.log ("Switching to map") + container.currentIndex = 0 + } + } else if (uid === "event.vehicle.speed") { + var speed_tmp = parseFloat(value) + if(units == "km/h") { + speed_tmp /= 1.609 + } + vehicleSpeed = speed_tmp + } else if (uid === "event.engine.speed") { + engineSpeed = parseFloat(value) + } + } + } + Item { + id: container anchors.centerIn: parent width: parent.width height: parent.height + property int currentIndex: 0 + MapWindow { - id: mapwindow + visible: parent.currentIndex === 0 + opacity: parent.currentIndex === 0 ? 1.0 : 0.0 anchors.fill: parent objectName: "mapwindow" } + + InfoWindow { + visible: parent.currentIndex === 1 + opacity: parent.currentIndex === 1 ? 1.0 : 0.0 + anchors.fill: parent + } } } diff --git a/app/qml/TbtBoard.qml b/app/qml/TbtBoard.qml index cf6f537..ccec5fd 100644 --- a/app/qml/TbtBoard.qml +++ b/app/qml/TbtBoard.qml @@ -163,16 +163,17 @@ Item { // Set distance function do_setDistance(dis) { - if(dis > 1000) - { - distanceBoard.text = (dis / 1000).toFixed(1) + " km" - } - else - { - distanceBoard.text = dis + " m" + if(dis > 1000) { + distanceBoard.text = (dis / 1000).toFixed(1) + " km" + } else { + distanceBoard.text = dis + " m" } - distance.text = (((dis/100).toFixed(0))*100) +"m" + if(dis > 0) { + distance.text = (((dis/100).toFixed(0))*100) +"m" + } else { + distance.text = "" + } } //set turnInstructions -- cgit 1.2.3-korg