diff options
-rw-r--r-- | app/Dashboard.qml | 59 | ||||
-rw-r--r-- | app/app.pro | 2 | ||||
-rw-r--r-- | app/main.cpp | 5 |
3 files changed, 53 insertions, 13 deletions
diff --git a/app/Dashboard.qml b/app/Dashboard.qml index 1b61d4c..4af8a26 100644 --- a/app/Dashboard.qml +++ b/app/Dashboard.qml @@ -34,25 +34,58 @@ ApplicationWindow { property double vehicleSpeed: 0 property double engineSpeed: 0 -/* + property bool mphDisplay: false + + Component.onCompleted : { + VehicleSignals.connect() + } + Connections { - target: SignalComposer + target: VehicleSignals + + onConnected: { + VehicleSignals.authorize() + } - onSignalEvent: { - if (uid === "event.vehicle.speed") { - var speed_tmp = parseFloat(value) - if(units == "km/h") { - speed_tmp /= 1.609 + onAuthorized: { + VehicleSignals.subscribe("Vehicle.Speed") + VehicleSignals.subscribe("Vehicle.Powertrain.CombustionEngine.Engine.Speed") + VehicleSignals.get("Vehicle.Cabin.Infotainment.HMI.DistanceUnit") + VehicleSignals.subscribe("Vehicle.Cabin.Infotainment.HMI.DistanceUnit") + } + + onGetSuccessResponse: { + //console.log("response path = " + path + ", value = " + value) + if (path === "Vehicle.Cabin.Infotainment.HMI.DistanceUnit") { + if (value === "km") { + mphDisplay = false + } else if (value === "mi") { + mphDisplay = true } - vehicleSpeed = speed_tmp } - else if (uid === "event.engine.speed") { + } + + onSignalNotification: { + //console.log("signal path = " + path + ", value = " + value) + if (path === "Vehicle.Speed") { + // value units are always km/h + if (mphDisplay) + vehicleSpeed = parseFloat(value) * 0.621504 + else + vehicleSpeed = parseFloat(value) + } else if (path === "Vehicle.Powertrain.CombustionEngine.Engine.Speed") { engineSpeed = parseFloat(value) tachometer.value = engineSpeed / 7000 + } else if (path === "Vehicle.Cabin.Infotainment.HMI.DistanceUnit") { + if (value === "km") { + mphDisplay = false + } else if (value === "mi") { + mphDisplay = true + } } } } -*/ + Item { id: container anchors.centerIn: parent @@ -64,20 +97,20 @@ ApplicationWindow { anchors.left: parent.left anchors.top: parent.top anchors.margins: 20 - text: vehicleSpeed.toFixed(0) /* MPH */ + text: vehicleSpeed.toFixed(0) font.pixelSize: 256 } Label { id: unit anchors.left: speed.right anchors.baseline: speed.baseline - text: 'MPH' + text: root.mphDisplay ? 'MPH' : "KPH" font.pixelSize: 64 } Label { anchors.left: unit.left anchors.top: unit.bottom - text: '10,000.5 miles' + text: root.mphDisplay ? '10,000.5 miles' : "10,000.5 km" font.pixelSize: 32 opacity: 0.5 } diff --git a/app/app.pro b/app/app.pro index daf4a4c..3fa2880 100644 --- a/app/app.pro +++ b/app/app.pro @@ -3,6 +3,8 @@ TARGET = dashboard QT = qml quick CONFIG += c++11 link_pkgconfig +PKGCONFIG += qtappfw-vehicle-signals + HEADERS += \ translator.h diff --git a/app/main.cpp b/app/main.cpp index ec7b4a1..2327b05 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -17,6 +17,8 @@ #include <QGuiApplication> #include <QQmlApplicationEngine> +#include <QQmlContext> +#include <vehiclesignals.h> #include "translator.h" @@ -28,6 +30,9 @@ int main(int argc, char *argv[]) app.setDesktopFileName("dashboard"); QQmlApplicationEngine engine; + QQmlContext *context = engine.rootContext(); + VehicleSignalsConfig vsConfig("dashboard"); + context->setContextProperty("VehicleSignals", new VehicleSignals(vsConfig)); qmlRegisterType<Translator>("Translator", 1, 0, "Translator"); engine.load(QUrl(QStringLiteral("qrc:/Dashboard.qml"))); |