aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2020-01-15 10:53:13 -0500
committerScott Murray <scott.murray@konsulko.com>2020-01-17 16:50:05 +0000
commit59d23c161921890425e8d2e91441381d0fef0a32 (patch)
tree3a89fa7e2afd3d7314379015dcd48b3456d53a43
parentac85ae4ce0a2e5c3bd433db2882422a86539b203 (diff)
Add info page selected by steering wheel eventhalibut_8.0.6halibut_8.0.5halibut/8.0.6halibut/8.0.58.0.68.0.5halibut
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 <scott.murray@konsulko.com> Change-Id: Ibe66ecdb94b854d4ebc7f98ad7e1bf01fc615f1a
-rw-r--r--app/app.qrc1
-rw-r--r--app/main.cpp3
-rw-r--r--app/qml/InfoWindow.qml101
-rw-r--r--app/qml/Main.qml44
-rw-r--r--app/qml/TbtBoard.qml17
-rwxr-xr-x[-rw-r--r--]autobuild/agl/autobuild0
-rw-r--r--package/config.xml1
7 files changed, 157 insertions, 10 deletions
diff --git a/app/app.qrc b/app/app.qrc
index 7ffb6e2..0f1bb81 100644
--- a/app/app.qrc
+++ b/app/app.qrc
@@ -3,6 +3,7 @@
<file>qml/qmldir</file>
<file>qml/Main.qml</file>
<file>qml/MapWindow.qml</file>
+ <file>qml/InfoWindow.qml</file>
<file>qml/TbtBoard.qml</file>
</qresource>
</RCC>
diff --git a/app/main.cpp b/app/main.cpp
index 108ce08..eb00109 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -10,6 +10,7 @@
#include <qlibwindowmanager.h>
#include <qlibhomescreen.h>
#include <navigation.h>
+#include <signalcomposer.h>
#include "navigation_client.h"
#include "qcheapruler.hpp"
@@ -89,6 +90,8 @@ int main(int argc, char *argv[])
Navigation *navigation = new Navigation(bindingAddress, context);
+ context->setContextProperty("SignalComposer", new SignalComposer(bindingAddress, context));
+
engine.load(QUrl(QStringLiteral("qrc:qml/Main.qml")));
QObject *root = engine.rootObjects().first();
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
diff --git a/autobuild/agl/autobuild b/autobuild/agl/autobuild
index e87a1c3..e87a1c3 100644..100755
--- a/autobuild/agl/autobuild
+++ b/autobuild/agl/autobuild
diff --git a/package/config.xml b/package/config.xml
index 37f6067..65a66c5 100644
--- a/package/config.xml
+++ b/package/config.xml
@@ -10,6 +10,7 @@
<param name="windowmanager" value="ws"/>
<param name="homescreen" value="ws"/>
<param name="navigation" value="ws"/>
+ <param name="signal-composer" value="ws"/>
</feature>
<feature name="urn:AGL:widget:required-permission">
<param name="urn:AGL:permission::public:no-htdocs" value="required" />