From 2cdd42fba2645f9578cb1055e501ecc4644da36d Mon Sep 17 00:00:00 2001 From: zheng_wenlong Date: Wed, 14 Nov 2018 12:41:11 +0900 Subject: Add dashboard for horizontal mode Add dashboard for horizontal mode. Change-Id: I216d7be177a46b8664aa5655b7fad022f9904e5d Signed-off-by: zheng_wenlong --- demo3/horizontal/dashboard/app/Dashboard.qml | 302 +++++++++++++++++++++ demo3/horizontal/dashboard/app/TirePressure.qml | 62 +++++ demo3/horizontal/dashboard/app/app.pri | 3 + demo3/horizontal/dashboard/app/app.pro | 17 ++ .../config.tests/libhomescreen/libhomescreen.cpp | 8 + .../config.tests/libhomescreen/libhomescreen.pro | 5 + .../libhomescreen/pkg-config_wrapper.sh | 6 + .../qlibwindowmanager/pkg-config_wrapper.sh | 6 + .../qlibwindowmanager/qlibwindowmanager.cpp | 8 + .../qlibwindowmanager/qlibwindowmanager.pro | 5 + demo3/horizontal/dashboard/app/dashboard.qrc | 6 + .../dashboard/app/images/HMI_Dashboard_Car.png | Bin 0 -> 244241 bytes .../app/images/HMI_Dashboard_Fuel_Details.svg | 48 ++++ .../app/images/HMI_Dashboard_Fuel_Icon.svg | 39 +++ .../app/images/HMI_Dashboard_LeftTire.svg | 80 ++++++ .../app/images/HMI_Dashboard_RightTire.svg | 82 ++++++ .../app/images/HMI_Dashboard_Speed_Icon.svg | 53 ++++ .../app/images/HMI_Dashboard_TirePressure_OK.svg | 61 +++++ demo3/horizontal/dashboard/app/images/images.qrc | 11 + demo3/horizontal/dashboard/app/main.cpp | 31 +++ .../horizontal/dashboard/app/models/CarsModel.qml | 35 +++ .../horizontal/dashboard/app/models/TireModel.qml | 64 +++++ .../horizontal/dashboard/app/models/TripModel.qml | 19 ++ demo3/horizontal/dashboard/app/models/qmldir | 9 + demo3/horizontal/dashboard/app/translations.pri | 16 ++ .../dashboard/app/translations/dashboard_fr_FR.ts | 88 ++++++ .../dashboard/app/translations/dashboard_ja_JP.ts | 88 ++++++ .../dashboard/app/translations/dashboard_zh_CN.ts | 88 ++++++ demo3/horizontal/dashboard/app/translator.cpp | 52 ++++ demo3/horizontal/dashboard/app/translator.h | 32 +++ 30 files changed, 1324 insertions(+) create mode 100644 demo3/horizontal/dashboard/app/Dashboard.qml create mode 100644 demo3/horizontal/dashboard/app/TirePressure.qml create mode 100644 demo3/horizontal/dashboard/app/app.pri create mode 100644 demo3/horizontal/dashboard/app/app.pro create mode 100644 demo3/horizontal/dashboard/app/config.tests/libhomescreen/libhomescreen.cpp create mode 100644 demo3/horizontal/dashboard/app/config.tests/libhomescreen/libhomescreen.pro create mode 100755 demo3/horizontal/dashboard/app/config.tests/libhomescreen/pkg-config_wrapper.sh create mode 100755 demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/pkg-config_wrapper.sh create mode 100644 demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/qlibwindowmanager.cpp create mode 100644 demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/qlibwindowmanager.pro create mode 100644 demo3/horizontal/dashboard/app/dashboard.qrc create mode 100644 demo3/horizontal/dashboard/app/images/HMI_Dashboard_Car.png create mode 100644 demo3/horizontal/dashboard/app/images/HMI_Dashboard_Fuel_Details.svg create mode 100644 demo3/horizontal/dashboard/app/images/HMI_Dashboard_Fuel_Icon.svg create mode 100644 demo3/horizontal/dashboard/app/images/HMI_Dashboard_LeftTire.svg create mode 100644 demo3/horizontal/dashboard/app/images/HMI_Dashboard_RightTire.svg create mode 100644 demo3/horizontal/dashboard/app/images/HMI_Dashboard_Speed_Icon.svg create mode 100644 demo3/horizontal/dashboard/app/images/HMI_Dashboard_TirePressure_OK.svg create mode 100644 demo3/horizontal/dashboard/app/images/images.qrc create mode 100644 demo3/horizontal/dashboard/app/main.cpp create mode 100644 demo3/horizontal/dashboard/app/models/CarsModel.qml create mode 100644 demo3/horizontal/dashboard/app/models/TireModel.qml create mode 100644 demo3/horizontal/dashboard/app/models/TripModel.qml create mode 100644 demo3/horizontal/dashboard/app/models/qmldir create mode 100644 demo3/horizontal/dashboard/app/translations.pri create mode 100644 demo3/horizontal/dashboard/app/translations/dashboard_fr_FR.ts create mode 100644 demo3/horizontal/dashboard/app/translations/dashboard_ja_JP.ts create mode 100644 demo3/horizontal/dashboard/app/translations/dashboard_zh_CN.ts create mode 100644 demo3/horizontal/dashboard/app/translator.cpp create mode 100644 demo3/horizontal/dashboard/app/translator.h (limited to 'demo3/horizontal/dashboard/app') diff --git a/demo3/horizontal/dashboard/app/Dashboard.qml b/demo3/horizontal/dashboard/app/Dashboard.qml new file mode 100644 index 0000000..8de2ad7 --- /dev/null +++ b/demo3/horizontal/dashboard/app/Dashboard.qml @@ -0,0 +1,302 @@ +/* + * Copyright (c) 2018 TOYOTA MOTOR CORPORATION + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import QtQuick 2.6 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.0 +import QtWebSockets 1.0 +import Translator 1.0 + +ApplicationWindow { + id: root + + width: container.width * container.scale + height: container.height * container.scale + + Translator { + id: translator + } + + property string api_str: "low-can" + property string verb_str: "subscribe" + property var msgid_enu: { "call":2, "retok":3, "reterr":4, "event":5 } + property string request_str: "" + property string status_str: "" + + property double speed_val: 0 + property double engineSpeed: 0 + WebSocket { + id: websocket + url: bindingAddress + + onTextMessageReceived: { + var message_json = JSON.parse (message); + /* + console.log ("Raw response: " + message) + console.log ("JSON response: " + message_json) + */ + + if (message_json[0] == msgid_enu.event) { + + var property_name = message_json[2].event.split("/")[1] + if(property_name === "messages.vehicle.average.speed") { + speed_val = message_json[2].data.value + } + else if (property_name === "messages.engine.speed") { + engineSpeed = message_json[2].data.value + tachometer.value = engineSpeed / 7000 + } + } + else + { + if (message_json[0] != msgid_enu.retok) { + console.log ("Return value is not ok !") + return + } + } + /* refresh happen */ + } + onStatusChanged: { + if (websocket.status == WebSocket.Error) { + status_str = "Error: " + websocket.errorString + } + else + if (websocket.status == WebSocket.Open) { + status_str = "Socket opened; sending message..." + if (verb_str == "subscribe") { + request_str ='[' + msgid_enu.call + ',"99998","' + api_str +'/'+ verb_str +'",{ \"event\" : \"vehicle.average.speed\" } ]'; + websocket.sendTextMessage (request_str) + request_str ='[' + msgid_enu.call + ',"99999","' + api_str +'/'+ verb_str +'",{ \"event\" : \"engine.speed\" } ]'; + websocket.sendTextMessage (request_str) + } + } else + if (websocket.status == WebSocket.Closed) { + status_str = "Socket closed" + } + console.log (status_str) + } + active: true + } + + Item { + id: container + anchors.centerIn: parent + width: 1920 + height: 720 + scale: screenInfo.scale_factor() + + Label { + id: speed + anchors.left: parent.left + anchors.top: parent.top + anchors.margins: 20 + text: speed_val.toFixed(0) /* KPH */ + font.pixelSize: 256 + } + Label { + id: unit + anchors.left: speed.right + anchors.baseline: speed.baseline + text: 'Km/h' + font.pixelSize: 64 + } + Label { + anchors.left: unit.left + anchors.top: unit.bottom + text: '100,000.5 km' + font.pixelSize: 32 + opacity: 0.5 + } + + Image { + id: car + anchors.top: parent.top + anchors.topMargin: 50 + anchors.horizontalCenter: container.horizontalCenter + source: './images/HMI_Dashboard_Car.png' + } + + TirePressure { + anchors.right: car.left + anchors.rightMargin: -120 + anchors.bottom: car.bottom + anchors.bottomMargin: -20 + title: translator.translate(qsTr('LEFT FRONT TIRE'), translator.language) + pressure: translator.translate(qsTr('%1 PSI').arg(23.1), translator.language) + } + + TirePressure { + mirror: true + anchors.left: car.right + anchors.leftMargin: -100 + anchors.bottom: car.bottom + anchors.bottomMargin: -20 + title: translator.translate(qsTr('LEFT REAR TIRE'), translator.language) + pressure: translator.translate(qsTr('%1 PSI').arg(31.35), translator.language) + } + + TirePressure { + anchors.right: car.left + anchors.rightMargin: -120 + anchors.bottom: car.top + anchors.bottomMargin: -80 + title: translator.translate(qsTr('RIGHT FRONT TIRE'), translator.language) + pressure: translator.translate(qsTr('%1 PSI').arg(24.2), translator.language) + } + + TirePressure { + mirror: true + anchors.left: car.right + anchors.leftMargin: -100 + anchors.bottom: car.top + anchors.bottomMargin: -80 + title: translator.translate(qsTr('RIGHT REAR TIRE'), translator.language) + pressure: translator.translate(qsTr('%1 PSI').arg(33.0), translator.language) + } + + RowLayout { + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.margins: 100 + + Image { + id: speedIcon + source: './images/HMI_Dashboard_Speed_Icon.svg' + } + ProgressBar { + id: tachometer + Layout.fillWidth: true + value: engineSpeed / 65535 + Label { + anchors.left: parent.left + anchors.top: parent.bottom + anchors.topMargin: 10 + text: translator.translate(qsTr('(RPM)'), translator.language) + font.pixelSize: 26 + } + } + Item { + width: 30 + height: 30 + } + Image { + id: fuelIcon + source: './images/HMI_Dashboard_Fuel_Icon.svg' + } + ProgressBar { + Layout.fillWidth: true + value: 0.66 + Image { + anchors.left: parent.left + anchors.leftMargin: -40 + anchors.bottom: parent.top + source: './images/HMI_Dashboard_Fuel_Details.svg' + GridLayout { + anchors.fill: parent + columns: 2 + rowSpacing: -10 + Label { + Layout.fillWidth: true + Layout.preferredWidth: 3 + Layout.fillHeight: true + verticalAlignment: Label.AlignVCenter + horizontalAlignment: Label.AlignRight + text: translator.translate(qsTr('LEVEL:'), translator.language) + font.pixelSize: 24 + } + Label { + Layout.fillWidth: true + Layout.preferredWidth: 4 + Layout.fillHeight: true + verticalAlignment: Label.AlignVCenter + horizontalAlignment: Label.AlignLeft + text: translator.translate(qsTr('%1 GALLONS').arg(9), translator.language) + font.pixelSize: 24 + color: '#00ADDC' + } + Label { + Layout.fillWidth: true + Layout.preferredWidth: 3 + Layout.fillHeight: true + verticalAlignment: Label.AlignVCenter + horizontalAlignment: Label.AlignRight + text: translator.translate(qsTr('RANGE:'), translator.language) + font.pixelSize: 24 + } + Label { + Layout.fillWidth: true + Layout.preferredWidth: 4 + Layout.fillHeight: true + verticalAlignment: Label.AlignVCenter + horizontalAlignment: Label.AlignLeft + text: translator.translate(qsTr('%1 MI').arg(9), translator.language) + font.pixelSize: 24 + color: '#00ADDC' + } + Label { + Layout.fillWidth: true + Layout.preferredWidth: 3 + Layout.fillHeight: true + verticalAlignment: Label.AlignVCenter + horizontalAlignment: Label.AlignRight + text: translator.translate(qsTr('AVG:'), translator.language) + font.pixelSize: 24 + } + Label { + Layout.fillWidth: true + Layout.preferredWidth: 4 + Layout.fillHeight: true + verticalAlignment: Label.AlignVCenter + horizontalAlignment: Label.AlignLeft + text: translator.translate(qsTr('%1 MPG').arg(25.5), translator.language) + font.pixelSize: 24 + color: '#00ADDC' + } + } + } + + Label { + anchors.left: parent.left + anchors.top: parent.bottom + anchors.topMargin: 10 + text: translator.translate(qsTr('FUEL'), translator.language) + font.pixelSize: 26 + } + } + } + + RowLayout { +// visible: false + anchors.left: parent.left + anchors.bottom: parent.bottom + anchors.right: parent.right + Repeater { + model: ['C', 'fr_FR', 'ja_JP', 'zh_CN'] + + Button { + text: model.modelData + onClicked: { + translator.language = model.modelData + console.log ("Scale = " + screenInfo.scale_factor()) + } + Layout.fillWidth: true + } + } + } +} +} diff --git a/demo3/horizontal/dashboard/app/TirePressure.qml b/demo3/horizontal/dashboard/app/TirePressure.qml new file mode 100644 index 0000000..437cf2f --- /dev/null +++ b/demo3/horizontal/dashboard/app/TirePressure.qml @@ -0,0 +1,62 @@ +import QtQuick 2.6 +import QtQuick.Controls 2.0 + +Image { + id: root + width: sourceSize.width + height: sourceSize.height + property bool mirror: false + property alias title: title.text + property alias pressure: pressure.text + + Label { + id: title + anchors.bottom: pressure.top + font.pixelSize: 24 + } + + Label { + id: pressure + anchors.bottom: parent.bottom + anchors.bottomMargin: 55 + anchors.leftMargin: 140 + anchors.rightMargin: 140 + color: '#00ADDC' + font.pixelSize: 20 + } + + states: [ + State { + name: 'left' + when: !mirror + PropertyChanges { + target: root + source: './images/HMI_Dashboard_LeftTire.svg' + } + AnchorChanges { + target: title + anchors.right: pressure.right + } + AnchorChanges { + target: pressure + anchors.right: parent.right + } + }, + State { + name: 'right' + when: mirror + PropertyChanges { + target: root + source: './images/HMI_Dashboard_RightTire.svg' + } + AnchorChanges { + target: title + anchors.left: pressure.left + } + AnchorChanges { + target: pressure + anchors.left: parent.left + } + } + ] +} diff --git a/demo3/horizontal/dashboard/app/app.pri b/demo3/horizontal/dashboard/app/app.pri new file mode 100644 index 0000000..f22f540 --- /dev/null +++ b/demo3/horizontal/dashboard/app/app.pri @@ -0,0 +1,3 @@ +TEMPLATE = app + +DESTDIR = $${OUT_PWD}/../package/root/bin diff --git a/demo3/horizontal/dashboard/app/app.pro b/demo3/horizontal/dashboard/app/app.pro new file mode 100644 index 0000000..197675e --- /dev/null +++ b/demo3/horizontal/dashboard/app/app.pro @@ -0,0 +1,17 @@ +TARGET = dashboard +QT = quick aglextras + +HEADERS += \ + translator.h + +SOURCES = main.cpp \ + translator.cpp + +RESOURCES += \ + dashboard.qrc \ + images/images.qrc + +include(app.pri) + +LANGUAGES = ja_JP fr_FR zh_CN +include(translations.pri) diff --git a/demo3/horizontal/dashboard/app/config.tests/libhomescreen/libhomescreen.cpp b/demo3/horizontal/dashboard/app/config.tests/libhomescreen/libhomescreen.cpp new file mode 100644 index 0000000..d698b05 --- /dev/null +++ b/demo3/horizontal/dashboard/app/config.tests/libhomescreen/libhomescreen.cpp @@ -0,0 +1,8 @@ +#include + +int main(int argc,char **argv) +{ + LibHomeScreen libHomeScreen; + return 0; +} + diff --git a/demo3/horizontal/dashboard/app/config.tests/libhomescreen/libhomescreen.pro b/demo3/horizontal/dashboard/app/config.tests/libhomescreen/libhomescreen.pro new file mode 100644 index 0000000..7d43112 --- /dev/null +++ b/demo3/horizontal/dashboard/app/config.tests/libhomescreen/libhomescreen.pro @@ -0,0 +1,5 @@ +SOURCES = libhomescreen.cpp + +CONFIG -= qt +CONFIG += link_pkgconfig +PKGCONFIG += libhomescreen diff --git a/demo3/horizontal/dashboard/app/config.tests/libhomescreen/pkg-config_wrapper.sh b/demo3/horizontal/dashboard/app/config.tests/libhomescreen/pkg-config_wrapper.sh new file mode 100755 index 0000000..756b922 --- /dev/null +++ b/demo3/horizontal/dashboard/app/config.tests/libhomescreen/pkg-config_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +PKG_CONFIG_SYSROOT_DIR=/home/tte/work/sdk/sysroots/aarch64-agl-linux +export PKG_CONFIG_SYSROOT_DIR +PKG_CONFIG_LIBDIR=/home/tte/work/sdk/sysroots/aarch64-agl-linux/usr/lib/pkgconfig:/home/tte/work/sdk/sysroots/aarch64-agl-linux/usr/share/pkgconfig:/home/tte/work/sdk/sysroots/aarch64-agl-linux/usr/lib/aarch64-agl-linux/pkgconfig +export PKG_CONFIG_LIBDIR +exec pkg-config "$@" diff --git a/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/pkg-config_wrapper.sh b/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/pkg-config_wrapper.sh new file mode 100755 index 0000000..756b922 --- /dev/null +++ b/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/pkg-config_wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +PKG_CONFIG_SYSROOT_DIR=/home/tte/work/sdk/sysroots/aarch64-agl-linux +export PKG_CONFIG_SYSROOT_DIR +PKG_CONFIG_LIBDIR=/home/tte/work/sdk/sysroots/aarch64-agl-linux/usr/lib/pkgconfig:/home/tte/work/sdk/sysroots/aarch64-agl-linux/usr/share/pkgconfig:/home/tte/work/sdk/sysroots/aarch64-agl-linux/usr/lib/aarch64-agl-linux/pkgconfig +export PKG_CONFIG_LIBDIR +exec pkg-config "$@" diff --git a/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/qlibwindowmanager.cpp b/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/qlibwindowmanager.cpp new file mode 100644 index 0000000..bb95c93 --- /dev/null +++ b/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/qlibwindowmanager.cpp @@ -0,0 +1,8 @@ +#include + +int main(int argc,char **argv) +{ + QLibWindowmanager qwm; + return 0; +} + diff --git a/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/qlibwindowmanager.pro b/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/qlibwindowmanager.pro new file mode 100644 index 0000000..cb51d98 --- /dev/null +++ b/demo3/horizontal/dashboard/app/config.tests/qlibwindowmanager/qlibwindowmanager.pro @@ -0,0 +1,5 @@ +SOURCES = qlibwindowmanager.cpp + +CONFIG += qt +CONFIG += link_pkgconfig +PKGCONFIG += qlibwindowmanager diff --git a/demo3/horizontal/dashboard/app/dashboard.qrc b/demo3/horizontal/dashboard/app/dashboard.qrc new file mode 100644 index 0000000..7e8961f --- /dev/null +++ b/demo3/horizontal/dashboard/app/dashboard.qrc @@ -0,0 +1,6 @@ + + + Dashboard.qml + TirePressure.qml + + diff --git a/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Car.png b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Car.png new file mode 100644 index 0000000..9702107 Binary files /dev/null and b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Car.png differ diff --git a/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Fuel_Details.svg b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Fuel_Details.svg new file mode 100644 index 0000000..a9faad4 --- /dev/null +++ b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Fuel_Details.svg @@ -0,0 +1,48 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Fuel_Icon.svg b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Fuel_Icon.svg new file mode 100644 index 0000000..afb62a9 --- /dev/null +++ b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Fuel_Icon.svg @@ -0,0 +1,39 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + diff --git a/demo3/horizontal/dashboard/app/images/HMI_Dashboard_LeftTire.svg b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_LeftTire.svg new file mode 100644 index 0000000..5926fd7 --- /dev/null +++ b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_LeftTire.svg @@ -0,0 +1,80 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo3/horizontal/dashboard/app/images/HMI_Dashboard_RightTire.svg b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_RightTire.svg new file mode 100644 index 0000000..fc26c86 --- /dev/null +++ b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_RightTire.svg @@ -0,0 +1,82 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Speed_Icon.svg b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Speed_Icon.svg new file mode 100644 index 0000000..a5f9c1b --- /dev/null +++ b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_Speed_Icon.svg @@ -0,0 +1,53 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo3/horizontal/dashboard/app/images/HMI_Dashboard_TirePressure_OK.svg b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_TirePressure_OK.svg new file mode 100644 index 0000000..8d535b5 --- /dev/null +++ b/demo3/horizontal/dashboard/app/images/HMI_Dashboard_TirePressure_OK.svg @@ -0,0 +1,61 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/demo3/horizontal/dashboard/app/images/images.qrc b/demo3/horizontal/dashboard/app/images/images.qrc new file mode 100644 index 0000000..a0ad957 --- /dev/null +++ b/demo3/horizontal/dashboard/app/images/images.qrc @@ -0,0 +1,11 @@ + + + HMI_Dashboard_Car.png + HMI_Dashboard_Fuel_Icon.svg + HMI_Dashboard_LeftTire.svg + HMI_Dashboard_RightTire.svg + HMI_Dashboard_Speed_Icon.svg + HMI_Dashboard_TirePressure_OK.svg + HMI_Dashboard_Fuel_Details.svg + + diff --git a/demo3/horizontal/dashboard/app/main.cpp b/demo3/horizontal/dashboard/app/main.cpp new file mode 100644 index 0000000..97e1217 --- /dev/null +++ b/demo3/horizontal/dashboard/app/main.cpp @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2016 The Qt Company Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include "translator.h" + +int main(int argc, char *argv[]) +{ + AGLApplication app(argc, argv); + app.setApplicationName("Dashboard"); + app.setupApplicationRole("Dashboard"); + + qmlRegisterType("Translator", 1, 0, "Translator"); + app.load(QUrl(QStringLiteral("qrc:/Dashboard.qml"))); + return app.exec(); +} + diff --git a/demo3/horizontal/dashboard/app/models/CarsModel.qml b/demo3/horizontal/dashboard/app/models/CarsModel.qml new file mode 100644 index 0000000..3dcdb74 --- /dev/null +++ b/demo3/horizontal/dashboard/app/models/CarsModel.qml @@ -0,0 +1,35 @@ +/* Copyright (C) 2015, Jaguar Land Rover. All Rights Reserved. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +pragma Singleton + +import QtQuick 2.0 + +ListModel { + ListElement { + name: "F-Type" + mpg: 25 + tank: 18.5 + speed: 171 + image: "images/F-Type_Call_Outs.png" + } + + ListElement { + name: "Range Rover" + mpg: 22 + tank: 27.7 + speed: 162 + image: "images/Range_Rover_Outline_Call_Outs.png" + } + + ListElement { + name: "Land Rover LR4" + mpg: 18 + tank: 22.8 + speed: 121 + image: "images/LR4_Outline_Call_Outs.png" + } +} diff --git a/demo3/horizontal/dashboard/app/models/TireModel.qml b/demo3/horizontal/dashboard/app/models/TireModel.qml new file mode 100644 index 0000000..5c7e5ab --- /dev/null +++ b/demo3/horizontal/dashboard/app/models/TireModel.qml @@ -0,0 +1,64 @@ +/* Copyright (C) 2015, Jaguar Land Rover. All Rights Reserved. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +pragma Singleton + +import QtQuick 2.0 + +Item { + property bool metric: false + property alias pressure: pressureItem + + function psiToBar(value) { + return (metric ? 0.06895 : 1) * value + } + + Item { + id: pressureItem + + property real frontLeft: psiToBar(28 + flDiff) + property real frontRight: psiToBar(28 + frDiff) + property real rearLeft: psiToBar(28 + rlDiff) + property real rearRight: psiToBar(28 + rrDiff) + + property real flDiff: 0 + property real frDiff: 0 + property real rlDiff: 0 + property real rrDiff: 0 + + NumberAnimation on flDiff { + from: -5 + to: 5 + duration: 5000 + loops: Animation.Infinite + easing.type: Easing.CosineCurve + } + + NumberAnimation on frDiff { + from: -5 + to: 5 + duration: 5300 + loops: Animation.Infinite + easing.type: Easing.CosineCurve + } + + NumberAnimation on rlDiff { + from: -5 + to: 5 + duration: 5700 + loops: Animation.Infinite + easing.type: Easing.CosineCurve + } + + NumberAnimation on rrDiff { + from: -5 + to: 5 + duration: 6100 + loops: Animation.Infinite + easing.type: Easing.CosineCurve + } + } +} diff --git a/demo3/horizontal/dashboard/app/models/TripModel.qml b/demo3/horizontal/dashboard/app/models/TripModel.qml new file mode 100644 index 0000000..f2c4d02 --- /dev/null +++ b/demo3/horizontal/dashboard/app/models/TripModel.qml @@ -0,0 +1,19 @@ +/* Copyright (C) 2015, Jaguar Land Rover. All Rights Reserved. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +pragma Singleton + +import QtQuick 2.0 + +Item { + property bool metric: false + + function milesToKm(value) { + return (metric ? 1.60934 : 1) * value + } + + property real distance: milesToKm(100000.5) +} diff --git a/demo3/horizontal/dashboard/app/models/qmldir b/demo3/horizontal/dashboard/app/models/qmldir new file mode 100644 index 0000000..1dc659e --- /dev/null +++ b/demo3/horizontal/dashboard/app/models/qmldir @@ -0,0 +1,9 @@ +#/* Copyright (C) 2015, Jaguar Land Rover. All Rights Reserved. +# * +# * This Source Code Form is subject to the terms of the Mozilla Public +# * License, v. 2.0. If a copy of the MPL was not distributed with this +# * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +singleton CarsModel 1.0 CarsModel.qml +singleton TireModel 1.0 TireModel.qml +singleton TripModel 1.0 TripModel.qml diff --git a/demo3/horizontal/dashboard/app/translations.pri b/demo3/horizontal/dashboard/app/translations.pri new file mode 100644 index 0000000..81bd94b --- /dev/null +++ b/demo3/horizontal/dashboard/app/translations.pri @@ -0,0 +1,16 @@ +defineReplace(prependAll) { + for(a,$$1):result += $$2$${a}$$3 + return($$result) +} + +qtPrepareTool(QMAKE_LRELEASE, lrelease) +TRANSLATIONS = $$prependAll(LANGUAGES, $$PWD/translations/$${TARGET}_,.ts) + +qm.depends = $${TRANSLATIONS} +qm.input = TRANSLATIONS +qm.output = $$OUT_PWD/../package/root/translations/${QMAKE_FILE_BASE}.qm +qm.commands = $$QMAKE_LRELEASE ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT} +qm.name = LRELEASE ${QMAKE_FILE_IN} +qm.CONFIG += no_link +QMAKE_EXTRA_COMPILERS += qm +PRE_TARGETDEPS += compiler_qm_make_all diff --git a/demo3/horizontal/dashboard/app/translations/dashboard_fr_FR.ts b/demo3/horizontal/dashboard/app/translations/dashboard_fr_FR.ts new file mode 100644 index 0000000..2b7cf6e --- /dev/null +++ b/demo3/horizontal/dashboard/app/translations/dashboard_fr_FR.ts @@ -0,0 +1,88 @@ + + + + + Dashboard + + + LEFT FRONT TIRE + Pneu Avant Gauche + + + + + + + %1 PSI + Pression %1 + + + + LEFT REAR TIRE + Pneu Arrière Gauche + + + + RIGHT FRONT TIRE + Pneu Avant Droit + + + + RIGHT REAR TIRE + Pneu Arrière Droit + + + + (RPM) + Tr/mn + + + + LEVEL: + Niveau: + + + + %1 GALLONS + %1 Litres + + + + RANGE: + Autonomie: + + + + %1 MI + %1 Km + + + + AVG: + Moyenne: + + + + %1 MPG + %1 l/100km + + + + FUEL + Carburant + + + + main + + + port for binding + Port du Binder + + + + secret for binding + Secret Binder + + + diff --git a/demo3/horizontal/dashboard/app/translations/dashboard_ja_JP.ts b/demo3/horizontal/dashboard/app/translations/dashboard_ja_JP.ts new file mode 100644 index 0000000..06b25dc --- /dev/null +++ b/demo3/horizontal/dashboard/app/translations/dashboard_ja_JP.ts @@ -0,0 +1,88 @@ + + + + + Dashboard + + + LEFT FRONT TIRE + 左前輪 + + + + + + + %1 PSI + 空気圧 %1 + + + + LEFT REAR TIRE + 左後輪 + + + + RIGHT FRONT TIRE + 右前輪 + + + + RIGHT REAR TIRE + 右後輪 + + + + (RPM) + (RPM) + + + + LEVEL: + レベル: + + + + %1 GALLONS + %1 ガロン + + + + RANGE: + レンジ: + + + + %1 MI + %1 MI + + + + AVG: + 平均: + + + + %1 MPG + %1 MPG + + + + FUEL + 燃料 + + + + main + + + port for binding + + + + + secret for binding + + + + diff --git a/demo3/horizontal/dashboard/app/translations/dashboard_zh_CN.ts b/demo3/horizontal/dashboard/app/translations/dashboard_zh_CN.ts new file mode 100644 index 0000000..ece07f9 --- /dev/null +++ b/demo3/horizontal/dashboard/app/translations/dashboard_zh_CN.ts @@ -0,0 +1,88 @@ + + + + + Dashboard + + + LEFT FRONT TIRE + 左前车胎 + + + + + + + %1 PSI + %1 磅每平方英寸(PSI) + + + + LEFT REAR TIRE + 左后车胎 + + + + RIGHT FRONT TIRE + 右前车胎 + + + + RIGHT REAR TIRE + 右后车胎 + + + + (RPM) + 引擎转速 + + + + LEVEL: + 剩余油量: + + + + %1 GALLONS + %1 加仑 + + + + RANGE: + 续航里程: + + + + %1 MI + %1 英里 + + + + AVG: + 平均油耗: + + + + %1 MPG + %1 英里每加仑(MPG) + + + + FUEL + 燃油 + + + + main + + + port for binding + Binder端口 + + + + secret for binding + Binder令牌 + + + diff --git a/demo3/horizontal/dashboard/app/translator.cpp b/demo3/horizontal/dashboard/app/translator.cpp new file mode 100644 index 0000000..9b67f13 --- /dev/null +++ b/demo3/horizontal/dashboard/app/translator.cpp @@ -0,0 +1,52 @@ +#include "translator.h" + +#include +#include +#include +#include +#include + +Translator::Translator(QObject *parent) + : QObject(parent) + , m_language(QStringLiteral("C")) + , m_translator(nullptr) +{ +} + +QString Translator::translate(const QString &string, const QString &language) const +{ + Q_UNUSED(language) + return string; +} + +QString Translator::language() const +{ + return m_language; +} + +void Translator::setLanguage(const QString &language) +{ + if (m_language == language) return; + m_language = language; + setTranslator(language); + emit languageChanged(language); +} + +void Translator::setTranslator(const QString &language) +{ + if (m_translator) { + QCoreApplication::removeTranslator(m_translator); + } else { + m_translator = new QTranslator(this); + } + QLocale locale(language); + QString fileName = QCoreApplication::instance()->applicationName().toLower(); + qDebug() << "####" << QDir::currentPath() << QCoreApplication::applicationDirPath(); + if (m_translator->load(locale, fileName, QStringLiteral("_"), QStringLiteral("%1/../translations").arg(QCoreApplication::applicationDirPath()))) { + QCoreApplication::installTranslator(m_translator); + } else { + delete m_translator; + m_translator = nullptr; + } +} + diff --git a/demo3/horizontal/dashboard/app/translator.h b/demo3/horizontal/dashboard/app/translator.h new file mode 100644 index 0000000..82c5872 --- /dev/null +++ b/demo3/horizontal/dashboard/app/translator.h @@ -0,0 +1,32 @@ +#ifndef TRANSLATOR_H +#define TRANSLATOR_H + +#include + +class QTranslator; + +class Translator : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged) +public: + explicit Translator(QObject *parent = nullptr); + + QString language() const; + + Q_INVOKABLE QString translate(const QString &string, const QString &language) const; +public slots: + void setLanguage(const QString &language); + +signals: + void languageChanged(const QString &language); + +private slots: + void setTranslator(const QString &language); + +private: + QString m_language; + QTranslator *m_translator; +}; + +#endif // TRANSLATOR_H -- cgit 1.2.3-korg