summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorOuyang Jun <ouyangj.fnst@cn.fujitsu.com>2019-07-24 04:33:26 -0700
committerOuyang Jun <ouyangj.fnst@cn.fujitsu.com>2019-07-25 00:35:57 -0700
commita61b0a9931e16a51fd819167cc597d84b52ad266 (patch)
tree55ec9cba45cb9518911b497f78573dabc4bebecc /app
parent33258140525123d6a38900811c2df3e14f4e8337 (diff)
Minimal cluster demo gauges that can be used standalone
Bug-AGL: SPEC-2487 Signed-off-by: Ouyang Jun <ouyangj.fnst@cn.fujitsu.com> Signed-off-by: Zhou Mingying <zhoumy@cn.fujitsu.com> Signed-off-by: Liu Wenlong <liuwl.fnst@cn.fujitsu.com> Change-Id: I4859ab9af2f5c3bbeff5ca6b14a7943797518908
Diffstat (limited to 'app')
-rw-r--r--app/CMakeLists.txt48
-rw-r--r--app/DashboardGaugeStyle.qml176
-rw-r--r--app/IconGaugeStyle.qml135
-rw-r--r--app/TachometerStyle.qml127
-rw-r--r--app/TurnIndicator.qml111
-rw-r--r--app/ValueSource.qml420
-rw-r--r--app/cluster-gauges.qml478
-rw-r--r--app/cluster-gauges.qrc10
-rw-r--r--app/images/AGL_Icons_ABS.svg1
-rw-r--r--app/images/AGL_Icons_ABS_red.svg1
-rw-r--r--app/images/AGL_Icons_ABS_yellow.svg1
-rw-r--r--app/images/AGL_Icons_Battery.svg1
-rw-r--r--app/images/AGL_Icons_Battery_red.svg1
-rw-r--r--app/images/AGL_Icons_Battery_yellow.svg1
-rw-r--r--app/images/AGL_Icons_Engine.svg1
-rw-r--r--app/images/AGL_Icons_Engine_red.svg1
-rw-r--r--app/images/AGL_Icons_Engine_yellow.svg1
-rw-r--r--app/images/AGL_Icons_Lights.svg1
-rw-r--r--app/images/AGL_Icons_Lights_red.svg1
-rw-r--r--app/images/AGL_Icons_Lights_yellow.svg1
-rw-r--r--app/images/AGL_Icons_Oil.svg1
-rw-r--r--app/images/AGL_Icons_Oil_red.svg1
-rw-r--r--app/images/AGL_Icons_Oil_yellow.svg1
-rw-r--r--app/images/AGL_Icons_OpenDoor.svg1
-rw-r--r--app/images/AGL_Icons_OpenDoor_red.svg1
-rw-r--r--app/images/AGL_Icons_OpenDoor_yellow.svg1
-rw-r--r--app/images/AGL_Icons_ParkingBrake.svg1
-rw-r--r--app/images/AGL_Icons_ParkingBrake_red.svg1
-rw-r--r--app/images/AGL_Icons_ParkingBrake_yellow.svg1
-rw-r--r--app/images/AGL_Icons_Seatbelt.svg1
-rw-r--r--app/images/AGL_Icons_Seatbelt_red.svg1
-rw-r--r--app/images/AGL_Icons_Seatbelt_yellow.svg1
-rw-r--r--app/images/Utility_Logo_Grey-01.svg84
-rw-r--r--app/images/agl_title_793x211.pngbin0 -> 55357 bytes
-rw-r--r--app/images/fuel-icon.pngbin0 -> 409 bytes
-rw-r--r--app/images/images.qrc32
-rw-r--r--app/images/temperature-icon.pngbin0 -> 3302 bytes
-rw-r--r--app/main.cpp60
38 files changed, 1705 insertions, 0 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
new file mode 100644
index 0000000..8e039e6
--- /dev/null
+++ b/app/CMakeLists.txt
@@ -0,0 +1,48 @@
+###########################################################################
+# Copyright 2018 Konsulko Group
+#
+# Author: Scott Murray <scott.murray@konsulko.com>
+#
+# 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.
+###########################################################################
+
+set(CMAKE_INCLUDE_CURRENT_DIR ON)
+set(CMAKE_AUTOMOC ON)
+set(CMAKE_CXX_STANDARD 14)
+
+find_package(Qt5 COMPONENTS Core Gui QuickControls2 WebSockets QuickWidgets REQUIRED)
+find_package(PkgConfig REQUIRED)
+
+qt5_add_resources(RESOURCES cluster-gauges.qrc images/images.qrc)
+
+PROJECT_TARGET_ADD(cluster-gauges)
+
+add_executable(${TARGET_NAME}
+ main.cpp
+ ${RESOURCES}
+)
+
+set_target_properties(${TARGET_NAME} PROPERTIES
+ LABELS "EXECUTABLE"
+ PREFIX ""
+ COMPILE_FLAGS "${QLIBWINMGR_FLAGS} ${EXTRAS_CFLAGS} -DFOR_AFB_BINDING"
+ LINK_FLAGS "${BINDINGS_LINK_FLAG}"
+ LINK_LIBRARIES "${EXTRAS_LIBRARIES}"
+ OUTPUT_NAME "${TARGET_NAME}"
+)
+
+target_link_libraries(${TARGET_NAME}
+ Qt5::QuickControls2
+ Qt5::QuickWidgets
+ ${QLIBWINMGR_LIBRARIES}
+)
diff --git a/app/DashboardGaugeStyle.qml b/app/DashboardGaugeStyle.qml
new file mode 100644
index 0000000..aafe50f
--- /dev/null
+++ b/app/DashboardGaugeStyle.qml
@@ -0,0 +1,176 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.2
+import QtQuick.Controls.Styles 1.4
+
+CircularGaugeStyle {
+ tickmarkInset: toPixels(0.04)
+ minorTickmarkInset: tickmarkInset
+ labelStepSize: 20
+ labelInset: toPixels(0.23)
+
+ property real xCenter: outerRadius
+ property real yCenter: outerRadius
+ property real needleLength: outerRadius - tickmarkInset * 1.25
+ property real needleTipWidth: toPixels(0.02)
+ property real needleBaseWidth: toPixels(0.06)
+ property bool halfGauge: false
+
+ function toPixels(percentage) {
+ return percentage * outerRadius;
+ }
+
+ function degToRad(degrees) {
+ return degrees * (Math.PI / 180);
+ }
+
+ function radToDeg(radians) {
+ return radians * (180 / Math.PI);
+ }
+
+ function paintBackground(ctx) {
+ if (halfGauge) {
+ ctx.beginPath();
+ ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height / 2);
+ ctx.clip();
+ }
+
+ ctx.beginPath();
+ ctx.fillStyle = "black";
+ ctx.ellipse(0, 0, ctx.canvas.width, ctx.canvas.height);
+ ctx.fill();
+
+ ctx.beginPath();
+ ctx.lineWidth = tickmarkInset;
+ ctx.strokeStyle = "black";
+ ctx.arc(xCenter, yCenter, outerRadius - ctx.lineWidth / 2, outerRadius - ctx.lineWidth / 2, 0, Math.PI * 2);
+ ctx.stroke();
+
+ ctx.beginPath();
+ ctx.lineWidth = tickmarkInset / 2;
+ ctx.strokeStyle = "#222";
+ ctx.arc(xCenter, yCenter, outerRadius - ctx.lineWidth / 2, outerRadius - ctx.lineWidth / 2, 0, Math.PI * 2);
+ ctx.stroke();
+
+ ctx.beginPath();
+ var gradient = ctx.createRadialGradient(xCenter, yCenter, 0, xCenter, yCenter, outerRadius * 1.5);
+ gradient.addColorStop(0, Qt.rgba(1, 1, 1, 0));
+ gradient.addColorStop(0.7, Qt.rgba(1, 1, 1, 0.13));
+ gradient.addColorStop(1, Qt.rgba(1, 1, 1, 1));
+ ctx.fillStyle = gradient;
+ ctx.arc(xCenter, yCenter, outerRadius - tickmarkInset, outerRadius - tickmarkInset, 0, Math.PI * 2);
+ ctx.fill();
+ }
+
+ background: Canvas {
+ onPaint: {
+ var ctx = getContext("2d");
+ ctx.reset();
+ paintBackground(ctx);
+ }
+
+ Text {
+ id: speedText
+ font.pixelSize: toPixels(0.3)
+ text: kphInt
+ color: "white"
+ horizontalAlignment: Text.AlignRight
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.verticalCenter
+ anchors.topMargin: toPixels(0.1)
+
+ readonly property int kphInt: control.value
+ }
+ Text {
+ id: speedLabel
+ text: valueSource.mphDisplay ? "MPH" : "km/h"
+ color: "white"
+ font.pixelSize: toPixels(0.09)
+ anchors.top: speedText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+
+ needle: Canvas {
+ implicitWidth: needleBaseWidth
+ implicitHeight: needleLength
+
+ property real xCenter: width / 2
+ property real yCenter: height / 2
+
+ onPaint: {
+ var ctx = getContext("2d");
+ ctx.reset();
+
+ ctx.beginPath();
+ ctx.moveTo(xCenter, height);
+ ctx.lineTo(xCenter - needleBaseWidth / 2, height - needleBaseWidth / 2);
+ ctx.lineTo(xCenter - needleTipWidth / 2, 0);
+ ctx.lineTo(xCenter, yCenter - needleLength);
+ ctx.lineTo(xCenter, 0);
+ ctx.closePath();
+ ctx.fillStyle = Qt.rgba(0.66, 0, 0, 0.66);
+ ctx.fill();
+
+ ctx.beginPath();
+ ctx.moveTo(xCenter, height)
+ ctx.lineTo(width, height - needleBaseWidth / 2);
+ ctx.lineTo(xCenter + needleTipWidth / 2, 0);
+ ctx.lineTo(xCenter, 0);
+ ctx.closePath();
+ ctx.fillStyle = Qt.lighter(Qt.rgba(0.66, 0, 0, 0.66));
+ ctx.fill();
+ }
+ }
+
+ foreground: null
+}
diff --git a/app/IconGaugeStyle.qml b/app/IconGaugeStyle.qml
new file mode 100644
index 0000000..6247076
--- /dev/null
+++ b/app/IconGaugeStyle.qml
@@ -0,0 +1,135 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.2
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Extras 1.4
+
+DashboardGaugeStyle {
+ id: fuelGaugeStyle
+ minimumValueAngle: -60
+ maximumValueAngle: 60
+ tickmarkStepSize: 1
+ labelStepSize: 1
+ labelInset: toPixels(-0.25)
+ minorTickmarkCount: 3
+
+ needleLength: toPixels(0.85)
+ needleBaseWidth: toPixels(0.08)
+ needleTipWidth: toPixels(0.03)
+
+ halfGauge: true
+
+ property string icon: ""
+ property color minWarningColor: "transparent"
+ property color maxWarningColor: "transparent"
+ readonly property real minWarningStartAngle: minimumValueAngle - 90
+ readonly property real maxWarningStartAngle: maximumValueAngle - 90
+
+ tickmark: Rectangle {
+ implicitWidth: toPixels(0.06)
+ antialiasing: true
+ implicitHeight: toPixels(0.2)
+ color: "#c8c8c8"
+ }
+
+ minorTickmark: Rectangle {
+ implicitWidth: toPixels(0.03)
+ antialiasing: true
+ implicitHeight: toPixels(0.15)
+ color: "#c8c8c8"
+ }
+
+ background: Item {
+ Canvas {
+ anchors.fill: parent
+ onPaint: {
+ var ctx = getContext("2d");
+ ctx.reset();
+
+ paintBackground(ctx);
+
+ if (minWarningColor != "transparent") {
+ ctx.beginPath();
+ ctx.lineWidth = fuelGaugeStyle.toPixels(0.08);
+ ctx.strokeStyle = minWarningColor;
+ ctx.arc(outerRadius, outerRadius,
+ // Start the line in from the decorations, and account for the width of the line itself.
+ outerRadius - tickmarkInset - ctx.lineWidth / 2,
+ degToRad(minWarningStartAngle),
+ degToRad(minWarningStartAngle + angleRange / (minorTickmarkCount + 1)), false);
+ ctx.stroke();
+ }
+ if (maxWarningColor != "transparent") {
+ ctx.beginPath();
+ ctx.lineWidth = fuelGaugeStyle.toPixels(0.08);
+ ctx.strokeStyle = maxWarningColor;
+ ctx.arc(outerRadius, outerRadius,
+ // Start the line in from the decorations, and account for the width of the line itself.
+ outerRadius - tickmarkInset - ctx.lineWidth / 2,
+ degToRad(maxWarningStartAngle - angleRange / (minorTickmarkCount + 1)),
+ degToRad(maxWarningStartAngle), false);
+ ctx.stroke();
+ }
+ }
+ }
+
+ Image {
+ source: icon
+ anchors.bottom: parent.verticalCenter
+ anchors.bottomMargin: toPixels(0.3)
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: toPixels(0.3)
+ height: width
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+}
diff --git a/app/TachometerStyle.qml b/app/TachometerStyle.qml
new file mode 100644
index 0000000..a632eab
--- /dev/null
+++ b/app/TachometerStyle.qml
@@ -0,0 +1,127 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.2
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Extras 1.4
+
+DashboardGaugeStyle {
+ id: tachometerStyle
+ tickmarkStepSize: 1
+ labelStepSize: 1
+ needleLength: toPixels(0.85)
+ needleBaseWidth: toPixels(0.08)
+ needleTipWidth: toPixels(0.03)
+
+ tickmark: Rectangle {
+ implicitWidth: toPixels(0.03)
+ antialiasing: true
+ implicitHeight: toPixels(0.08)
+ color: styleData.index === 7 || styleData.index === 8 ? Qt.rgba(0.5, 0, 0, 1) : "#c8c8c8"
+ }
+
+ minorTickmark: null
+
+ tickmarkLabel: Text {
+ font.pixelSize: Math.max(6, toPixels(0.12))
+ text: styleData.value
+ color: styleData.index === 7 || styleData.index === 8 ? Qt.rgba(0.5, 0, 0, 1) : "#c8c8c8"
+ antialiasing: true
+ }
+
+ background: Canvas {
+ onPaint: {
+ var ctx = getContext("2d");
+ ctx.reset();
+ paintBackground(ctx);
+
+ ctx.beginPath();
+ ctx.lineWidth = tachometerStyle.toPixels(0.08);
+ ctx.strokeStyle = Qt.rgba(0.5, 0, 0, 1);
+ var warningCircumference = maximumValueAngle - minimumValueAngle * 0.1;
+ var startAngle = maximumValueAngle - 90;
+ ctx.arc(outerRadius, outerRadius,
+ // Start the line in from the decorations, and account for the width of the line itself.
+ outerRadius - tickmarkInset - ctx.lineWidth / 2,
+ degToRad(startAngle - angleRange / 8 + angleRange * 0.015),
+ degToRad(startAngle - angleRange * 0.015), false);
+ ctx.stroke();
+ }
+
+ Text {
+ id: rpmText
+ font.pixelSize: tachometerStyle.toPixels(0.3)
+ text: rpmInt
+ color: "white"
+ horizontalAlignment: Text.AlignRight
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.verticalCenter
+ anchors.topMargin: 20
+
+ readonly property int rpmInt: valueSource.rpm
+ }
+ Text {
+ text: "x1000"
+ color: "white"
+ font.pixelSize: tachometerStyle.toPixels(0.1)
+ anchors.top: parent.top
+ anchors.topMargin: parent.height / 4
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ Text {
+ text: "RPM"
+ color: "white"
+ font.pixelSize: tachometerStyle.toPixels(0.1)
+ anchors.top: rpmText.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/app/TurnIndicator.qml b/app/TurnIndicator.qml
new file mode 100644
index 0000000..3bc4c0e
--- /dev/null
+++ b/app/TurnIndicator.qml
@@ -0,0 +1,111 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+import QtQuick 2.2
+
+Item {
+ // This enum is actually keyboard-related, but it serves its purpose
+ // as an indication of direction for us.
+ property int direction: Qt.LeftArrow
+ property bool on: false
+
+ property bool flashing: false
+
+ scale: direction === Qt.LeftArrow ? 1 : -1
+ Timer {
+ id: flashTimer
+ interval: 500
+ running: on
+ repeat: true
+ onTriggered: flashing = !flashing
+ }
+ function paintOutlinePath(ctx) {
+ ctx.beginPath();
+ ctx.moveTo(0, height * 0.5);
+ ctx.lineTo(0.6 * width, 0);
+ ctx.lineTo(0.6 * width, height * 0.28);
+ ctx.lineTo(width, height * 0.28);
+ ctx.lineTo(width, height * 0.72);
+ ctx.lineTo(0.6 * width, height * 0.72);
+ ctx.lineTo(0.6 * width, height);
+ ctx.lineTo(0, height * 0.5);
+ }
+ Canvas {
+ id: backgroundCanvas
+ anchors.fill: parent
+
+ onPaint: {
+ var ctx = getContext("2d");
+ ctx.reset();
+
+ paintOutlinePath(ctx);
+
+ ctx.lineWidth = 1;
+ ctx.strokeStyle = "lightgrey";
+ ctx.stroke();
+ }
+ }
+ Canvas {
+ id: foregroundCanvas
+ anchors.fill: parent
+ visible: on && flashing
+
+ onPaint: {
+ var ctx = getContext("2d");
+ ctx.reset();
+
+ paintOutlinePath(ctx);
+
+ ctx.fillStyle = "green";
+ ctx.fill();
+ }
+ }
+}
diff --git a/app/ValueSource.qml b/app/ValueSource.qml
new file mode 100644
index 0000000..48e5cf6
--- /dev/null
+++ b/app/ValueSource.qml
@@ -0,0 +1,420 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2018 Konsulko Group
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+Item {
+ id: valueSource
+ property real kph: 0
+ property bool mphDisplay: true
+ property real speedScaling: mphDisplay == true ? 0.621 : 1.0
+ property real rpm: 1
+ property real fuel: 0.85
+ property string gear: {
+ var g;
+ if (kph < 30) {
+ return "1";
+ }
+ if (kph < 50) {
+ return "2";
+ }
+ if (kph < 80) {
+ return "3";
+ }
+ if (kph < 120) {
+ return "4";
+ }
+ if (kph < 160) {
+ return "5";
+ }
+ }
+ property string prindle: {
+ var g;
+ if (kph > 0) {
+ return "D";
+ }
+ return "P";
+ }
+
+ property bool start: true
+ property int turnSignal: -1
+ property bool startUp: false
+ property real temperature: 0.6
+
+ function randomDirection() {
+ return Math.random() > 0.5 ? Qt.LeftArrow : Qt.RightArrow;
+ }
+
+ SequentialAnimation {
+ running: true
+ loops: 1
+
+ // We want a small pause at the beginning, but we only want it to happen once.
+ PauseAnimation {
+ duration: 1000
+ }
+
+ PropertyAction {
+ target: valueSource
+ property: "start"
+ value: false
+ }
+
+ SequentialAnimation {
+ loops: Animation.Infinite
+
+ // Simulate startup with indicators blink
+ PropertyAction {
+ target: valueSource
+ property: "startUp"
+ value: true
+ }
+ PauseAnimation {
+ duration: 1000
+ }
+ PropertyAction {
+ target: valueSource
+ property: "startUp"
+ value: false
+ }
+
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ from: 0
+ to: 30
+ duration: 3000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ from: 1
+ to: 6.1
+ duration: 3000
+ }
+ }
+ ParallelAnimation {
+ // We changed gears so we lost a bit of speed.
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ from: 30
+ to: 26
+ duration: 600
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ from: 6
+ to: 2.4
+ duration: 600
+ }
+ }
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 60
+ duration: 3000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 5.6
+ duration: 3000
+ }
+ }
+ ParallelAnimation {
+ // We changed gears so we lost a bit of speed.
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 56
+ duration: 600
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 2.3
+ duration: 600
+ }
+ }
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 100
+ duration: 3000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 5.1
+ duration: 3000
+ }
+ }
+ ParallelAnimation {
+ // We changed gears so we lost a bit of speed.
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 96
+ duration: 600
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 2.2
+ duration: 600
+ }
+ }
+
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 140
+ duration: 3000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 6.2
+ duration: 3000
+ }
+ }
+
+ // Slow down a bit
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 115
+ duration: 6000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 5.5
+ duration: 6000
+ }
+ }
+
+ // Turn signal on
+ PropertyAction {
+ target: valueSource
+ property: "turnSignal"
+ value: randomDirection()
+ }
+
+ // Cruise for a while
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 110
+ duration: 10000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 5.2
+ duration: 10000
+ }
+ }
+
+ // Turn signal off
+ PropertyAction {
+ target: valueSource
+ property: "turnSignal"
+ value: -1
+ }
+
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 115
+ duration: 10000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 5.5
+ duration: 10000
+ }
+ }
+
+ // Start downshifting.
+
+ // Fifth to fourth gear.
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.Linear
+ to: 100
+ duration: 5000
+ }
+
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 3.1
+ duration: 5000
+ }
+ }
+
+ // Fourth to third gear.
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 5.5
+ duration: 600
+ }
+
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 60
+ duration: 5000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 2.6
+ duration: 5000
+ }
+ }
+
+ // Third to second gear.
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 6.3
+ duration: 600
+ }
+
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 30
+ duration: 5000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 2.6
+ duration: 5000
+ }
+ }
+
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 6.5
+ duration: 600
+ }
+
+ // Second to first gear.
+ ParallelAnimation {
+ NumberAnimation {
+ target: valueSource
+ property: "kph"
+ easing.type: Easing.InOutSine
+ to: 0
+ duration: 5000
+ }
+ NumberAnimation {
+ target: valueSource
+ property: "rpm"
+ easing.type: Easing.InOutSine
+ to: 1
+ duration: 4500
+ }
+ }
+
+ PauseAnimation {
+ duration: 5000
+ }
+ }
+ }
+}
diff --git a/app/cluster-gauges.qml b/app/cluster-gauges.qml
new file mode 100644
index 0000000..40e4476
--- /dev/null
+++ b/app/cluster-gauges.qml
@@ -0,0 +1,478 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Copyright (C) 2018 Konsulko Group
+** Copyright (C) 2019 FUJITSU LIMITED
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*
+ * NOTE: Originally written from scratch, but enough code was eventually
+ * pasted in from the Qt dashboard.qml example that its license text
+ * has been adopted.
+ */
+
+import QtQuick 2.2
+import QtQuick.Window 2.1
+import QtQuick.Controls 1.4
+import QtQuick.Controls.Styles 1.4
+import QtQuick.Extras 1.4
+import QtWayland.Compositor 1.0
+
+WaylandCompositor {
+ WaylandOutput {
+ sizeFollowsWindow: true
+ window: Window{
+ id: root
+ width: 1920
+ height: 1080
+ visible: true
+ flags: Qt.FramelessWindowHint
+ color: "black"
+
+ ValueSource {
+ id: valueSource
+ }
+
+ Rectangle {
+ id: statusFrame
+ x: (parent.width - width) / 2
+ y: 80
+ width: 1152
+ height: 96
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Row {
+ width: parent.width
+ height: parent.height * 0.75
+ spacing: (parent.width - (12 * parent.height * 0.75)) / 13
+
+ anchors.fill: parent
+ anchors.topMargin: (parent.height - height) /2
+ anchors.bottomMargin: (parent.height - height) /2
+ anchors.leftMargin: (parent.width - (12 * parent.height * 0.75)) / 13
+ anchors.rightMargin: (parent.width - (12 * parent.height * 0.75)) / 13
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ TurnIndicator {
+ id: leftIndicator
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+
+ direction: Qt.LeftArrow
+ on: valueSource.turnSignal == Qt.LeftArrow
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Image {
+ source: valueSource.startUp ? './images/AGL_Icons_Engine_yellow.svg' : './images/AGL_Icons_Engine.svg'
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Image {
+ source: valueSource.startUp ? './images/AGL_Icons_Oil_red.svg' : './images/AGL_Icons_Oil.svg'
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Image {
+ source: valueSource.startUp ? './images/AGL_Icons_ABS_red.svg' : './images/AGL_Icons_ABS.svg'
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Image {
+ source: valueSource.startUp ? './images/AGL_Icons_Battery_red.svg' : './images/AGL_Icons_Battery.svg'
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Text {
+ id: prindle
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ horizontalAlignment: Text.AlignCenter
+
+ text: valueSource.prindle
+ color: "white"
+ font.pixelSize: parent.height * 0.85
+ }
+ }
+
+ Rectangle {
+ id: gearIndicatior
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Text {
+ id: gear
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ horizontalAlignment: Text.AlignCenter
+
+ text: valueSource.gear
+ color: "white"
+ font.pixelSize: parent.height * 0.85
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Image {
+ source: valueSource.startUp ? './images/AGL_Icons_Seatbelt_red.svg' : './images/AGL_Icons_Seatbelt.svg'
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Image {
+ source: valueSource.startUp ? './images/AGL_Icons_OpenDoor_red.svg' : './images/AGL_Icons_OpenDoor.svg'
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Image {
+ source: valueSource.startUp ? './images/AGL_Icons_Lights_red.svg' : './images/AGL_Icons_Lights.svg'
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ Image {
+ source: valueSource.startUp ? './images/AGL_Icons_ParkingBrake_red.svg' : './images/AGL_Icons_ParkingBrake.svg'
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Rectangle {
+ width: height
+ height: parent.height
+ radius: height / 5
+
+ color: "black"
+ border.width: 2
+ border.color: "grey"
+
+ TurnIndicator {
+ id: rightIndicator
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: height
+ height: parent.height * 0.75
+
+ direction: Qt.RightArrow
+ on: valueSource.turnSignal == Qt.RightArrow
+ }
+ }
+ }
+ }
+
+ Item {
+ x: 36
+ y: 240
+ width: 600
+ height: width
+
+ CircularGauge {
+ id: accelerometer
+ x: (parent.width - width) / 2
+ //y: (parent.height - height) / 2
+ width: parent.width * 0.9
+ height: width
+
+ maximumValue: valueSource.mphDisplay ? 140 : 220
+ value: valueSource.kph * valueSource.speedScaling
+
+ style: DashboardGaugeStyle {}
+ }
+ }
+
+ Item {
+ x: 1284
+ y: 240
+ width: 600
+ height: width
+
+ CircularGauge {
+ id: tachometer
+ x: (parent.width - width) / 2
+ width: parent.width * 0.9
+ height: width
+
+ maximumValue: 8
+ value: valueSource.rpm
+
+ style: TachometerStyle {}
+ }
+
+ CircularGauge {
+ id: fuelGauge
+ value: valueSource.fuel
+ maximumValue: 1
+ y: parent.width * 0.85
+ width: parent.width * 0.45
+ height: parent.height * 0.25
+
+ style: IconGaugeStyle {
+ id: fuelGaugeStyle
+
+ icon: "./images/fuel-icon.png"
+ minWarningColor: Qt.rgba(0.5, 0, 0, 1)
+
+ tickmarkLabel: Text {
+ color: "white"
+ visible: styleData.value === 0 || styleData.value === 1
+ font.pixelSize: fuelGaugeStyle.toPixels(0.225)
+ text: styleData.value === 0 ? "E" : (styleData.value === 1 ? "F" : "")
+ }
+ }
+ }
+
+ CircularGauge {
+ id: tempGauge
+ value: valueSource.temperature
+ maximumValue: 1
+ x: parent.width * 0.55
+ y: parent.width * 0.85
+ width: parent.width * 0.45
+ height: parent.height * 0.25
+
+ style: IconGaugeStyle {
+ id: tempGaugeStyle
+
+ icon: "./images/temperature-icon.png"
+ maxWarningColor: Qt.rgba(0.5, 0, 0, 1)
+
+ tickmarkLabel: Text {
+ color: "white"
+ visible: styleData.value === 0 || styleData.value === 1
+ font.pixelSize: tempGaugeStyle.toPixels(0.225)
+ text: styleData.value === 0 ? "C" : (styleData.value === 1 ? "H" : "")
+ }
+ }
+ }
+ }
+
+ Rectangle {
+ id: frame
+ x: 672
+ y: 264
+ width: 576
+ height: 552
+
+ color: "black"
+ border.width: 4
+ border.color: "grey"
+
+ Image {
+ source: './images/Utility_Logo_Grey-01.svg'
+ x: (parent.width - width) / 2
+ y: (parent.height - height) / 2
+ width: parent.width / 2
+ height: width
+ }
+ }
+
+ Image {
+ source: './images/agl_title_793x211.png'
+ //x: 772
+ x: (parent.width - width) / 2
+ y: 898
+ width: 376
+ height: 100
+ }
+}
+}
+
+ Component {
+ id: chromeComponent
+ ShellSurfaceItem {
+ anchors.fill: parent
+ onSurfaceDestroyed: destroy()
+ onWidthChanged: handleResized()
+ onHeightChanged: handleResized()
+ function handleResized() {
+ shellSurface.sendConfigure(Qt.size(width, height));
+ }
+ }
+ }
+ IviApplication {
+ onIviSurfaceCreated: {
+ var item = chromeComponent.createObject(frame, { "shellSurface": iviSurface } );
+ item.handleResized();
+ }
+ }
+}
diff --git a/app/cluster-gauges.qrc b/app/cluster-gauges.qrc
new file mode 100644
index 0000000..22f7528
--- /dev/null
+++ b/app/cluster-gauges.qrc
@@ -0,0 +1,10 @@
+<RCC>
+ <qresource prefix="/">
+ <file>cluster-gauges.qml</file>
+ <file>DashboardGaugeStyle.qml</file>
+ <file>IconGaugeStyle.qml</file>
+ <file>TachometerStyle.qml</file>
+ <file>TurnIndicator.qml</file>
+ <file>ValueSource.qml</file>
+ </qresource>
+</RCC>
diff --git a/app/images/AGL_Icons_ABS.svg b/app/images/AGL_Icons_ABS.svg
new file mode 100644
index 0000000..edbedf9
--- /dev/null
+++ b/app/images/AGL_Icons_ABS.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 48.4" width="66" height="48.4"><defs><clipPath id="_clipPath_XMuSSqE5ZxD0II1wFOlQX4LHZu6oOhaQ"><rect width="66" height="48.4"/></clipPath></defs><g clip-path="url(#_clipPath_XMuSSqE5ZxD0II1wFOlQX4LHZu6oOhaQ)"><g><path d=" M 24.8 25.8 C 24.8 25.8 24.8 25.8 24.8 25.8 L 22.2 18.1 C 22.1 17.7 21.7 17.4 21.3 17.4 C 20.9 17.4 20.5 17.7 20.4 18.1 L 17.8 25.8 C 17.8 25.8 17.8 25.8 17.8 25.8 L 16.5 29.8 C 16.3 30.3 16.6 30.9 17.1 31 C 17.6 31.2 18.2 30.9 18.3 30.4 L 19.4 27.2 L 23.2 27.2 L 24.3 30.4 C 24.4 30.8 24.8 31.1 25.2 31.1 C 25.3 31.1 25.4 31.1 25.5 31 C 26 30.8 26.3 30.3 26.1 29.8 L 24.8 25.8 L 24.8 25.8 Z M 20.1 25.2 L 21.3 21.5 L 22.5 25.2 L 20.1 25.2 L 20.1 25.2 Z " fill="rgb(185,185,185)"/><path d=" M 43.7 17.4 C 41.6 17.4 39.8 19.1 39.8 21.3 C 39.8 23.4 41.5 25.2 43.7 25.2 L 45.6 25.2 C 46.7 25.2 47.5 26.1 47.5 27.1 C 47.5 28.2 46.6 29 45.6 29 L 40.7 29 C 40.2 29 39.7 29.4 39.7 30 C 39.7 30.5 40.1 31 40.7 31 L 45.6 31 C 47.7 31 49.5 29.3 49.5 27.1 C 49.5 25 47.8 23.2 45.6 23.2 L 43.7 23.2 C 42.6 23.2 41.8 22.3 41.8 21.3 C 41.8 20.2 42.7 19.4 43.7 19.4 L 48.6 19.4 C 49.1 19.4 49.6 19 49.6 18.4 C 49.6 17.9 49.2 17.4 48.6 17.4 L 43.7 17.4 L 43.7 17.4 Z " fill="rgb(185,185,185)"/><path d=" M 37.9 21.3 C 37.9 19.2 36.2 17.4 34 17.4 L 29.1 17.4 C 28.6 17.4 28.1 17.8 28.1 18.4 L 28.1 30.1 C 28.1 30.6 28.5 31.1 29.1 31.1 L 34 31.1 C 36.1 31.1 37.9 29.4 37.9 27.2 C 37.9 26 37.4 25 36.6 24.3 C 37.3 23.5 37.9 22.5 37.9 21.3 L 37.9 21.3 L 37.9 21.3 Z M 34 29.1 L 30.1 29.1 L 30.1 25.2 L 34 25.2 C 35.1 25.2 35.9 26.1 35.9 27.1 C 35.9 28.2 35 29.1 34 29.1 L 34 29.1 L 34 29.1 Z M 34 23.2 L 30.1 23.2 L 30.1 19.3 L 34 19.3 C 35.1 19.3 35.9 20.2 35.9 21.2 C 35.9 22.4 35 23.2 34 23.2 L 34 23.2 L 34 23.2 Z " fill="rgb(185,185,185)"/></g><path d=" M 33 0 C 19.7 0 8.8 10.9 8.8 24.2 C 8.8 37.5 19.7 48.4 33 48.4 C 46.3 48.4 57.2 37.5 57.2 24.2 C 57.2 10.9 46.3 0 33 0 L 33 0 L 33 0 Z M 33 46.2 C 20.9 46.2 11 36.3 11 24.2 C 11 12.1 20.9 2.2 33 2.2 C 45.1 2.2 55 12.1 55 24.2 C 55 36.3 45.1 46.2 33 46.2 L 33 46.2 L 33 46.2 Z " fill="rgb(185,185,185)"/><path d=" M 11.2 2.4 C 11.6 2 11.6 1.3 11.2 0.9 C 10.8 0.5 10.1 0.5 9.7 0.9 C -3.2 13.8 -3.2 34.7 9.7 47.6 C 9.9 47.8 10.1 47.9 10.5 47.9 C 10.8 47.9 11.1 47.8 11.3 47.6 C 11.7 47.2 11.7 46.5 11.3 46.1 C -0.8 34 -0.8 14.4 11.2 2.4 L 11.2 2.4 L 11.2 2.4 Z " fill="rgb(185,185,185)"/><path d=" M 56.3 0.9 C 55.9 0.5 55.2 0.5 54.8 0.9 C 54.4 1.3 54.4 2 54.8 2.4 C 66.8 14.4 66.8 34 54.8 46 C 54.4 46.4 54.4 47.1 54.8 47.5 C 55 47.7 55.2 47.8 55.6 47.8 C 55.9 47.8 56.2 47.7 56.4 47.5 C 69.2 34.7 69.2 13.8 56.3 0.9 L 56.3 0.9 L 56.3 0.9 Z " fill="rgb(185,185,185)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_ABS_red.svg b/app/images/AGL_Icons_ABS_red.svg
new file mode 100644
index 0000000..eee96ff
--- /dev/null
+++ b/app/images/AGL_Icons_ABS_red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 48.4" width="66" height="48.4"><defs><clipPath id="_clipPath_r5nb1ApdUtIzMmE0rQIGIndHanPlpZyg"><rect width="66" height="48.4"/></clipPath></defs><g clip-path="url(#_clipPath_r5nb1ApdUtIzMmE0rQIGIndHanPlpZyg)"><g><path d=" M 24.8 25.8 C 24.8 25.8 24.8 25.8 24.8 25.8 L 22.2 18.1 C 22.1 17.7 21.7 17.4 21.3 17.4 C 20.9 17.4 20.5 17.7 20.4 18.1 L 17.8 25.8 C 17.8 25.8 17.8 25.8 17.8 25.8 L 16.5 29.8 C 16.3 30.3 16.6 30.9 17.1 31 C 17.6 31.2 18.2 30.9 18.3 30.4 L 19.4 27.2 L 23.2 27.2 L 24.3 30.4 C 24.4 30.8 24.8 31.1 25.2 31.1 C 25.3 31.1 25.4 31.1 25.5 31 C 26 30.8 26.3 30.3 26.1 29.8 L 24.8 25.8 L 24.8 25.8 Z M 20.1 25.2 L 21.3 21.5 L 22.5 25.2 L 20.1 25.2 L 20.1 25.2 Z " fill="rgb(255,0,0)"/><path d=" M 43.7 17.4 C 41.6 17.4 39.8 19.1 39.8 21.3 C 39.8 23.4 41.5 25.2 43.7 25.2 L 45.6 25.2 C 46.7 25.2 47.5 26.1 47.5 27.1 C 47.5 28.2 46.6 29 45.6 29 L 40.7 29 C 40.2 29 39.7 29.4 39.7 30 C 39.7 30.5 40.1 31 40.7 31 L 45.6 31 C 47.7 31 49.5 29.3 49.5 27.1 C 49.5 25 47.8 23.2 45.6 23.2 L 43.7 23.2 C 42.6 23.2 41.8 22.3 41.8 21.3 C 41.8 20.2 42.7 19.4 43.7 19.4 L 48.6 19.4 C 49.1 19.4 49.6 19 49.6 18.4 C 49.6 17.9 49.2 17.4 48.6 17.4 L 43.7 17.4 L 43.7 17.4 Z " fill="rgb(255,0,0)"/><path d=" M 37.9 21.3 C 37.9 19.2 36.2 17.4 34 17.4 L 29.1 17.4 C 28.6 17.4 28.1 17.8 28.1 18.4 L 28.1 30.1 C 28.1 30.6 28.5 31.1 29.1 31.1 L 34 31.1 C 36.1 31.1 37.9 29.4 37.9 27.2 C 37.9 26 37.4 25 36.6 24.3 C 37.3 23.5 37.9 22.5 37.9 21.3 L 37.9 21.3 L 37.9 21.3 Z M 34 29.1 L 30.1 29.1 L 30.1 25.2 L 34 25.2 C 35.1 25.2 35.9 26.1 35.9 27.1 C 35.9 28.2 35 29.1 34 29.1 L 34 29.1 L 34 29.1 Z M 34 23.2 L 30.1 23.2 L 30.1 19.3 L 34 19.3 C 35.1 19.3 35.9 20.2 35.9 21.2 C 35.9 22.4 35 23.2 34 23.2 L 34 23.2 L 34 23.2 Z " fill="rgb(255,0,0)"/></g><path d=" M 33 0 C 19.7 0 8.8 10.9 8.8 24.2 C 8.8 37.5 19.7 48.4 33 48.4 C 46.3 48.4 57.2 37.5 57.2 24.2 C 57.2 10.9 46.3 0 33 0 L 33 0 L 33 0 Z M 33 46.2 C 20.9 46.2 11 36.3 11 24.2 C 11 12.1 20.9 2.2 33 2.2 C 45.1 2.2 55 12.1 55 24.2 C 55 36.3 45.1 46.2 33 46.2 L 33 46.2 L 33 46.2 Z " fill="rgb(255,0,0)"/><path d=" M 11.2 2.4 C 11.6 2 11.6 1.3 11.2 0.9 C 10.8 0.5 10.1 0.5 9.7 0.9 C -3.2 13.8 -3.2 34.7 9.7 47.6 C 9.9 47.8 10.1 47.9 10.5 47.9 C 10.8 47.9 11.1 47.8 11.3 47.6 C 11.7 47.2 11.7 46.5 11.3 46.1 C -0.8 34 -0.8 14.4 11.2 2.4 L 11.2 2.4 L 11.2 2.4 Z " fill="rgb(255,0,0)"/><path d=" M 56.3 0.9 C 55.9 0.5 55.2 0.5 54.8 0.9 C 54.4 1.3 54.4 2 54.8 2.4 C 66.8 14.4 66.8 34 54.8 46 C 54.4 46.4 54.4 47.1 54.8 47.5 C 55 47.7 55.2 47.8 55.6 47.8 C 55.9 47.8 56.2 47.7 56.4 47.5 C 69.2 34.7 69.2 13.8 56.3 0.9 L 56.3 0.9 L 56.3 0.9 Z " fill="rgb(255,0,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_ABS_yellow.svg b/app/images/AGL_Icons_ABS_yellow.svg
new file mode 100644
index 0000000..253d732
--- /dev/null
+++ b/app/images/AGL_Icons_ABS_yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 48.4" width="66" height="48.4"><defs><clipPath id="_clipPath_nYaN0NoYR03Ac9t02XfDcq9icWyz8L7W"><rect width="66" height="48.4"/></clipPath></defs><g clip-path="url(#_clipPath_nYaN0NoYR03Ac9t02XfDcq9icWyz8L7W)"><g><path d=" M 24.8 25.8 C 24.8 25.8 24.8 25.8 24.8 25.8 L 22.2 18.1 C 22.1 17.7 21.7 17.4 21.3 17.4 C 20.9 17.4 20.5 17.7 20.4 18.1 L 17.8 25.8 C 17.8 25.8 17.8 25.8 17.8 25.8 L 16.5 29.8 C 16.3 30.3 16.6 30.9 17.1 31 C 17.6 31.2 18.2 30.9 18.3 30.4 L 19.4 27.2 L 23.2 27.2 L 24.3 30.4 C 24.4 30.8 24.8 31.1 25.2 31.1 C 25.3 31.1 25.4 31.1 25.5 31 C 26 30.8 26.3 30.3 26.1 29.8 L 24.8 25.8 L 24.8 25.8 Z M 20.1 25.2 L 21.3 21.5 L 22.5 25.2 L 20.1 25.2 L 20.1 25.2 Z " fill="rgb(255,255,0)"/><path d=" M 43.7 17.4 C 41.6 17.4 39.8 19.1 39.8 21.3 C 39.8 23.4 41.5 25.2 43.7 25.2 L 45.6 25.2 C 46.7 25.2 47.5 26.1 47.5 27.1 C 47.5 28.2 46.6 29 45.6 29 L 40.7 29 C 40.2 29 39.7 29.4 39.7 30 C 39.7 30.5 40.1 31 40.7 31 L 45.6 31 C 47.7 31 49.5 29.3 49.5 27.1 C 49.5 25 47.8 23.2 45.6 23.2 L 43.7 23.2 C 42.6 23.2 41.8 22.3 41.8 21.3 C 41.8 20.2 42.7 19.4 43.7 19.4 L 48.6 19.4 C 49.1 19.4 49.6 19 49.6 18.4 C 49.6 17.9 49.2 17.4 48.6 17.4 L 43.7 17.4 L 43.7 17.4 Z " fill="rgb(255,255,0)"/><path d=" M 37.9 21.3 C 37.9 19.2 36.2 17.4 34 17.4 L 29.1 17.4 C 28.6 17.4 28.1 17.8 28.1 18.4 L 28.1 30.1 C 28.1 30.6 28.5 31.1 29.1 31.1 L 34 31.1 C 36.1 31.1 37.9 29.4 37.9 27.2 C 37.9 26 37.4 25 36.6 24.3 C 37.3 23.5 37.9 22.5 37.9 21.3 L 37.9 21.3 L 37.9 21.3 Z M 34 29.1 L 30.1 29.1 L 30.1 25.2 L 34 25.2 C 35.1 25.2 35.9 26.1 35.9 27.1 C 35.9 28.2 35 29.1 34 29.1 L 34 29.1 L 34 29.1 Z M 34 23.2 L 30.1 23.2 L 30.1 19.3 L 34 19.3 C 35.1 19.3 35.9 20.2 35.9 21.2 C 35.9 22.4 35 23.2 34 23.2 L 34 23.2 L 34 23.2 Z " fill="rgb(255,255,0)"/></g><path d=" M 33 0 C 19.7 0 8.8 10.9 8.8 24.2 C 8.8 37.5 19.7 48.4 33 48.4 C 46.3 48.4 57.2 37.5 57.2 24.2 C 57.2 10.9 46.3 0 33 0 L 33 0 L 33 0 Z M 33 46.2 C 20.9 46.2 11 36.3 11 24.2 C 11 12.1 20.9 2.2 33 2.2 C 45.1 2.2 55 12.1 55 24.2 C 55 36.3 45.1 46.2 33 46.2 L 33 46.2 L 33 46.2 Z " fill="rgb(255,255,0)"/><path d=" M 11.2 2.4 C 11.6 2 11.6 1.3 11.2 0.9 C 10.8 0.5 10.1 0.5 9.7 0.9 C -3.2 13.8 -3.2 34.7 9.7 47.6 C 9.9 47.8 10.1 47.9 10.5 47.9 C 10.8 47.9 11.1 47.8 11.3 47.6 C 11.7 47.2 11.7 46.5 11.3 46.1 C -0.8 34 -0.8 14.4 11.2 2.4 L 11.2 2.4 L 11.2 2.4 Z " fill="rgb(255,255,0)"/><path d=" M 56.3 0.9 C 55.9 0.5 55.2 0.5 54.8 0.9 C 54.4 1.3 54.4 2 54.8 2.4 C 66.8 14.4 66.8 34 54.8 46 C 54.4 46.4 54.4 47.1 54.8 47.5 C 55 47.7 55.2 47.8 55.6 47.8 C 55.9 47.8 56.2 47.7 56.4 47.5 C 69.2 34.7 69.2 13.8 56.3 0.9 L 56.3 0.9 L 56.3 0.9 Z " fill="rgb(255,255,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Battery.svg b/app/images/AGL_Icons_Battery.svg
new file mode 100644
index 0000000..a98e6ba
--- /dev/null
+++ b/app/images/AGL_Icons_Battery.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 56.6 49.5" width="56.6" height="49.5"><defs><clipPath id="_clipPath_0A6bwCPwasdFoITZAQmfuUP1jHCh9Aev"><rect width="56.6" height="49.5"/></clipPath></defs><g clip-path="url(#_clipPath_0A6bwCPwasdFoITZAQmfuUP1jHCh9Aev)"><path d=" M 48.9 5.5 L 48.9 0 L 37.4 0 L 37.4 5.5 L 20.9 5.5 L 20.9 0 L 9.5 0 L 9.5 5.5 L 0 5.5 L 0 48.1 L 56.6 48.1 L 56.6 5.5 L 48.9 5.5 L 48.9 5.5 Z M 39.7 2.3 L 46.5 2.3 L 46.5 4.8 L 39.7 4.8 L 39.7 2.3 L 39.7 2.3 Z M 11.8 2.3 L 18.6 2.3 L 18.6 4.8 L 11.8 4.8 L 11.8 2.3 L 11.8 2.3 Z M 54.3 45.8 L 2.3 45.8 L 2.3 7.8 L 54.2 7.8 L 54.2 45.8 L 54.3 45.8 Z " fill="rgb(185,185,185)"/><rect x="38.6" y="19.1" width="9.2" height="2.3" transform="matrix(1,0,0,1,0,0)" fill="rgb(185,185,185)"/><path d=" M 14 24.8 L 16.3 24.8 L 16.3 21.4 L 19.7 21.4 L 19.7 19.1 L 16.3 19.1 L 16.3 15.7 L 14 15.7 L 14 19.1 L 10.6 19.1 L 10.6 21.4 L 14 21.4 L 14 24.8 L 14 24.8 Z " fill="rgb(185,185,185)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Battery_red.svg b/app/images/AGL_Icons_Battery_red.svg
new file mode 100644
index 0000000..e2354b5
--- /dev/null
+++ b/app/images/AGL_Icons_Battery_red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 56.6 49.5" width="56.6" height="49.5"><defs><clipPath id="_clipPath_EuHpWJyozfgdcvWDQQY94dU7PqztUHO7"><rect width="56.6" height="49.5"/></clipPath></defs><g clip-path="url(#_clipPath_EuHpWJyozfgdcvWDQQY94dU7PqztUHO7)"><path d=" M 48.9 5.5 L 48.9 0 L 37.4 0 L 37.4 5.5 L 20.9 5.5 L 20.9 0 L 9.5 0 L 9.5 5.5 L 0 5.5 L 0 48.1 L 56.6 48.1 L 56.6 5.5 L 48.9 5.5 L 48.9 5.5 Z M 39.7 2.3 L 46.5 2.3 L 46.5 4.8 L 39.7 4.8 L 39.7 2.3 L 39.7 2.3 Z M 11.8 2.3 L 18.6 2.3 L 18.6 4.8 L 11.8 4.8 L 11.8 2.3 L 11.8 2.3 Z M 54.3 45.8 L 2.3 45.8 L 2.3 7.8 L 54.2 7.8 L 54.2 45.8 L 54.3 45.8 Z " fill="rgb(255,0,0)"/><rect x="38.6" y="19.1" width="9.2" height="2.3" transform="matrix(1,0,0,1,0,0)" fill="rgb(255,0,0)"/><path d=" M 14 24.8 L 16.3 24.8 L 16.3 21.4 L 19.7 21.4 L 19.7 19.1 L 16.3 19.1 L 16.3 15.7 L 14 15.7 L 14 19.1 L 10.6 19.1 L 10.6 21.4 L 14 21.4 L 14 24.8 L 14 24.8 Z " fill="rgb(255,0,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Battery_yellow.svg b/app/images/AGL_Icons_Battery_yellow.svg
new file mode 100644
index 0000000..5ab1800
--- /dev/null
+++ b/app/images/AGL_Icons_Battery_yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 56.6 49.5" width="56.6" height="49.5"><defs><clipPath id="_clipPath_oMb5T6UGzHdbh92RLqYXqda697yKO51u"><rect width="56.6" height="49.5"/></clipPath></defs><g clip-path="url(#_clipPath_oMb5T6UGzHdbh92RLqYXqda697yKO51u)"><path d=" M 48.9 5.5 L 48.9 0 L 37.4 0 L 37.4 5.5 L 20.9 5.5 L 20.9 0 L 9.5 0 L 9.5 5.5 L 0 5.5 L 0 48.1 L 56.6 48.1 L 56.6 5.5 L 48.9 5.5 L 48.9 5.5 Z M 39.7 2.3 L 46.5 2.3 L 46.5 4.8 L 39.7 4.8 L 39.7 2.3 L 39.7 2.3 Z M 11.8 2.3 L 18.6 2.3 L 18.6 4.8 L 11.8 4.8 L 11.8 2.3 L 11.8 2.3 Z M 54.3 45.8 L 2.3 45.8 L 2.3 7.8 L 54.2 7.8 L 54.2 45.8 L 54.3 45.8 Z " fill="rgb(255,255,0)"/><rect x="38.6" y="19.1" width="9.2" height="2.3" transform="matrix(1,0,0,1,0,0)" fill="rgb(255,255,0)"/><path d=" M 14 24.8 L 16.3 24.8 L 16.3 21.4 L 19.7 21.4 L 19.7 19.1 L 16.3 19.1 L 16.3 15.7 L 14 15.7 L 14 19.1 L 10.6 19.1 L 10.6 21.4 L 14 21.4 L 14 24.8 L 14 24.8 Z " fill="rgb(255,255,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Engine.svg b/app/images/AGL_Icons_Engine.svg
new file mode 100644
index 0000000..2a878bc
--- /dev/null
+++ b/app/images/AGL_Icons_Engine.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 44" width="66" height="44"><defs><clipPath id="_clipPath_wHe74FhYEXDRQUGSQQtgdGjGhcXHKPkV"><rect width="66" height="44"/></clipPath></defs><g clip-path="url(#_clipPath_wHe74FhYEXDRQUGSQQtgdGjGhcXHKPkV)"><path d=" M 64.9 13.2 L 60.5 13.2 C 60.1 13.2 59.6 13.5 59.5 14 L 56.4 23.1 L 53.4 23.1 L 50.4 18.1 C 50.2 17.8 49.8 17.5 49.4 17.5 L 45 17.5 L 45 14.2 C 45 13.5 44.6 13.1 43.9 13.1 L 36.2 13.1 L 36.2 8.8 L 39.5 8.8 C 40.2 8.8 40.6 8.4 40.6 7.7 L 40.6 1.1 C 40.6 0.4 40.2 0 39.5 0 L 19.8 0 C 19.1 0 18.7 0.4 18.7 1.1 L 18.7 7.7 C 18.7 8.4 19.1 8.8 19.8 8.8 L 23.1 8.8 L 23.1 13.2 L 14.3 13.2 C 14 13.2 13.7 13.3 13.5 13.5 C 13.3 13.7 13.2 13.9 13.2 14.3 L 13.2 17.6 L 5.5 17.6 C 4.8 17.6 4.4 18 4.4 18.7 L 4.4 25.3 L 2.2 25.3 L 2.2 22 C 2.2 21.3 1.8 20.9 1.1 20.9 C 0.4 20.9 0 21.3 0 22 L 0 30.8 C 0 31.5 0.4 31.9 1.1 31.9 C 1.8 31.9 2.2 31.5 2.2 30.8 L 2.2 27.5 L 4.4 27.5 L 4.4 36.3 C 4.4 37 4.8 37.4 5.5 37.4 L 13.8 37.4 L 17.9 43.6 C 18.1 43.8 18.5 44 18.8 44 L 49.6 44 C 50 44 50.4 43.8 50.6 43.3 L 53.6 37.4 L 56.7 37.4 L 59.7 43.3 C 59.9 43.7 60.2 44 60.7 44 L 65.1 44 C 65.8 44 66.2 43.6 66.2 42.9 L 66.2 14.3 C 66 13.6 65.6 13.2 64.9 13.2 L 64.9 13.2 L 64.9 13.2 Z M 20.9 2.2 L 38.5 2.2 L 38.5 6.6 L 20.9 6.6 L 20.9 2.2 L 20.9 2.2 Z M 25.3 8.8 L 34.1 8.8 L 34.1 13.2 L 25.3 13.2 L 25.3 8.8 L 25.3 8.8 Z M 6.6 35.2 L 6.6 19.8 L 13.2 19.8 L 13.2 35.2 L 6.6 35.2 L 6.6 35.2 Z M 48.7 41.8 L 19.3 41.8 L 15.4 36 L 15.4 15.4 L 42.9 15.4 L 42.9 18.7 C 42.9 19.4 43.3 19.8 44 19.8 L 48.8 19.8 L 51.7 24.6 L 51.7 35.9 L 48.7 41.8 L 48.7 41.8 Z M 53.9 35.2 L 53.9 25.3 L 56.1 25.3 L 56.1 35.2 L 53.9 35.2 L 53.9 35.2 Z M 63.8 41.8 L 61.2 41.8 L 58.3 36.3 L 58.3 24.2 L 61.3 15.4 L 63.8 15.4 L 63.8 41.8 L 63.8 41.8 Z " fill="rgb(185,185,185)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Engine_red.svg b/app/images/AGL_Icons_Engine_red.svg
new file mode 100644
index 0000000..c78cf80
--- /dev/null
+++ b/app/images/AGL_Icons_Engine_red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 44" width="66" height="44"><defs><clipPath id="_clipPath_LgXIhoy2HTurPEQ1ccqC0HB9CGJq3sky"><rect width="66" height="44"/></clipPath></defs><g clip-path="url(#_clipPath_LgXIhoy2HTurPEQ1ccqC0HB9CGJq3sky)"><path d=" M 64.9 13.2 L 60.5 13.2 C 60.1 13.2 59.6 13.5 59.5 14 L 56.4 23.1 L 53.4 23.1 L 50.4 18.1 C 50.2 17.8 49.8 17.5 49.4 17.5 L 45 17.5 L 45 14.2 C 45 13.5 44.6 13.1 43.9 13.1 L 36.2 13.1 L 36.2 8.8 L 39.5 8.8 C 40.2 8.8 40.6 8.4 40.6 7.7 L 40.6 1.1 C 40.6 0.4 40.2 0 39.5 0 L 19.8 0 C 19.1 0 18.7 0.4 18.7 1.1 L 18.7 7.7 C 18.7 8.4 19.1 8.8 19.8 8.8 L 23.1 8.8 L 23.1 13.2 L 14.3 13.2 C 14 13.2 13.7 13.3 13.5 13.5 C 13.3 13.7 13.2 13.9 13.2 14.3 L 13.2 17.6 L 5.5 17.6 C 4.8 17.6 4.4 18 4.4 18.7 L 4.4 25.3 L 2.2 25.3 L 2.2 22 C 2.2 21.3 1.8 20.9 1.1 20.9 C 0.4 20.9 0 21.3 0 22 L 0 30.8 C 0 31.5 0.4 31.9 1.1 31.9 C 1.8 31.9 2.2 31.5 2.2 30.8 L 2.2 27.5 L 4.4 27.5 L 4.4 36.3 C 4.4 37 4.8 37.4 5.5 37.4 L 13.8 37.4 L 17.9 43.6 C 18.1 43.8 18.5 44 18.8 44 L 49.6 44 C 50 44 50.4 43.8 50.6 43.3 L 53.6 37.4 L 56.7 37.4 L 59.7 43.3 C 59.9 43.7 60.2 44 60.7 44 L 65.1 44 C 65.8 44 66.2 43.6 66.2 42.9 L 66.2 14.3 C 66 13.6 65.6 13.2 64.9 13.2 L 64.9 13.2 L 64.9 13.2 Z M 20.9 2.2 L 38.5 2.2 L 38.5 6.6 L 20.9 6.6 L 20.9 2.2 L 20.9 2.2 Z M 25.3 8.8 L 34.1 8.8 L 34.1 13.2 L 25.3 13.2 L 25.3 8.8 L 25.3 8.8 Z M 6.6 35.2 L 6.6 19.8 L 13.2 19.8 L 13.2 35.2 L 6.6 35.2 L 6.6 35.2 Z M 48.7 41.8 L 19.3 41.8 L 15.4 36 L 15.4 15.4 L 42.9 15.4 L 42.9 18.7 C 42.9 19.4 43.3 19.8 44 19.8 L 48.8 19.8 L 51.7 24.6 L 51.7 35.9 L 48.7 41.8 L 48.7 41.8 Z M 53.9 35.2 L 53.9 25.3 L 56.1 25.3 L 56.1 35.2 L 53.9 35.2 L 53.9 35.2 Z M 63.8 41.8 L 61.2 41.8 L 58.3 36.3 L 58.3 24.2 L 61.3 15.4 L 63.8 15.4 L 63.8 41.8 L 63.8 41.8 Z " fill="rgb(255,0,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Engine_yellow.svg b/app/images/AGL_Icons_Engine_yellow.svg
new file mode 100644
index 0000000..fb70571
--- /dev/null
+++ b/app/images/AGL_Icons_Engine_yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 44" width="66" height="44"><defs><clipPath id="_clipPath_ZQbsJDXfwukix6SwL6JaGLdmgIqxGx2e"><rect width="66" height="44"/></clipPath></defs><g clip-path="url(#_clipPath_ZQbsJDXfwukix6SwL6JaGLdmgIqxGx2e)"><path d=" M 64.9 13.2 L 60.5 13.2 C 60.1 13.2 59.6 13.5 59.5 14 L 56.4 23.1 L 53.4 23.1 L 50.4 18.1 C 50.2 17.8 49.8 17.5 49.4 17.5 L 45 17.5 L 45 14.2 C 45 13.5 44.6 13.1 43.9 13.1 L 36.2 13.1 L 36.2 8.8 L 39.5 8.8 C 40.2 8.8 40.6 8.4 40.6 7.7 L 40.6 1.1 C 40.6 0.4 40.2 0 39.5 0 L 19.8 0 C 19.1 0 18.7 0.4 18.7 1.1 L 18.7 7.7 C 18.7 8.4 19.1 8.8 19.8 8.8 L 23.1 8.8 L 23.1 13.2 L 14.3 13.2 C 14 13.2 13.7 13.3 13.5 13.5 C 13.3 13.7 13.2 13.9 13.2 14.3 L 13.2 17.6 L 5.5 17.6 C 4.8 17.6 4.4 18 4.4 18.7 L 4.4 25.3 L 2.2 25.3 L 2.2 22 C 2.2 21.3 1.8 20.9 1.1 20.9 C 0.4 20.9 0 21.3 0 22 L 0 30.8 C 0 31.5 0.4 31.9 1.1 31.9 C 1.8 31.9 2.2 31.5 2.2 30.8 L 2.2 27.5 L 4.4 27.5 L 4.4 36.3 C 4.4 37 4.8 37.4 5.5 37.4 L 13.8 37.4 L 17.9 43.6 C 18.1 43.8 18.5 44 18.8 44 L 49.6 44 C 50 44 50.4 43.8 50.6 43.3 L 53.6 37.4 L 56.7 37.4 L 59.7 43.3 C 59.9 43.7 60.2 44 60.7 44 L 65.1 44 C 65.8 44 66.2 43.6 66.2 42.9 L 66.2 14.3 C 66 13.6 65.6 13.2 64.9 13.2 L 64.9 13.2 L 64.9 13.2 Z M 20.9 2.2 L 38.5 2.2 L 38.5 6.6 L 20.9 6.6 L 20.9 2.2 L 20.9 2.2 Z M 25.3 8.8 L 34.1 8.8 L 34.1 13.2 L 25.3 13.2 L 25.3 8.8 L 25.3 8.8 Z M 6.6 35.2 L 6.6 19.8 L 13.2 19.8 L 13.2 35.2 L 6.6 35.2 L 6.6 35.2 Z M 48.7 41.8 L 19.3 41.8 L 15.4 36 L 15.4 15.4 L 42.9 15.4 L 42.9 18.7 C 42.9 19.4 43.3 19.8 44 19.8 L 48.8 19.8 L 51.7 24.6 L 51.7 35.9 L 48.7 41.8 L 48.7 41.8 Z M 53.9 35.2 L 53.9 25.3 L 56.1 25.3 L 56.1 35.2 L 53.9 35.2 L 53.9 35.2 Z M 63.8 41.8 L 61.2 41.8 L 58.3 36.3 L 58.3 24.2 L 61.3 15.4 L 63.8 15.4 L 63.8 41.8 L 63.8 41.8 Z " fill="rgb(255,255,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Lights.svg b/app/images/AGL_Icons_Lights.svg
new file mode 100644
index 0000000..889582f
--- /dev/null
+++ b/app/images/AGL_Icons_Lights.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66.3 46.4" width="66.3" height="46.4"><defs><clipPath id="_clipPath_Jxs11Y80GjqqNaOgOFZEpBDkbMVbtcRk"><rect width="66.3" height="46.4"/></clipPath></defs><g clip-path="url(#_clipPath_Jxs11Y80GjqqNaOgOFZEpBDkbMVbtcRk)"><path d=" M 33.1 0 L 33.2 0 C 44 0 54.2 3.8 60.3 9.8 C 64.2 13.8 66.3 18.3 66.3 23.2 C 66.3 35.9 51.4 46.4 33.1 46.4 C 32.7 46.4 32.1 46.1 32 45.6 C 27.6 30.9 27.6 15.5 32 0.8 C 32.2 0.3 32.6 0 33.1 0 Z M 33.8 44.3 C 50.6 44 64 34.7 64 23.3 C 64 19.1 62.1 15 58.6 11.5 C 53 5.8 43.7 2.3 33.8 2.2 C 29.9 16 29.9 30.5 33.8 44.3 Z " fill="rgb(185,185,185)"/><path d=" M 1.2 16.6 L 25.4 16.6 C 26.1 16.6 26.5 17 26.5 17.7 C 26.5 18.4 26.1 18.8 25.4 18.8 L 1.1 18.8 C 0.4 18.8 0 18.4 0 17.7 C 0.1 17 0.5 16.6 1.2 16.6 L 1.2 16.6 Z " fill="rgb(185,185,185)"/><path d=" M 1.2 27.6 L 25.4 27.6 C 26.1 27.6 26.5 28 26.5 28.7 C 26.5 29.4 26.1 29.8 25.4 29.8 L 1.1 29.8 C 0.4 29.8 0 29.4 0 28.7 C 0.1 28 0.5 27.6 1.2 27.6 L 1.2 27.6 Z " fill="rgb(185,185,185)"/><path d=" M 1.213 38.8 L 25.413 38.8 C 26.113 38.8 26.513 39.2 26.513 39.9 C 26.513 40.6 26.113 41 25.413 41 L 1.113 41 C 0.413 41 0.013 40.6 0.013 39.9 C 0.113 39.3 0.513 38.8 1.213 38.8 L 1.213 38.8 Z " fill="rgb(185,185,185)"/><path d=" M 25.4 7.7 L 1.1 7.7 C 0.4 7.7 0 7.3 0 6.6 C 0 5.9 0.4 5.5 1.1 5.5 L 25.4 5.5 C 26.1 5.5 26.5 5.9 26.5 6.6 C 26.6 7.3 26.1 7.7 25.4 7.7 Z " fill="rgb(185,185,185)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Lights_red.svg b/app/images/AGL_Icons_Lights_red.svg
new file mode 100644
index 0000000..fd3ee5e
--- /dev/null
+++ b/app/images/AGL_Icons_Lights_red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66.3 46.4" width="66.3" height="46.4"><defs><clipPath id="_clipPath_0BT6rWmesBevrO1pNR1gU7iPAvJDB4go"><rect width="66.3" height="46.4"/></clipPath></defs><g clip-path="url(#_clipPath_0BT6rWmesBevrO1pNR1gU7iPAvJDB4go)"><path d=" M 33.2 46.4 L 33.3 46.4 C 44.1 46.4 54.3 42.6 60.4 36.6 C 64.3 32.6 66.4 28.1 66.4 23.2 C 66.4 10.5 51.5 0 33.2 0 C 32.8 0 32.2 0.3 32.1 0.8 C 27.7 15.5 27.7 30.9 32.1 45.6 C 32.3 46.1 32.7 46.4 33.2 46.4 L 33.2 46.4 Z M 33.9 2.1 C 50.7 2.4 64.1 11.7 64.1 23.1 C 64.1 27.3 62.2 31.4 58.7 34.9 C 53.1 40.6 43.8 44.1 33.9 44.2 C 30 30.4 30 15.9 33.9 2.1 L 33.9 2.1 Z " fill="rgb(255,0,0)"/><path d=" M 1.2 29.8 L 25.4 29.8 C 26.1 29.8 26.5 29.4 26.5 28.7 C 26.5 28 26.1 27.6 25.4 27.6 L 1.1 27.6 C 0.4 27.6 0 28 0 28.7 C 0.1 29.4 0.5 29.8 1.2 29.8 L 1.2 29.8 Z " fill="rgb(255,0,0)"/><path d=" M 1.2 18.8 L 25.4 18.8 C 26.1 18.8 26.5 18.4 26.5 17.7 C 26.5 17 26.1 16.6 25.4 16.6 L 1.1 16.6 C 0.4 16.6 0 17 0 17.7 C 0.1 18.4 0.5 18.8 1.2 18.8 L 1.2 18.8 Z " fill="rgb(255,0,0)"/><path d=" M 1.2 7.8 L 25.4 7.8 C 26.1 7.8 26.5 7.4 26.5 6.7 C 26.5 6 26.1 5.6 25.4 5.6 L 1.1 5.6 C 0.4 5.6 0 6 0 6.7 C 0.1 7.3 0.5 7.8 1.2 7.8 L 1.2 7.8 Z " fill="rgb(255,0,0)"/><path d=" M 25.4 38.7 L 1.1 38.7 C 0.4 38.7 0 39.1 0 39.8 C 0 40.5 0.4 40.9 1.1 40.9 L 25.4 40.9 C 26.1 40.9 26.5 40.5 26.5 39.8 C 26.6 39.1 26.1 38.7 25.4 38.7 L 25.4 38.7 Z " fill="rgb(255,0,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Lights_yellow.svg b/app/images/AGL_Icons_Lights_yellow.svg
new file mode 100644
index 0000000..b06dcc8
--- /dev/null
+++ b/app/images/AGL_Icons_Lights_yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66.3 46.4" width="66.3" height="46.4"><defs><clipPath id="_clipPath_1pn4wxsu0OJ4bcR4a3O6W5Cj3uFO2YtD"><rect width="66.3" height="46.4"/></clipPath></defs><g clip-path="url(#_clipPath_1pn4wxsu0OJ4bcR4a3O6W5Cj3uFO2YtD)"><path d=" M 33.2 46.4 L 33.3 46.4 C 44.1 46.4 54.3 42.6 60.4 36.6 C 64.3 32.6 66.4 28.1 66.4 23.2 C 66.4 10.5 51.5 0 33.2 0 C 32.8 0 32.2 0.3 32.1 0.8 C 27.7 15.5 27.7 30.9 32.1 45.6 C 32.3 46.1 32.7 46.4 33.2 46.4 L 33.2 46.4 Z M 33.9 2.1 C 50.7 2.4 64.1 11.7 64.1 23.1 C 64.1 27.3 62.2 31.4 58.7 34.9 C 53.1 40.6 43.8 44.1 33.9 44.2 C 30 30.4 30 15.9 33.9 2.1 L 33.9 2.1 Z " fill="rgb(255,255,0)"/><path d=" M 1.2 29.8 L 25.4 29.8 C 26.1 29.8 26.5 29.4 26.5 28.7 C 26.5 28 26.1 27.6 25.4 27.6 L 1.1 27.6 C 0.4 27.6 0 28 0 28.7 C 0.1 29.4 0.5 29.8 1.2 29.8 L 1.2 29.8 Z " fill="rgb(255,255,0)"/><path d=" M 1.2 18.8 L 25.4 18.8 C 26.1 18.8 26.5 18.4 26.5 17.7 C 26.5 17 26.1 16.6 25.4 16.6 L 1.1 16.6 C 0.4 16.6 0 17 0 17.7 C 0.1 18.4 0.5 18.8 1.2 18.8 L 1.2 18.8 Z " fill="rgb(255,255,0)"/><path d=" M 1.2 7.8 L 25.4 7.8 C 26.1 7.8 26.5 7.4 26.5 6.7 C 26.5 6 26.1 5.6 25.4 5.6 L 1.1 5.6 C 0.4 5.6 0 6 0 6.7 C 0.1 7.3 0.5 7.8 1.2 7.8 L 1.2 7.8 Z " fill="rgb(255,255,0)"/><path d=" M 25.4 38.7 L 1.1 38.7 C 0.4 38.7 0 39.1 0 39.8 C 0 40.5 0.4 40.9 1.1 40.9 L 25.4 40.9 C 26.1 40.9 26.5 40.5 26.5 39.8 C 26.6 39.1 26.1 38.7 25.4 38.7 L 25.4 38.7 Z " fill="rgb(255,255,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Oil.svg b/app/images/AGL_Icons_Oil.svg
new file mode 100644
index 0000000..4448b89
--- /dev/null
+++ b/app/images/AGL_Icons_Oil.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 70.7 28.2" width="70.7" height="28.2"><defs><clipPath id="_clipPath_hTT0u5fNUM4AGeXRjZpPDCv0UhYBJG0G"><rect width="70.7" height="28.2"/></clipPath></defs><g clip-path="url(#_clipPath_hTT0u5fNUM4AGeXRjZpPDCv0UhYBJG0G)"><path d=" M 63.5 5.1 L 65.1 6.7 C 65.6 7.2 66.3 7.2 66.7 6.7 C 67.2 6.2 67.2 5.5 66.7 5.1 L 64.3 2.7 C 63.8 2.3 63.2 2.2 62.8 2.6 L 59.3 5 L 41.3 16.2 L 36.1 10 C 35.9 9.6 35.5 9.5 35.2 9.5 L 23.5 9.5 L 23.5 5.9 L 25.9 5.9 C 26.6 5.9 27.1 5.4 27.1 4.7 C 27.1 4 26.6 3.5 25.9 3.5 L 18.8 3.5 C 18.1 3.5 17.6 4 17.6 4.7 C 17.6 5.4 18.1 5.9 18.8 5.9 L 21.2 5.9 L 21.2 9.4 L 11.8 9.4 L 11.8 5.9 C 11.8 5.5 11.6 5.2 11.3 5 L 4.2 0.2 C 3.9 0 3.5 0 3.2 0 C 2.8 0.1 2.6 0.4 2.4 0.7 L 0.1 6.6 C -0.1 7.1 0.1 7.7 0.6 8 L 9.4 13.5 L 9.4 27 C 9.4 27.7 9.9 28.2 10.6 28.2 L 45.9 28.2 C 46.3 28.2 46.6 28 46.8 27.8 L 60.9 6.8 L 63.5 5.1 L 63.5 5.1 Z M 2.6 6.6 L 4.1 3 L 9.4 6.5 L 9.4 10.9 L 2.6 6.6 L 2.6 6.6 Z M 45.3 25.9 L 11.7 25.9 L 11.7 11.8 L 34.6 11.8 L 40.1 18.4 C 40.5 18.9 41.2 19 41.6 18.6 L 56 9.8 L 45.3 25.9 L 45.3 25.9 Z " fill="rgb(185,185,185)"/><path d=" M 70.1 20.2 L 69.7 19.6 C 69.1 18.8 68.6 18.1 68.3 17.2 L 67 14.8 C 66.5 14 65.2 14 64.9 14.8 L 63.8 16.8 C 63.3 17.9 62.7 18.9 62 19.9 C 61.5 20.5 61.2 21.2 61.2 22 C 61 24.4 62.6 26.5 64.8 26.9 C 65 27 65.4 27 65.7 27 C 66.8 27 67.8 26.6 68.8 25.9 C 70 25 70.6 23.7 70.6 22.3 C 70.7 21.5 70.4 20.8 70.1 20.2 L 70.1 20.2 L 70.1 20.2 Z M 67.4 24.1 C 66.8 24.6 66.1 24.7 65.4 24.6 C 64.2 24.4 63.4 23.3 63.5 22.1 C 63.5 21.7 63.6 21.5 63.9 21.3 C 64.7 20.2 65.3 19.1 65.9 17.9 L 66.1 18.3 C 66.6 19.2 67.2 20.1 67.6 20.9 L 68 21.5 C 68.1 21.7 68.2 22 68.2 22.3 C 68.2 23.1 68 23.6 67.4 24.1 L 67.4 24.1 L 67.4 24.1 Z " fill="rgb(185,185,185)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Oil_red.svg b/app/images/AGL_Icons_Oil_red.svg
new file mode 100644
index 0000000..6a0681a
--- /dev/null
+++ b/app/images/AGL_Icons_Oil_red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 70.7 28.2" width="70.7" height="28.2"><defs><clipPath id="_clipPath_eC6vY6NCWhdYEayxQAPDeXkIL52fYKrR"><rect width="70.7" height="28.2"/></clipPath></defs><g clip-path="url(#_clipPath_eC6vY6NCWhdYEayxQAPDeXkIL52fYKrR)"><path d=" M 63.5 5.1 L 65.1 6.7 C 65.6 7.2 66.3 7.2 66.7 6.7 C 67.2 6.2 67.2 5.5 66.7 5.1 L 64.3 2.7 C 63.8 2.3 63.2 2.2 62.8 2.6 L 59.3 5 L 41.3 16.2 L 36.1 10 C 35.9 9.6 35.5 9.5 35.2 9.5 L 23.5 9.5 L 23.5 5.9 L 25.9 5.9 C 26.6 5.9 27.1 5.4 27.1 4.7 C 27.1 4 26.6 3.5 25.9 3.5 L 18.8 3.5 C 18.1 3.5 17.6 4 17.6 4.7 C 17.6 5.4 18.1 5.9 18.8 5.9 L 21.2 5.9 L 21.2 9.4 L 11.8 9.4 L 11.8 5.9 C 11.8 5.5 11.6 5.2 11.3 5 L 4.2 0.2 C 3.9 0 3.5 0 3.2 0 C 2.8 0.1 2.6 0.4 2.4 0.7 L 0.1 6.6 C -0.1 7.1 0.1 7.7 0.6 8 L 9.4 13.5 L 9.4 27 C 9.4 27.7 9.9 28.2 10.6 28.2 L 45.9 28.2 C 46.3 28.2 46.6 28 46.8 27.8 L 60.9 6.8 L 63.5 5.1 L 63.5 5.1 Z M 2.6 6.6 L 4.1 3 L 9.4 6.5 L 9.4 10.9 L 2.6 6.6 L 2.6 6.6 Z M 45.3 25.9 L 11.7 25.9 L 11.7 11.8 L 34.6 11.8 L 40.1 18.4 C 40.5 18.9 41.2 19 41.6 18.6 L 56 9.8 L 45.3 25.9 L 45.3 25.9 Z " fill="rgb(255,0,0)"/><path d=" M 70.1 20.2 L 69.7 19.6 C 69.1 18.8 68.6 18.1 68.3 17.2 L 67 14.8 C 66.5 14 65.2 14 64.9 14.8 L 63.8 16.8 C 63.3 17.9 62.7 18.9 62 19.9 C 61.5 20.5 61.2 21.2 61.2 22 C 61 24.4 62.6 26.5 64.8 26.9 C 65 27 65.4 27 65.7 27 C 66.8 27 67.8 26.6 68.8 25.9 C 70 25 70.6 23.7 70.6 22.3 C 70.7 21.5 70.4 20.8 70.1 20.2 L 70.1 20.2 L 70.1 20.2 Z M 67.4 24.1 C 66.8 24.6 66.1 24.7 65.4 24.6 C 64.2 24.4 63.4 23.3 63.5 22.1 C 63.5 21.7 63.6 21.5 63.9 21.3 C 64.7 20.2 65.3 19.1 65.9 17.9 L 66.1 18.3 C 66.6 19.2 67.2 20.1 67.6 20.9 L 68 21.5 C 68.1 21.7 68.2 22 68.2 22.3 C 68.2 23.1 68 23.6 67.4 24.1 L 67.4 24.1 L 67.4 24.1 Z " fill="rgb(255,0,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Oil_yellow.svg b/app/images/AGL_Icons_Oil_yellow.svg
new file mode 100644
index 0000000..8af8c0e
--- /dev/null
+++ b/app/images/AGL_Icons_Oil_yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 70.7 28.2" width="70.7" height="28.2"><defs><clipPath id="_clipPath_KdjXxiTwumgXPejf8BSwJlT40quuxDQA"><rect width="70.7" height="28.2"/></clipPath></defs><g clip-path="url(#_clipPath_KdjXxiTwumgXPejf8BSwJlT40quuxDQA)"><path d=" M 63.5 5.1 L 65.1 6.7 C 65.6 7.2 66.3 7.2 66.7 6.7 C 67.2 6.2 67.2 5.5 66.7 5.1 L 64.3 2.7 C 63.8 2.3 63.2 2.2 62.8 2.6 L 59.3 5 L 41.3 16.2 L 36.1 10 C 35.9 9.6 35.5 9.5 35.2 9.5 L 23.5 9.5 L 23.5 5.9 L 25.9 5.9 C 26.6 5.9 27.1 5.4 27.1 4.7 C 27.1 4 26.6 3.5 25.9 3.5 L 18.8 3.5 C 18.1 3.5 17.6 4 17.6 4.7 C 17.6 5.4 18.1 5.9 18.8 5.9 L 21.2 5.9 L 21.2 9.4 L 11.8 9.4 L 11.8 5.9 C 11.8 5.5 11.6 5.2 11.3 5 L 4.2 0.2 C 3.9 0 3.5 0 3.2 0 C 2.8 0.1 2.6 0.4 2.4 0.7 L 0.1 6.6 C -0.1 7.1 0.1 7.7 0.6 8 L 9.4 13.5 L 9.4 27 C 9.4 27.7 9.9 28.2 10.6 28.2 L 45.9 28.2 C 46.3 28.2 46.6 28 46.8 27.8 L 60.9 6.8 L 63.5 5.1 L 63.5 5.1 Z M 2.6 6.6 L 4.1 3 L 9.4 6.5 L 9.4 10.9 L 2.6 6.6 L 2.6 6.6 Z M 45.3 25.9 L 11.7 25.9 L 11.7 11.8 L 34.6 11.8 L 40.1 18.4 C 40.5 18.9 41.2 19 41.6 18.6 L 56 9.8 L 45.3 25.9 L 45.3 25.9 Z " fill="rgb(255,255,0)"/><path d=" M 70.1 20.2 L 69.7 19.6 C 69.1 18.8 68.6 18.1 68.3 17.2 L 67 14.8 C 66.5 14 65.2 14 64.9 14.8 L 63.8 16.8 C 63.3 17.9 62.7 18.9 62 19.9 C 61.5 20.5 61.2 21.2 61.2 22 C 61 24.4 62.6 26.5 64.8 26.9 C 65 27 65.4 27 65.7 27 C 66.8 27 67.8 26.6 68.8 25.9 C 70 25 70.6 23.7 70.6 22.3 C 70.7 21.5 70.4 20.8 70.1 20.2 L 70.1 20.2 L 70.1 20.2 Z M 67.4 24.1 C 66.8 24.6 66.1 24.7 65.4 24.6 C 64.2 24.4 63.4 23.3 63.5 22.1 C 63.5 21.7 63.6 21.5 63.9 21.3 C 64.7 20.2 65.3 19.1 65.9 17.9 L 66.1 18.3 C 66.6 19.2 67.2 20.1 67.6 20.9 L 68 21.5 C 68.1 21.7 68.2 22 68.2 22.3 C 68.2 23.1 68 23.6 67.4 24.1 L 67.4 24.1 L 67.4 24.1 Z " fill="rgb(255,255,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_OpenDoor.svg b/app/images/AGL_Icons_OpenDoor.svg
new file mode 100644
index 0000000..9f99ab2
--- /dev/null
+++ b/app/images/AGL_Icons_OpenDoor.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 51.4 59.1" width="51.4" height="59.1"><defs><clipPath id="_clipPath_75DIDpMMFr6rZYsVffvVqWNH5hlgRJXj"><rect width="51.4" height="59.1"/></clipPath></defs><g clip-path="url(#_clipPath_75DIDpMMFr6rZYsVffvVqWNH5hlgRJXj)"><path d=" M 36 9.8 C 31.4 8.4 19.8 8.4 15.6 9.8 C 15.1 9.9 14.9 10.3 14.9 10.8 L 15.9 21.7 C 15.9 22 16.1 22.2 16.3 22.4 C 16.5 22.6 16.8 22.7 17.1 22.6 C 22.1 21.3 29.3 21.3 34.4 22.6 L 34.6 22.6 C 34.8 22.6 35 22.5 35.3 22.4 C 35.5 22.3 35.7 22 35.7 21.7 L 36.7 10.8 C 36.8 10.4 36.5 9.9 36 9.8 L 36 9.8 L 36 9.8 Z M 33.7 20.4 C 31.2 19.9 28.5 19.6 25.7 19.6 C 22.9 19.6 20.1 19.9 17.6 20.4 L 16.8 11.5 C 21 10.5 30 10.5 34.5 11.5 L 33.7 20.4 L 33.7 20.4 Z " fill="rgb(185,185,185)"/><path d=" M 33.6 42.3 L 17.8 42.3 C 16.1 42.3 14.8 43.6 14.8 45.3 L 14.8 52.2 C 14.8 52.7 15.1 53.1 15.6 53.2 C 19 53.9 22.3 54.2 25.7 54.2 C 29.1 54.2 32.4 53.9 35.8 53.2 C 36.3 53.1 36.6 52.7 36.6 52.2 L 36.6 45.3 C 36.6 43.6 35.3 42.3 33.6 42.3 L 33.6 42.3 L 33.6 42.3 Z M 34.6 51.4 C 28.7 52.5 22.7 52.5 16.8 51.4 L 16.8 45.3 C 16.8 44.7 17.2 44.3 17.8 44.3 L 33.6 44.3 C 34.2 44.3 34.6 44.7 34.6 45.3 L 34.6 51.4 L 34.6 51.4 Z " fill="rgb(185,185,185)"/><path d=" M 49.9 34.2 C 50 34.3 50.2 34.4 50.4 34.4 C 50.6 34.4 50.7 34.4 50.9 34.2 C 51.2 34 51.4 33.7 51.4 33.3 L 51.4 28.4 C 51.4 28.1 51.2 27.8 50.9 27.6 L 40.5 21 L 40.5 10.6 C 40.5 7.9 40.2 5.7 39.5 2.8 C 39.4 2.4 39.1 2.1 38.7 2.1 L 32.5 0.7 C 28 -0.3 23.2 -0.3 18.8 0.7 L 12.6 2.1 C 12.3 2.2 12 2.4 11.9 2.8 C 11.2 5.7 10.9 7.9 10.9 10.6 L 10.9 20.1 L 0.5 26.7 C 0.2 26.8 0 27.2 0 27.5 L 0 32.4 C 0 32.8 0.2 33.1 0.5 33.3 C 0.7 33.4 0.8 33.4 1 33.4 C 1.2 33.4 1.4 33.3 1.5 33.3 L 10.9 27.3 L 10.9 35.9 L 0.5 42.5 C 0.2 42.6 0 43 0 43.3 L 0 48.2 C 0 48.6 0.2 48.9 0.5 49.1 C 0.7 49.2 0.8 49.2 1 49.2 C 1.2 49.2 1.4 49.1 1.5 49.1 L 10.9 43.1 L 10.9 56.1 C 10.9 57.8 12.2 59.1 13.9 59.1 L 37.6 59.1 C 39.3 59.1 40.6 57.8 40.6 56.1 L 40.6 43.1 L 50 49.1 C 50.1 49.2 50.3 49.3 50.5 49.3 C 50.7 49.3 50.8 49.3 51 49.1 C 51.3 48.9 51.5 48.6 51.5 48.2 L 51.5 43.3 C 51.5 43 51.3 42.7 51 42.5 L 40.6 35.9 L 40.6 28.3 L 49.9 34.2 L 49.9 34.2 Z M 49.4 29.1 L 49.4 31.7 L 40.5 26 L 40.5 23.4 L 49.4 29.1 L 49.4 29.1 Z M 2 30.6 L 2 28 L 10.9 22.4 L 10.9 25 L 2 30.6 L 2 30.6 Z M 2 46.4 L 2 43.8 L 10.9 38.2 L 10.9 40.8 L 2 46.4 L 2 46.4 Z M 38.5 56.2 C 38.5 56.8 38.1 57.2 37.5 57.2 L 13.8 57.2 C 13.2 57.2 12.8 56.8 12.8 56.2 L 12.8 10.6 C 12.8 8.2 13 6.3 13.6 3.9 L 19.2 2.6 C 23.4 1.6 27.9 1.6 32 2.6 L 37.6 3.9 C 38.2 6.3 38.4 8.3 38.4 10.6 L 38.4 56.2 L 38.5 56.2 Z M 49.4 43.9 L 49.4 46.5 L 40.5 40.9 L 40.5 38.3 L 49.4 43.9 L 49.4 43.9 Z " fill="rgb(185,185,185)"/><path d=" M 36 25.6 C 35.7 25.4 35.3 25.5 35 25.7 L 31 28.7 C 30.7 28.9 30.6 29.2 30.6 29.5 L 30.6 38.4 C 30.6 39 31 39.4 31.6 39.4 L 35.6 39.4 C 36.2 39.4 36.6 39 36.6 38.4 L 36.6 26.5 C 36.6 26.1 36.3 25.8 36 25.6 L 36 25.6 L 36 25.6 Z M 34.6 37.4 L 32.6 37.4 L 32.6 30 L 34.6 28.5 L 34.6 37.4 L 34.6 37.4 Z " fill="rgb(185,185,185)"/><path d=" M 15.8 39.4 L 19.8 39.4 C 20.4 39.4 20.8 39 20.8 38.4 L 20.8 29.5 C 20.8 29.2 20.7 28.9 20.4 28.7 L 16.4 25.7 C 16.1 25.5 15.7 25.4 15.4 25.6 C 15 25.8 14.8 26.1 14.8 26.5 L 14.8 38.4 C 14.8 39 15.2 39.4 15.8 39.4 L 15.8 39.4 L 15.8 39.4 Z M 16.8 28.5 L 18.8 30 L 18.8 37.4 L 16.8 37.4 L 16.8 28.5 L 16.8 28.5 Z " fill="rgb(185,185,185)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_OpenDoor_red.svg b/app/images/AGL_Icons_OpenDoor_red.svg
new file mode 100644
index 0000000..f4aca7b
--- /dev/null
+++ b/app/images/AGL_Icons_OpenDoor_red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 51.4 59.1" width="51.4" height="59.1"><defs><clipPath id="_clipPath_wu7F3YMsvJowWbYrHTLRyPlLqMsCW7qc"><rect width="51.4" height="59.1"/></clipPath></defs><g clip-path="url(#_clipPath_wu7F3YMsvJowWbYrHTLRyPlLqMsCW7qc)"><path d=" M 36 9.8 C 31.4 8.4 19.8 8.4 15.6 9.8 C 15.1 9.9 14.9 10.3 14.9 10.8 L 15.9 21.7 C 15.9 22 16.1 22.2 16.3 22.4 C 16.5 22.6 16.8 22.7 17.1 22.6 C 22.1 21.3 29.3 21.3 34.4 22.6 L 34.6 22.6 C 34.8 22.6 35 22.5 35.3 22.4 C 35.5 22.3 35.7 22 35.7 21.7 L 36.7 10.8 C 36.8 10.4 36.5 9.9 36 9.8 L 36 9.8 L 36 9.8 Z M 33.7 20.4 C 31.2 19.9 28.5 19.6 25.7 19.6 C 22.9 19.6 20.1 19.9 17.6 20.4 L 16.8 11.5 C 21 10.5 30 10.5 34.5 11.5 L 33.7 20.4 L 33.7 20.4 Z " fill="rgb(255,0,0)"/><path d=" M 33.6 42.3 L 17.8 42.3 C 16.1 42.3 14.8 43.6 14.8 45.3 L 14.8 52.2 C 14.8 52.7 15.1 53.1 15.6 53.2 C 19 53.9 22.3 54.2 25.7 54.2 C 29.1 54.2 32.4 53.9 35.8 53.2 C 36.3 53.1 36.6 52.7 36.6 52.2 L 36.6 45.3 C 36.6 43.6 35.3 42.3 33.6 42.3 L 33.6 42.3 L 33.6 42.3 Z M 34.6 51.4 C 28.7 52.5 22.7 52.5 16.8 51.4 L 16.8 45.3 C 16.8 44.7 17.2 44.3 17.8 44.3 L 33.6 44.3 C 34.2 44.3 34.6 44.7 34.6 45.3 L 34.6 51.4 L 34.6 51.4 Z " fill="rgb(255,0,0)"/><path d=" M 49.9 34.2 C 50 34.3 50.2 34.4 50.4 34.4 C 50.6 34.4 50.7 34.4 50.9 34.2 C 51.2 34 51.4 33.7 51.4 33.3 L 51.4 28.4 C 51.4 28.1 51.2 27.8 50.9 27.6 L 40.5 21 L 40.5 10.6 C 40.5 7.9 40.2 5.7 39.5 2.8 C 39.4 2.4 39.1 2.1 38.7 2.1 L 32.5 0.7 C 28 -0.3 23.2 -0.3 18.8 0.7 L 12.6 2.1 C 12.3 2.2 12 2.4 11.9 2.8 C 11.2 5.7 10.9 7.9 10.9 10.6 L 10.9 20.1 L 0.5 26.7 C 0.2 26.8 0 27.2 0 27.5 L 0 32.4 C 0 32.8 0.2 33.1 0.5 33.3 C 0.7 33.4 0.8 33.4 1 33.4 C 1.2 33.4 1.4 33.3 1.5 33.3 L 10.9 27.3 L 10.9 35.9 L 0.5 42.5 C 0.2 42.6 0 43 0 43.3 L 0 48.2 C 0 48.6 0.2 48.9 0.5 49.1 C 0.7 49.2 0.8 49.2 1 49.2 C 1.2 49.2 1.4 49.1 1.5 49.1 L 10.9 43.1 L 10.9 56.1 C 10.9 57.8 12.2 59.1 13.9 59.1 L 37.6 59.1 C 39.3 59.1 40.6 57.8 40.6 56.1 L 40.6 43.1 L 50 49.1 C 50.1 49.2 50.3 49.3 50.5 49.3 C 50.7 49.3 50.8 49.3 51 49.1 C 51.3 48.9 51.5 48.6 51.5 48.2 L 51.5 43.3 C 51.5 43 51.3 42.7 51 42.5 L 40.6 35.9 L 40.6 28.3 L 49.9 34.2 L 49.9 34.2 Z M 49.4 29.1 L 49.4 31.7 L 40.5 26 L 40.5 23.4 L 49.4 29.1 L 49.4 29.1 Z M 2 30.6 L 2 28 L 10.9 22.4 L 10.9 25 L 2 30.6 L 2 30.6 Z M 2 46.4 L 2 43.8 L 10.9 38.2 L 10.9 40.8 L 2 46.4 L 2 46.4 Z M 38.5 56.2 C 38.5 56.8 38.1 57.2 37.5 57.2 L 13.8 57.2 C 13.2 57.2 12.8 56.8 12.8 56.2 L 12.8 10.6 C 12.8 8.2 13 6.3 13.6 3.9 L 19.2 2.6 C 23.4 1.6 27.9 1.6 32 2.6 L 37.6 3.9 C 38.2 6.3 38.4 8.3 38.4 10.6 L 38.4 56.2 L 38.5 56.2 Z M 49.4 43.9 L 49.4 46.5 L 40.5 40.9 L 40.5 38.3 L 49.4 43.9 L 49.4 43.9 Z " fill="rgb(255,0,0)"/><path d=" M 36 25.6 C 35.7 25.4 35.3 25.5 35 25.7 L 31 28.7 C 30.7 28.9 30.6 29.2 30.6 29.5 L 30.6 38.4 C 30.6 39 31 39.4 31.6 39.4 L 35.6 39.4 C 36.2 39.4 36.6 39 36.6 38.4 L 36.6 26.5 C 36.6 26.1 36.3 25.8 36 25.6 L 36 25.6 L 36 25.6 Z M 34.6 37.4 L 32.6 37.4 L 32.6 30 L 34.6 28.5 L 34.6 37.4 L 34.6 37.4 Z " fill="rgb(255,0,0)"/><path d=" M 15.8 39.4 L 19.8 39.4 C 20.4 39.4 20.8 39 20.8 38.4 L 20.8 29.5 C 20.8 29.2 20.7 28.9 20.4 28.7 L 16.4 25.7 C 16.1 25.5 15.7 25.4 15.4 25.6 C 15 25.8 14.8 26.1 14.8 26.5 L 14.8 38.4 C 14.8 39 15.2 39.4 15.8 39.4 L 15.8 39.4 L 15.8 39.4 Z M 16.8 28.5 L 18.8 30 L 18.8 37.4 L 16.8 37.4 L 16.8 28.5 L 16.8 28.5 Z " fill="rgb(255,0,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_OpenDoor_yellow.svg b/app/images/AGL_Icons_OpenDoor_yellow.svg
new file mode 100644
index 0000000..18c2777
--- /dev/null
+++ b/app/images/AGL_Icons_OpenDoor_yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 51.4 59.1" width="51.4" height="59.1"><defs><clipPath id="_clipPath_ixto9piCHyZsnZA3G4zZIiKRd0KPfFYG"><rect width="51.4" height="59.1"/></clipPath></defs><g clip-path="url(#_clipPath_ixto9piCHyZsnZA3G4zZIiKRd0KPfFYG)"><path d=" M 36 9.8 C 31.4 8.4 19.8 8.4 15.6 9.8 C 15.1 9.9 14.9 10.3 14.9 10.8 L 15.9 21.7 C 15.9 22 16.1 22.2 16.3 22.4 C 16.5 22.6 16.8 22.7 17.1 22.6 C 22.1 21.3 29.3 21.3 34.4 22.6 L 34.6 22.6 C 34.8 22.6 35 22.5 35.3 22.4 C 35.5 22.3 35.7 22 35.7 21.7 L 36.7 10.8 C 36.8 10.4 36.5 9.9 36 9.8 L 36 9.8 L 36 9.8 Z M 33.7 20.4 C 31.2 19.9 28.5 19.6 25.7 19.6 C 22.9 19.6 20.1 19.9 17.6 20.4 L 16.8 11.5 C 21 10.5 30 10.5 34.5 11.5 L 33.7 20.4 L 33.7 20.4 Z " fill="rgb(255,255,0)"/><path d=" M 33.6 42.3 L 17.8 42.3 C 16.1 42.3 14.8 43.6 14.8 45.3 L 14.8 52.2 C 14.8 52.7 15.1 53.1 15.6 53.2 C 19 53.9 22.3 54.2 25.7 54.2 C 29.1 54.2 32.4 53.9 35.8 53.2 C 36.3 53.1 36.6 52.7 36.6 52.2 L 36.6 45.3 C 36.6 43.6 35.3 42.3 33.6 42.3 L 33.6 42.3 L 33.6 42.3 Z M 34.6 51.4 C 28.7 52.5 22.7 52.5 16.8 51.4 L 16.8 45.3 C 16.8 44.7 17.2 44.3 17.8 44.3 L 33.6 44.3 C 34.2 44.3 34.6 44.7 34.6 45.3 L 34.6 51.4 L 34.6 51.4 Z " fill="rgb(255,255,0)"/><path d=" M 49.9 34.2 C 50 34.3 50.2 34.4 50.4 34.4 C 50.6 34.4 50.7 34.4 50.9 34.2 C 51.2 34 51.4 33.7 51.4 33.3 L 51.4 28.4 C 51.4 28.1 51.2 27.8 50.9 27.6 L 40.5 21 L 40.5 10.6 C 40.5 7.9 40.2 5.7 39.5 2.8 C 39.4 2.4 39.1 2.1 38.7 2.1 L 32.5 0.7 C 28 -0.3 23.2 -0.3 18.8 0.7 L 12.6 2.1 C 12.3 2.2 12 2.4 11.9 2.8 C 11.2 5.7 10.9 7.9 10.9 10.6 L 10.9 20.1 L 0.5 26.7 C 0.2 26.8 0 27.2 0 27.5 L 0 32.4 C 0 32.8 0.2 33.1 0.5 33.3 C 0.7 33.4 0.8 33.4 1 33.4 C 1.2 33.4 1.4 33.3 1.5 33.3 L 10.9 27.3 L 10.9 35.9 L 0.5 42.5 C 0.2 42.6 0 43 0 43.3 L 0 48.2 C 0 48.6 0.2 48.9 0.5 49.1 C 0.7 49.2 0.8 49.2 1 49.2 C 1.2 49.2 1.4 49.1 1.5 49.1 L 10.9 43.1 L 10.9 56.1 C 10.9 57.8 12.2 59.1 13.9 59.1 L 37.6 59.1 C 39.3 59.1 40.6 57.8 40.6 56.1 L 40.6 43.1 L 50 49.1 C 50.1 49.2 50.3 49.3 50.5 49.3 C 50.7 49.3 50.8 49.3 51 49.1 C 51.3 48.9 51.5 48.6 51.5 48.2 L 51.5 43.3 C 51.5 43 51.3 42.7 51 42.5 L 40.6 35.9 L 40.6 28.3 L 49.9 34.2 L 49.9 34.2 Z M 49.4 29.1 L 49.4 31.7 L 40.5 26 L 40.5 23.4 L 49.4 29.1 L 49.4 29.1 Z M 2 30.6 L 2 28 L 10.9 22.4 L 10.9 25 L 2 30.6 L 2 30.6 Z M 2 46.4 L 2 43.8 L 10.9 38.2 L 10.9 40.8 L 2 46.4 L 2 46.4 Z M 38.5 56.2 C 38.5 56.8 38.1 57.2 37.5 57.2 L 13.8 57.2 C 13.2 57.2 12.8 56.8 12.8 56.2 L 12.8 10.6 C 12.8 8.2 13 6.3 13.6 3.9 L 19.2 2.6 C 23.4 1.6 27.9 1.6 32 2.6 L 37.6 3.9 C 38.2 6.3 38.4 8.3 38.4 10.6 L 38.4 56.2 L 38.5 56.2 Z M 49.4 43.9 L 49.4 46.5 L 40.5 40.9 L 40.5 38.3 L 49.4 43.9 L 49.4 43.9 Z " fill="rgb(255,255,0)"/><path d=" M 36 25.6 C 35.7 25.4 35.3 25.5 35 25.7 L 31 28.7 C 30.7 28.9 30.6 29.2 30.6 29.5 L 30.6 38.4 C 30.6 39 31 39.4 31.6 39.4 L 35.6 39.4 C 36.2 39.4 36.6 39 36.6 38.4 L 36.6 26.5 C 36.6 26.1 36.3 25.8 36 25.6 L 36 25.6 L 36 25.6 Z M 34.6 37.4 L 32.6 37.4 L 32.6 30 L 34.6 28.5 L 34.6 37.4 L 34.6 37.4 Z " fill="rgb(255,255,0)"/><path d=" M 15.8 39.4 L 19.8 39.4 C 20.4 39.4 20.8 39 20.8 38.4 L 20.8 29.5 C 20.8 29.2 20.7 28.9 20.4 28.7 L 16.4 25.7 C 16.1 25.5 15.7 25.4 15.4 25.6 C 15 25.8 14.8 26.1 14.8 26.5 L 14.8 38.4 C 14.8 39 15.2 39.4 15.8 39.4 L 15.8 39.4 L 15.8 39.4 Z M 16.8 28.5 L 18.8 30 L 18.8 37.4 L 16.8 37.4 L 16.8 28.5 L 16.8 28.5 Z " fill="rgb(255,255,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_ParkingBrake.svg b/app/images/AGL_Icons_ParkingBrake.svg
new file mode 100644
index 0000000..01fa7ef
--- /dev/null
+++ b/app/images/AGL_Icons_ParkingBrake.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 48.4" width="66" height="48.4"><defs><clipPath id="_clipPath_LI1zraPI52dM1mCGF1zhqFxVJBRXTOHz"><rect width="66" height="48.4"/></clipPath></defs><g clip-path="url(#_clipPath_LI1zraPI52dM1mCGF1zhqFxVJBRXTOHz)"><path d=" M 33 0 C 19.7 0 8.8 10.9 8.8 24.2 C 8.8 37.5 19.7 48.4 33 48.4 C 46.3 48.4 57.2 37.5 57.2 24.2 C 57.2 10.9 46.3 0 33 0 L 33 0 L 33 0 Z M 33 46.2 C 20.9 46.2 11 36.3 11 24.2 C 11 12.1 20.9 2.2 33 2.2 C 45.1 2.2 55 12.1 55 24.2 C 55 36.3 45.1 46.2 33 46.2 L 33 46.2 L 33 46.2 Z " fill="rgb(185,185,185)"/><path d=" M 11.2 2.4 C 11.6 2 11.6 1.3 11.2 0.9 C 10.8 0.5 10.1 0.5 9.7 0.9 C -3.2 13.8 -3.2 34.7 9.7 47.6 C 9.9 47.8 10.1 47.9 10.5 47.9 C 10.8 47.9 11.1 47.8 11.3 47.6 C 11.7 47.2 11.7 46.5 11.3 46.1 C -0.8 34 -0.8 14.4 11.2 2.4 L 11.2 2.4 L 11.2 2.4 Z " fill="rgb(185,185,185)"/><path d=" M 56.3 0.9 C 55.9 0.5 55.2 0.5 54.8 0.9 C 54.4 1.3 54.4 2 54.8 2.4 C 66.8 14.4 66.8 34 54.8 46 C 54.4 46.4 54.4 47.1 54.8 47.5 C 55 47.7 55.2 47.8 55.6 47.8 C 55.9 47.8 56.2 47.7 56.4 47.5 C 69.2 34.7 69.2 13.8 56.3 0.9 L 56.3 0.9 L 56.3 0.9 Z " fill="rgb(185,185,185)"/><path d=" M 33 30.8 C 34.9 30.8 36.3 29.4 36.3 27.5 L 36.3 8.8 C 36.3 6.9 34.9 5.5 33 5.5 C 31.1 5.5 29.7 6.9 29.7 8.8 L 29.7 27.5 C 29.7 29.4 31.1 30.8 33 30.8 L 33 30.8 L 33 30.8 Z M 31.9 8.8 C 31.9 8.1 32.3 7.7 33 7.7 C 33.7 7.7 34.1 8.1 34.1 8.8 L 34.1 27.5 C 34.1 28.2 33.7 28.6 33 28.6 C 32.3 28.6 31.9 28.2 31.9 27.5 L 31.9 8.8 L 31.9 8.8 Z " fill="rgb(185,185,185)"/><path d=" M 33 34.1 C 30.6 34.1 28.6 36.1 28.6 38.5 C 28.6 40.9 30.6 42.9 33 42.9 C 35.4 42.9 37.4 40.9 37.4 38.5 C 37.4 36.1 35.4 34.1 33 34.1 L 33 34.1 L 33 34.1 Z M 33 40.7 C 31.8 40.7 30.8 39.7 30.8 38.5 C 30.8 37.3 31.8 36.3 33 36.3 C 34.2 36.3 35.2 37.3 35.2 38.5 C 35.2 39.7 34.2 40.7 33 40.7 L 33 40.7 L 33 40.7 Z " fill="rgb(185,185,185)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_ParkingBrake_red.svg b/app/images/AGL_Icons_ParkingBrake_red.svg
new file mode 100644
index 0000000..d9dec37
--- /dev/null
+++ b/app/images/AGL_Icons_ParkingBrake_red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 48.4" width="66" height="48.4"><defs><clipPath id="_clipPath_im8Yas5w3KTUrhTbZUddAkC1gbBC2JWg"><rect width="66" height="48.4"/></clipPath></defs><g clip-path="url(#_clipPath_im8Yas5w3KTUrhTbZUddAkC1gbBC2JWg)"><path d=" M 33 0 C 19.7 0 8.8 10.9 8.8 24.2 C 8.8 37.5 19.7 48.4 33 48.4 C 46.3 48.4 57.2 37.5 57.2 24.2 C 57.2 10.9 46.3 0 33 0 L 33 0 L 33 0 Z M 33 46.2 C 20.9 46.2 11 36.3 11 24.2 C 11 12.1 20.9 2.2 33 2.2 C 45.1 2.2 55 12.1 55 24.2 C 55 36.3 45.1 46.2 33 46.2 L 33 46.2 L 33 46.2 Z " fill="rgb(255,0,0)"/><path d=" M 11.2 2.4 C 11.6 2 11.6 1.3 11.2 0.9 C 10.8 0.5 10.1 0.5 9.7 0.9 C -3.2 13.8 -3.2 34.7 9.7 47.6 C 9.9 47.8 10.1 47.9 10.5 47.9 C 10.8 47.9 11.1 47.8 11.3 47.6 C 11.7 47.2 11.7 46.5 11.3 46.1 C -0.8 34 -0.8 14.4 11.2 2.4 L 11.2 2.4 L 11.2 2.4 Z " fill="rgb(255,0,0)"/><path d=" M 56.3 0.9 C 55.9 0.5 55.2 0.5 54.8 0.9 C 54.4 1.3 54.4 2 54.8 2.4 C 66.8 14.4 66.8 34 54.8 46 C 54.4 46.4 54.4 47.1 54.8 47.5 C 55 47.7 55.2 47.8 55.6 47.8 C 55.9 47.8 56.2 47.7 56.4 47.5 C 69.2 34.7 69.2 13.8 56.3 0.9 L 56.3 0.9 L 56.3 0.9 Z " fill="rgb(255,0,0)"/><path d=" M 33 30.8 C 34.9 30.8 36.3 29.4 36.3 27.5 L 36.3 8.8 C 36.3 6.9 34.9 5.5 33 5.5 C 31.1 5.5 29.7 6.9 29.7 8.8 L 29.7 27.5 C 29.7 29.4 31.1 30.8 33 30.8 L 33 30.8 L 33 30.8 Z M 31.9 8.8 C 31.9 8.1 32.3 7.7 33 7.7 C 33.7 7.7 34.1 8.1 34.1 8.8 L 34.1 27.5 C 34.1 28.2 33.7 28.6 33 28.6 C 32.3 28.6 31.9 28.2 31.9 27.5 L 31.9 8.8 L 31.9 8.8 Z " fill="rgb(255,0,0)"/><path d=" M 33 34.1 C 30.6 34.1 28.6 36.1 28.6 38.5 C 28.6 40.9 30.6 42.9 33 42.9 C 35.4 42.9 37.4 40.9 37.4 38.5 C 37.4 36.1 35.4 34.1 33 34.1 L 33 34.1 L 33 34.1 Z M 33 40.7 C 31.8 40.7 30.8 39.7 30.8 38.5 C 30.8 37.3 31.8 36.3 33 36.3 C 34.2 36.3 35.2 37.3 35.2 38.5 C 35.2 39.7 34.2 40.7 33 40.7 L 33 40.7 L 33 40.7 Z " fill="rgb(255,0,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_ParkingBrake_yellow.svg b/app/images/AGL_Icons_ParkingBrake_yellow.svg
new file mode 100644
index 0000000..8e99d11
--- /dev/null
+++ b/app/images/AGL_Icons_ParkingBrake_yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 66 48.4" width="66" height="48.4"><defs><clipPath id="_clipPath_TSVlv3nGxTHjYdmmiNPUAXEwajrzHHKb"><rect width="66" height="48.4"/></clipPath></defs><g clip-path="url(#_clipPath_TSVlv3nGxTHjYdmmiNPUAXEwajrzHHKb)"><path d=" M 33 0 C 19.7 0 8.8 10.9 8.8 24.2 C 8.8 37.5 19.7 48.4 33 48.4 C 46.3 48.4 57.2 37.5 57.2 24.2 C 57.2 10.9 46.3 0 33 0 L 33 0 L 33 0 Z M 33 46.2 C 20.9 46.2 11 36.3 11 24.2 C 11 12.1 20.9 2.2 33 2.2 C 45.1 2.2 55 12.1 55 24.2 C 55 36.3 45.1 46.2 33 46.2 L 33 46.2 L 33 46.2 Z " fill="rgb(255,255,0)"/><path d=" M 11.2 2.4 C 11.6 2 11.6 1.3 11.2 0.9 C 10.8 0.5 10.1 0.5 9.7 0.9 C -3.2 13.8 -3.2 34.7 9.7 47.6 C 9.9 47.8 10.1 47.9 10.5 47.9 C 10.8 47.9 11.1 47.8 11.3 47.6 C 11.7 47.2 11.7 46.5 11.3 46.1 C -0.8 34 -0.8 14.4 11.2 2.4 L 11.2 2.4 L 11.2 2.4 Z " fill="rgb(255,255,0)"/><path d=" M 56.3 0.9 C 55.9 0.5 55.2 0.5 54.8 0.9 C 54.4 1.3 54.4 2 54.8 2.4 C 66.8 14.4 66.8 34 54.8 46 C 54.4 46.4 54.4 47.1 54.8 47.5 C 55 47.7 55.2 47.8 55.6 47.8 C 55.9 47.8 56.2 47.7 56.4 47.5 C 69.2 34.7 69.2 13.8 56.3 0.9 L 56.3 0.9 L 56.3 0.9 Z " fill="rgb(255,255,0)"/><path d=" M 33 30.8 C 34.9 30.8 36.3 29.4 36.3 27.5 L 36.3 8.8 C 36.3 6.9 34.9 5.5 33 5.5 C 31.1 5.5 29.7 6.9 29.7 8.8 L 29.7 27.5 C 29.7 29.4 31.1 30.8 33 30.8 L 33 30.8 L 33 30.8 Z M 31.9 8.8 C 31.9 8.1 32.3 7.7 33 7.7 C 33.7 7.7 34.1 8.1 34.1 8.8 L 34.1 27.5 C 34.1 28.2 33.7 28.6 33 28.6 C 32.3 28.6 31.9 28.2 31.9 27.5 L 31.9 8.8 L 31.9 8.8 Z " fill="rgb(255,255,0)"/><path d=" M 33 34.1 C 30.6 34.1 28.6 36.1 28.6 38.5 C 28.6 40.9 30.6 42.9 33 42.9 C 35.4 42.9 37.4 40.9 37.4 38.5 C 37.4 36.1 35.4 34.1 33 34.1 L 33 34.1 L 33 34.1 Z M 33 40.7 C 31.8 40.7 30.8 39.7 30.8 38.5 C 30.8 37.3 31.8 36.3 33 36.3 C 34.2 36.3 35.2 37.3 35.2 38.5 C 35.2 39.7 34.2 40.7 33 40.7 L 33 40.7 L 33 40.7 Z " fill="rgb(255,255,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Seatbelt.svg b/app/images/AGL_Icons_Seatbelt.svg
new file mode 100644
index 0000000..8664864
--- /dev/null
+++ b/app/images/AGL_Icons_Seatbelt.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 54.4 58.6" width="54.4" height="58.6"><defs><clipPath id="_clipPath_S4ePm9BKgKOLnczBnVbZEzP3dAkzSx9g"><rect width="54.4" height="58.6"/></clipPath></defs><g clip-path="url(#_clipPath_S4ePm9BKgKOLnczBnVbZEzP3dAkzSx9g)"><path d=" M 53.8 40.7 C 50.5 39.3 47 38.2 43.5 37.4 C 43 30.9 40.3 25.1 36.2 21.6 L 44.5 13.3 C 44.7 13.1 44.8 12.9 44.8 12.6 C 44.8 12.3 44.7 12.1 44.5 11.9 L 41.6 9 C 41.2 8.6 40.6 8.6 40.2 9 L 31.4 17.8 C 31.3 17.5 31.3 17.2 31.3 17 L 31.3 15.3 C 33.7 13.9 35.3 11.3 35.3 8.3 C 35.3 8.3 35.3 8.2 35.3 8.2 C 35.3 8.2 35.3 8.1 35.3 8.1 C 35.3 3.7 31.7 0 27.2 0 C 22.8 0 19.1 3.6 19.1 8.1 C 19.1 8.1 19.1 8.2 19.1 8.2 C 19.1 8.2 19.1 8.3 19.1 8.3 C 19.1 11.1 20.7 13.9 23.1 15.3 L 23.1 17 C 23.1 18.1 22.4 19.2 21.3 19.7 C 15.6 22.5 11.7 29.4 11 37.2 C 7.3 38.1 3.7 39.3 0.5 40.8 C 0.3 40.9 0 41.2 0 41.6 C 0 42 0.1 42.3 0.4 42.5 L 4.4 45.2 C 4.7 45.4 5 45.4 5.3 45.3 C 7.3 44.6 9.2 44.1 11.1 43.6 C 11.2 49.3 12.3 54.4 14.2 58.1 C 14.4 58.4 14.7 58.6 15.1 58.6 L 20.1 58.6 C 20.4 58.6 20.9 58.4 21 58.1 C 21.1 57.8 21.2 57.4 21 57.1 C 19.8 54.8 19.2 51.4 19.1 47.3 C 24.3 46.3 30.1 46.3 35.3 47.3 C 35.2 51.4 34.6 54.8 33.4 57.1 C 33.2 57.4 33.2 57.8 33.4 58.1 C 33.6 58.4 34 58.6 34.3 58.6 L 39.3 58.6 C 39.7 58.6 40 58.4 40.1 58.1 C 42 54.4 43.1 49.3 43.2 43.6 C 45.1 44.1 47.1 44.7 49.1 45.4 C 49.2 45.5 49.3 45.5 49.4 45.5 C 49.6 45.5 49.8 45.4 49.9 45.2 L 53.9 42.5 C 54.2 42.3 54.3 42 54.3 41.6 C 54.4 41.2 54.1 40.8 53.8 40.7 L 53.8 40.7 L 53.8 40.7 Z M 41.3 36.8 C 37.2 35.9 32.9 35.4 28.8 35.3 C 26.7 35.2 24.5 35.2 22.4 35.4 L 34.7 23.1 C 38.4 26.1 40.8 31.2 41.3 36.8 L 41.3 36.8 L 41.3 36.8 Z M 24.6 13.5 C 24.6 13.5 24.6 13.5 24.6 13.5 C 24.5 13.4 24.4 13.4 24.3 13.3 C 22.6 12.4 21.4 10.6 21.2 8.6 C 21.2 8.6 21.2 8.6 21.2 8.6 C 21.2 8.5 21.2 8.4 21.2 8.3 C 21.2 8.3 21.2 8.3 21.2 8.2 C 21.2 8.1 21.2 8 21.2 7.9 C 21.2 4.6 23.9 1.8 27.3 1.8 C 30.6 1.8 33.4 4.5 33.3 7.9 C 33.3 10.2 32 12.3 29.9 13.4 C 29.8 13.4 29.7 13.5 29.7 13.6 C 29 13.9 28.2 14 27.4 14 C 26.3 14.1 25.4 13.9 24.6 13.5 L 24.6 13.5 L 24.6 13.5 Z M 22.3 21.3 C 24.1 20.4 25.2 18.7 25.2 16.8 L 25.2 15.9 C 25.8 16.1 26.5 16.2 27.2 16.2 C 27.9 16.2 28.5 16.1 29.1 16 L 29.1 16.8 C 29.1 17.6 29.4 18.5 29.8 19.2 L 13.3 35.7 C 14.2 29.2 17.7 23.6 22.3 21.3 L 22.3 21.3 L 22.3 21.3 Z M 38.8 56.5 L 35.9 56.5 C 36.9 53.9 37.4 50.4 37.4 46.4 C 37.4 45.9 37.1 45.5 36.6 45.4 C 30.7 44.1 24 44.1 18 45.4 C 17.5 45.5 17.2 45.9 17.2 46.4 C 17.2 50.4 17.7 53.9 18.7 56.5 L 15.8 56.5 C 14.2 53.1 13.3 48.4 13.2 43.2 C 13.6 43.1 13.9 43 14.3 42.9 C 23 41 30.9 41 39.6 42.8 C 40.2 42.9 40.8 43.1 41.4 43.2 C 41.3 48.5 40.4 53.1 38.8 56.5 L 38.8 56.5 L 38.8 56.5 Z M 49.4 43.3 C 42.2 41 35.9 39.7 29.6 39.4 C 24.4 39.2 19.2 39.6 13.7 40.9 C 13.1 41.1 12.4 41.2 11.8 41.4 C 11.8 41.4 11.8 41.4 11.8 41.4 C 9.7 41.9 7.5 42.6 5.3 43.3 L 3.2 41.9 C 6 40.7 9.2 39.7 12.4 39 C 12.4 39 12.4 39 12.5 39.1 C 12.6 39 12.7 39 12.8 39 C 12.8 39 12.8 39 12.9 38.9 C 13 38.9 13.1 38.9 13.1 38.8 C 13.3 38.7 13.5 38.6 13.6 38.5 L 32 20.2 C 32.1 20.1 32.2 20 32.2 19.9 L 41 11.1 L 42.4 12.5 L 18.9 36 C 18.6 36.3 18.5 36.7 18.7 37.1 C 18.9 37.5 19.3 37.7 19.7 37.7 C 19.7 37.7 19.7 37.7 19.7 37.7 C 19.7 37.7 19.7 37.7 19.8 37.7 C 24.2 37.3 28.7 37.3 33.2 37.7 C 35.8 37.9 38.4 38.3 41 38.9 C 41.4 39 41.8 39.1 42.2 39.2 L 42.2 39.2 C 45.3 39.9 48.4 40.8 51.3 41.9 L 49.4 43.3 L 49.4 43.3 Z " fill="rgb(185,185,185)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Seatbelt_red.svg b/app/images/AGL_Icons_Seatbelt_red.svg
new file mode 100644
index 0000000..901da9c
--- /dev/null
+++ b/app/images/AGL_Icons_Seatbelt_red.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 54.4 58.6" width="54.4" height="58.6"><defs><clipPath id="_clipPath_7XAaufV7M35shE1viFfj2em07l3Oxonq"><rect width="54.4" height="58.6"/></clipPath></defs><g clip-path="url(#_clipPath_7XAaufV7M35shE1viFfj2em07l3Oxonq)"><path d=" M 53.8 40.7 C 50.5 39.3 47 38.2 43.5 37.4 C 43 30.9 40.3 25.1 36.2 21.6 L 44.5 13.3 C 44.7 13.1 44.8 12.9 44.8 12.6 C 44.8 12.3 44.7 12.1 44.5 11.9 L 41.6 9 C 41.2 8.6 40.6 8.6 40.2 9 L 31.4 17.8 C 31.3 17.5 31.3 17.2 31.3 17 L 31.3 15.3 C 33.7 13.9 35.3 11.3 35.3 8.3 C 35.3 8.3 35.3 8.2 35.3 8.2 C 35.3 8.2 35.3 8.1 35.3 8.1 C 35.3 3.7 31.7 0 27.2 0 C 22.8 0 19.1 3.6 19.1 8.1 C 19.1 8.1 19.1 8.2 19.1 8.2 C 19.1 8.2 19.1 8.3 19.1 8.3 C 19.1 11.1 20.7 13.9 23.1 15.3 L 23.1 17 C 23.1 18.1 22.4 19.2 21.3 19.7 C 15.6 22.5 11.7 29.4 11 37.2 C 7.3 38.1 3.7 39.3 0.5 40.8 C 0.3 40.9 0 41.2 0 41.6 C 0 42 0.1 42.3 0.4 42.5 L 4.4 45.2 C 4.7 45.4 5 45.4 5.3 45.3 C 7.3 44.6 9.2 44.1 11.1 43.6 C 11.2 49.3 12.3 54.4 14.2 58.1 C 14.4 58.4 14.7 58.6 15.1 58.6 L 20.1 58.6 C 20.4 58.6 20.9 58.4 21 58.1 C 21.1 57.8 21.2 57.4 21 57.1 C 19.8 54.8 19.2 51.4 19.1 47.3 C 24.3 46.3 30.1 46.3 35.3 47.3 C 35.2 51.4 34.6 54.8 33.4 57.1 C 33.2 57.4 33.2 57.8 33.4 58.1 C 33.6 58.4 34 58.6 34.3 58.6 L 39.3 58.6 C 39.7 58.6 40 58.4 40.1 58.1 C 42 54.4 43.1 49.3 43.2 43.6 C 45.1 44.1 47.1 44.7 49.1 45.4 C 49.2 45.5 49.3 45.5 49.4 45.5 C 49.6 45.5 49.8 45.4 49.9 45.2 L 53.9 42.5 C 54.2 42.3 54.3 42 54.3 41.6 C 54.4 41.2 54.1 40.8 53.8 40.7 L 53.8 40.7 L 53.8 40.7 Z M 41.3 36.8 C 37.2 35.9 32.9 35.4 28.8 35.3 C 26.7 35.2 24.5 35.2 22.4 35.4 L 34.7 23.1 C 38.4 26.1 40.8 31.2 41.3 36.8 L 41.3 36.8 L 41.3 36.8 Z M 24.6 13.5 C 24.6 13.5 24.6 13.5 24.6 13.5 C 24.5 13.4 24.4 13.4 24.3 13.3 C 22.6 12.4 21.4 10.6 21.2 8.6 C 21.2 8.6 21.2 8.6 21.2 8.6 C 21.2 8.5 21.2 8.4 21.2 8.3 C 21.2 8.3 21.2 8.3 21.2 8.2 C 21.2 8.1 21.2 8 21.2 7.9 C 21.2 4.6 23.9 1.8 27.3 1.8 C 30.6 1.8 33.4 4.5 33.3 7.9 C 33.3 10.2 32 12.3 29.9 13.4 C 29.8 13.4 29.7 13.5 29.7 13.6 C 29 13.9 28.2 14 27.4 14 C 26.3 14.1 25.4 13.9 24.6 13.5 L 24.6 13.5 L 24.6 13.5 Z M 22.3 21.3 C 24.1 20.4 25.2 18.7 25.2 16.8 L 25.2 15.9 C 25.8 16.1 26.5 16.2 27.2 16.2 C 27.9 16.2 28.5 16.1 29.1 16 L 29.1 16.8 C 29.1 17.6 29.4 18.5 29.8 19.2 L 13.3 35.7 C 14.2 29.2 17.7 23.6 22.3 21.3 L 22.3 21.3 L 22.3 21.3 Z M 38.8 56.5 L 35.9 56.5 C 36.9 53.9 37.4 50.4 37.4 46.4 C 37.4 45.9 37.1 45.5 36.6 45.4 C 30.7 44.1 24 44.1 18 45.4 C 17.5 45.5 17.2 45.9 17.2 46.4 C 17.2 50.4 17.7 53.9 18.7 56.5 L 15.8 56.5 C 14.2 53.1 13.3 48.4 13.2 43.2 C 13.6 43.1 13.9 43 14.3 42.9 C 23 41 30.9 41 39.6 42.8 C 40.2 42.9 40.8 43.1 41.4 43.2 C 41.3 48.5 40.4 53.1 38.8 56.5 L 38.8 56.5 L 38.8 56.5 Z M 49.4 43.3 C 42.2 41 35.9 39.7 29.6 39.4 C 24.4 39.2 19.2 39.6 13.7 40.9 C 13.1 41.1 12.4 41.2 11.8 41.4 C 11.8 41.4 11.8 41.4 11.8 41.4 C 9.7 41.9 7.5 42.6 5.3 43.3 L 3.2 41.9 C 6 40.7 9.2 39.7 12.4 39 C 12.4 39 12.4 39 12.5 39.1 C 12.6 39 12.7 39 12.8 39 C 12.8 39 12.8 39 12.9 38.9 C 13 38.9 13.1 38.9 13.1 38.8 C 13.3 38.7 13.5 38.6 13.6 38.5 L 32 20.2 C 32.1 20.1 32.2 20 32.2 19.9 L 41 11.1 L 42.4 12.5 L 18.9 36 C 18.6 36.3 18.5 36.7 18.7 37.1 C 18.9 37.5 19.3 37.7 19.7 37.7 C 19.7 37.7 19.7 37.7 19.7 37.7 C 19.7 37.7 19.7 37.7 19.8 37.7 C 24.2 37.3 28.7 37.3 33.2 37.7 C 35.8 37.9 38.4 38.3 41 38.9 C 41.4 39 41.8 39.1 42.2 39.2 L 42.2 39.2 C 45.3 39.9 48.4 40.8 51.3 41.9 L 49.4 43.3 L 49.4 43.3 Z " fill="rgb(255,0,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/AGL_Icons_Seatbelt_yellow.svg b/app/images/AGL_Icons_Seatbelt_yellow.svg
new file mode 100644
index 0000000..4871125
--- /dev/null
+++ b/app/images/AGL_Icons_Seatbelt_yellow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 54.4 58.6" width="54.4" height="58.6"><defs><clipPath id="_clipPath_zrIfjKGEJdpObXLNizPL9llHaVO5ldbF"><rect width="54.4" height="58.6"/></clipPath></defs><g clip-path="url(#_clipPath_zrIfjKGEJdpObXLNizPL9llHaVO5ldbF)"><path d=" M 53.8 40.7 C 50.5 39.3 47 38.2 43.5 37.4 C 43 30.9 40.3 25.1 36.2 21.6 L 44.5 13.3 C 44.7 13.1 44.8 12.9 44.8 12.6 C 44.8 12.3 44.7 12.1 44.5 11.9 L 41.6 9 C 41.2 8.6 40.6 8.6 40.2 9 L 31.4 17.8 C 31.3 17.5 31.3 17.2 31.3 17 L 31.3 15.3 C 33.7 13.9 35.3 11.3 35.3 8.3 C 35.3 8.3 35.3 8.2 35.3 8.2 C 35.3 8.2 35.3 8.1 35.3 8.1 C 35.3 3.7 31.7 0 27.2 0 C 22.8 0 19.1 3.6 19.1 8.1 C 19.1 8.1 19.1 8.2 19.1 8.2 C 19.1 8.2 19.1 8.3 19.1 8.3 C 19.1 11.1 20.7 13.9 23.1 15.3 L 23.1 17 C 23.1 18.1 22.4 19.2 21.3 19.7 C 15.6 22.5 11.7 29.4 11 37.2 C 7.3 38.1 3.7 39.3 0.5 40.8 C 0.3 40.9 0 41.2 0 41.6 C 0 42 0.1 42.3 0.4 42.5 L 4.4 45.2 C 4.7 45.4 5 45.4 5.3 45.3 C 7.3 44.6 9.2 44.1 11.1 43.6 C 11.2 49.3 12.3 54.4 14.2 58.1 C 14.4 58.4 14.7 58.6 15.1 58.6 L 20.1 58.6 C 20.4 58.6 20.9 58.4 21 58.1 C 21.1 57.8 21.2 57.4 21 57.1 C 19.8 54.8 19.2 51.4 19.1 47.3 C 24.3 46.3 30.1 46.3 35.3 47.3 C 35.2 51.4 34.6 54.8 33.4 57.1 C 33.2 57.4 33.2 57.8 33.4 58.1 C 33.6 58.4 34 58.6 34.3 58.6 L 39.3 58.6 C 39.7 58.6 40 58.4 40.1 58.1 C 42 54.4 43.1 49.3 43.2 43.6 C 45.1 44.1 47.1 44.7 49.1 45.4 C 49.2 45.5 49.3 45.5 49.4 45.5 C 49.6 45.5 49.8 45.4 49.9 45.2 L 53.9 42.5 C 54.2 42.3 54.3 42 54.3 41.6 C 54.4 41.2 54.1 40.8 53.8 40.7 L 53.8 40.7 L 53.8 40.7 Z M 41.3 36.8 C 37.2 35.9 32.9 35.4 28.8 35.3 C 26.7 35.2 24.5 35.2 22.4 35.4 L 34.7 23.1 C 38.4 26.1 40.8 31.2 41.3 36.8 L 41.3 36.8 L 41.3 36.8 Z M 24.6 13.5 C 24.6 13.5 24.6 13.5 24.6 13.5 C 24.5 13.4 24.4 13.4 24.3 13.3 C 22.6 12.4 21.4 10.6 21.2 8.6 C 21.2 8.6 21.2 8.6 21.2 8.6 C 21.2 8.5 21.2 8.4 21.2 8.3 C 21.2 8.3 21.2 8.3 21.2 8.2 C 21.2 8.1 21.2 8 21.2 7.9 C 21.2 4.6 23.9 1.8 27.3 1.8 C 30.6 1.8 33.4 4.5 33.3 7.9 C 33.3 10.2 32 12.3 29.9 13.4 C 29.8 13.4 29.7 13.5 29.7 13.6 C 29 13.9 28.2 14 27.4 14 C 26.3 14.1 25.4 13.9 24.6 13.5 L 24.6 13.5 L 24.6 13.5 Z M 22.3 21.3 C 24.1 20.4 25.2 18.7 25.2 16.8 L 25.2 15.9 C 25.8 16.1 26.5 16.2 27.2 16.2 C 27.9 16.2 28.5 16.1 29.1 16 L 29.1 16.8 C 29.1 17.6 29.4 18.5 29.8 19.2 L 13.3 35.7 C 14.2 29.2 17.7 23.6 22.3 21.3 L 22.3 21.3 L 22.3 21.3 Z M 38.8 56.5 L 35.9 56.5 C 36.9 53.9 37.4 50.4 37.4 46.4 C 37.4 45.9 37.1 45.5 36.6 45.4 C 30.7 44.1 24 44.1 18 45.4 C 17.5 45.5 17.2 45.9 17.2 46.4 C 17.2 50.4 17.7 53.9 18.7 56.5 L 15.8 56.5 C 14.2 53.1 13.3 48.4 13.2 43.2 C 13.6 43.1 13.9 43 14.3 42.9 C 23 41 30.9 41 39.6 42.8 C 40.2 42.9 40.8 43.1 41.4 43.2 C 41.3 48.5 40.4 53.1 38.8 56.5 L 38.8 56.5 L 38.8 56.5 Z M 49.4 43.3 C 42.2 41 35.9 39.7 29.6 39.4 C 24.4 39.2 19.2 39.6 13.7 40.9 C 13.1 41.1 12.4 41.2 11.8 41.4 C 11.8 41.4 11.8 41.4 11.8 41.4 C 9.7 41.9 7.5 42.6 5.3 43.3 L 3.2 41.9 C 6 40.7 9.2 39.7 12.4 39 C 12.4 39 12.4 39 12.5 39.1 C 12.6 39 12.7 39 12.8 39 C 12.8 39 12.8 39 12.9 38.9 C 13 38.9 13.1 38.9 13.1 38.8 C 13.3 38.7 13.5 38.6 13.6 38.5 L 32 20.2 C 32.1 20.1 32.2 20 32.2 19.9 L 41 11.1 L 42.4 12.5 L 18.9 36 C 18.6 36.3 18.5 36.7 18.7 37.1 C 18.9 37.5 19.3 37.7 19.7 37.7 C 19.7 37.7 19.7 37.7 19.7 37.7 C 19.7 37.7 19.7 37.7 19.8 37.7 C 24.2 37.3 28.7 37.3 33.2 37.7 C 35.8 37.9 38.4 38.3 41 38.9 C 41.4 39 41.8 39.1 42.2 39.2 L 42.2 39.2 C 45.3 39.9 48.4 40.8 51.3 41.9 L 49.4 43.3 L 49.4 43.3 Z " fill="rgb(255,255,0)"/></g></svg> \ No newline at end of file
diff --git a/app/images/Utility_Logo_Grey-01.svg b/app/images/Utility_Logo_Grey-01.svg
new file mode 100644
index 0000000..16ac88c
--- /dev/null
+++ b/app/images/Utility_Logo_Grey-01.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+ <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+ <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+ <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+ <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+ <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+ <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+ <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+]>
+<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 215 215"
+ style="enable-background:new 0 0 215 215;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:#525252;}
+</style>
+<switch>
+ <g i:extraneous="self">
+ <g>
+ <path class="st0" d="M113.8,150.3h4.2v15.3h9.5v3.8h-13.7V150.3z"/>
+ <path class="st0" d="M130.9,150.3h4.2v19.1h-4.2V150.3z"/>
+ <path class="st0" d="M139.9,150.3h3.9l9,11.8v-11.8h4.2v19.1h-3.6l-9.3-12.2v12.2h-4.2V150.3z"/>
+ <path class="st0" d="M169.4,169.7c-2.6,0-4.6-0.7-6.1-2.1c-1.5-1.4-2.2-3.5-2.2-6.4v-10.9h4.2v10.8c0,1.6,0.4,2.7,1.1,3.5
+ c0.7,0.8,1.7,1.2,3,1.2c1.3,0,2.3-0.4,3-1.1c0.7-0.8,1.1-1.9,1.1-3.4v-11h4.2v10.8c0,1.5-0.2,2.7-0.6,3.8c-0.4,1.1-1,2-1.7,2.7
+ c-0.7,0.7-1.6,1.3-2.7,1.6C171.9,169.5,170.7,169.7,169.4,169.7z"/>
+ <path class="st0" d="M187.3,159.7l-6.4-9.4h4.9l4,6.2l4-6.2h4.8l-6.4,9.3l6.7,9.8H194l-4.3-6.6l-4.3,6.6h-4.8L187.3,159.7z"/>
+ <path class="st0" d="M24.6,126.9h2l8.4,18.6h-2.2l-2.2-4.9H20.5l-2.2,4.9h-2.1L24.6,126.9z M29.7,138.7l-4.2-9.4l-4.2,9.4H29.7z"
+ />
+ <path class="st0" d="M37.7,137.7V127h2.1v10.6c0,4,2.1,6.2,5.6,6.2c3.4,0,5.6-2.1,5.6-6.1V127H53v10.6c0,5.4-3.1,8.2-7.7,8.2
+ C40.8,145.7,37.7,142.9,37.7,137.7z"/>
+ <path class="st0" d="M62.9,128.9h-6.2V127h14.5v1.9H65v16.5h-2.1V128.9z"/>
+ <path class="st0" d="M73,136.3L73,136.3c0-5.1,3.8-9.6,9.4-9.6c5.6,0,9.4,4.4,9.4,9.5c0,0,0,0,0,0.1c0,5.1-3.8,9.5-9.4,9.5
+ C76.8,145.8,73,141.4,73,136.3z M89.7,136.3L89.7,136.3c0-4.2-3.1-7.7-7.3-7.7c-4.2,0-7.2,3.4-7.2,7.6v0.1c0,4.2,3.1,7.6,7.3,7.6
+ C86.6,143.8,89.7,140.5,89.7,136.3z"/>
+ <path class="st0" d="M96.2,127h2.1l6.7,10.1l6.7-10.1h2.1v18.5h-2.1v-15l-6.7,9.9H105l-6.7-9.9v14.9h-2V127z"/>
+ <path class="st0" d="M145.2,128.9H139V127h14.5v1.9h-6.2v16.5h-2.1V128.9z"/>
+ <path class="st0" d="M157.6,127h2.1v18.5h-2.1V127z"/>
+ <path class="st0" d="M163.5,127h2.3l6.6,15.9L179,127h2.2l-7.9,18.6h-1.8L163.5,127z"/>
+ <path class="st0" d="M184.8,127h13.3v1.9h-11.3v6.3H197v1.9h-10.1v6.5h11.4v1.9h-13.5V127z"/>
+ <rect x="105.6" y="55.1" class="st0" width="3.8" height="16.8"/>
+
+ <rect x="69.3" y="69.6" transform="matrix(0.707 -0.7072 0.7072 0.707 -34.2747 73.1702)" class="st0" width="3.8" height="16.8"/>
+ <rect x="155.1" y="104.5" class="st0" width="16.8" height="3.8"/>
+ <rect x="47.4" y="104.5" class="st0" width="16.8" height="3.8"/>
+ <path class="st0" d="M43.7,113.9c2.1-34.7,31-62.4,66.2-62.4c35.2,0,64.2,27.6,66.2,62.4h6.4c-2.1-38.3-33.8-68.8-72.6-68.8
+ s-70.5,30.5-72.6,68.8H43.7z"/>
+ <circle class="st0" cx="107.5" cy="114.9" r="6.7"/>
+
+ <rect x="107.1" y="88.5" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -24.9453 120.6025)" class="st0" width="52" height="3.8"/>
+ <rect x="86.9" y="78" class="st0" width="9.2" height="9.2"/>
+ <rect x="97.6" y="78" class="st0" width="9.2" height="9.2"/>
+ <rect x="108.3" y="78" class="st0" width="9.2" height="9.2"/>
+ <rect x="118.9" y="78" class="st0" width="9.2" height="9.2"/>
+ <g>
+ <g>
+ <path class="st0" d="M35.1,153.7l-1.5,1.4c-1.1-1-2.2-1.8-3.5-2.4c-1.3-0.5-2.5-0.8-3.7-0.8c-1.5,0-2.9,0.4-4.2,1.1
+ c-1.3,0.7-2.4,1.7-3.1,3c-0.7,1.2-1.1,2.6-1.1,4c0,1.4,0.4,2.8,1.1,4.1c0.8,1.3,1.8,2.3,3.2,3c1.3,0.7,2.8,1.1,4.4,1.1
+ c1.9,0,3.6-0.5,4.9-1.6c1.3-1.1,2.1-2.5,2.4-4.3h-6v-1.8h8.2c0,2.9-0.9,5.2-2.6,7c-1.7,1.7-4,2.6-6.9,2.6
+ c-3.5,0-6.3-1.2-8.3-3.6c-1.6-1.8-2.4-4-2.4-6.4c0-1.8,0.5-3.5,1.4-5c0.9-1.5,2.1-2.8,3.7-3.6c1.6-0.9,3.3-1.3,5.3-1.3
+ c1.6,0,3.1,0.3,4.5,0.9C32.4,151.5,33.8,152.4,35.1,153.7z"/>
+ <path class="st0" d="M39.9,150.5h3.8c2.1,0,3.5,0.1,4.3,0.3c1.1,0.3,2,0.8,2.7,1.7c0.7,0.8,1.1,1.9,1.1,3.1
+ c0,1-0.2,1.9-0.7,2.7c-0.5,0.8-1.2,1.4-2.1,1.8c-0.9,0.4-2.1,0.6-3.7,0.6l6.8,8.8h-2.3l-6.8-8.8h-1.1v8.8h-1.9V150.5z
+ M41.8,152.3v6.4l3.3,0c1.3,0,2.2-0.1,2.8-0.4c0.6-0.2,1.1-0.6,1.4-1.2c0.3-0.5,0.5-1.1,0.5-1.8c0-0.6-0.2-1.2-0.5-1.7
+ s-0.8-0.9-1.4-1.1c-0.6-0.2-1.5-0.3-2.8-0.3H41.8z"/>
+ <path class="st0" d="M63.6,150.5l8.8,18.9h-2l-3-6.2h-8.2l-2.9,6.2h-2.1l8.9-18.9H63.6z M63.3,154.5l-3.2,6.9h6.5L63.3,154.5z"
+ />
+ <path class="st0" d="M75.3,169.4v-18.9h3.9c2.8,0,4.9,0.2,6.2,0.7c1.8,0.6,3.3,1.8,4.3,3.3c1,1.6,1.6,3.5,1.6,5.7
+ c0,1.9-0.4,3.6-1.2,5c-0.8,1.4-1.9,2.5-3.2,3.2c-1.3,0.7-3.1,1-5.5,1H75.3z M77.1,167.6h2.2c2.6,0,4.4-0.2,5.4-0.5
+ c1.4-0.5,2.5-1.3,3.4-2.5c0.8-1.2,1.2-2.7,1.2-4.4c0-1.8-0.4-3.4-1.3-4.7c-0.9-1.3-2.1-2.2-3.7-2.7c-1.2-0.4-3.1-0.5-5.9-0.5
+ h-1.3V167.6z"/>
+ <path class="st0" d="M95,150.5h10.9v1.9h-9v5.9h8.9v1.9h-8.9v7.4h8.9v1.9H95V150.5z"/>
+ </g>
+ </g>
+ <g>
+ <polygon class="st0" points="121.4,141.8 121.4,134.4 117.7,134.4 117.7,145.4 128.7,145.4 128.7,141.8 "/>
+ <polygon class="st0" points="136.1,127 117.7,127 117.7,132.6 121.4,132.6 121.4,130.7 132.4,130.7 132.4,141.8 130.6,141.8
+ 130.6,145.4 136.1,145.4 "/>
+ </g>
+ </g>
+ </g>
+</switch>
+</svg>
diff --git a/app/images/agl_title_793x211.png b/app/images/agl_title_793x211.png
new file mode 100644
index 0000000..5a183d2
--- /dev/null
+++ b/app/images/agl_title_793x211.png
Binary files differ
diff --git a/app/images/fuel-icon.png b/app/images/fuel-icon.png
new file mode 100644
index 0000000..70da758
--- /dev/null
+++ b/app/images/fuel-icon.png
Binary files differ
diff --git a/app/images/images.qrc b/app/images/images.qrc
new file mode 100644
index 0000000..9a8e2de
--- /dev/null
+++ b/app/images/images.qrc
@@ -0,0 +1,32 @@
+<RCC>
+ <qresource prefix="/images">
+ <file>agl_title_793x211.png</file>
+ <file>Utility_Logo_Grey-01.svg</file>
+ <file>fuel-icon.png</file>
+ <file>temperature-icon.png</file>
+ <file>AGL_Icons_ABS.svg</file>
+ <file>AGL_Icons_ABS_red.svg</file>
+ <file>AGL_Icons_ABS_yellow.svg</file>
+ <file>AGL_Icons_Battery.svg</file>
+ <file>AGL_Icons_Battery_red.svg</file>
+ <file>AGL_Icons_Battery_yellow.svg</file>
+ <file>AGL_Icons_Engine.svg</file>
+ <file>AGL_Icons_Engine_red.svg</file>
+ <file>AGL_Icons_Engine_yellow.svg</file>
+ <file>AGL_Icons_Lights.svg</file>
+ <file>AGL_Icons_Lights_red.svg</file>
+ <file>AGL_Icons_Lights_yellow.svg</file>
+ <file>AGL_Icons_Oil.svg</file>
+ <file>AGL_Icons_Oil_red.svg</file>
+ <file>AGL_Icons_Oil_yellow.svg</file>
+ <file>AGL_Icons_OpenDoor.svg</file>
+ <file>AGL_Icons_OpenDoor_red.svg</file>
+ <file>AGL_Icons_OpenDoor_yellow.svg</file>
+ <file>AGL_Icons_ParkingBrake.svg</file>
+ <file>AGL_Icons_ParkingBrake_red.svg</file>
+ <file>AGL_Icons_ParkingBrake_yellow.svg</file>
+ <file>AGL_Icons_Seatbelt.svg</file>
+ <file>AGL_Icons_Seatbelt_red.svg</file>
+ <file>AGL_Icons_Seatbelt_yellow.svg</file>
+ </qresource>
+</RCC>
diff --git a/app/images/temperature-icon.png b/app/images/temperature-icon.png
new file mode 100644
index 0000000..5a4334e
--- /dev/null
+++ b/app/images/temperature-icon.png
Binary files differ
diff --git a/app/main.cpp b/app/main.cpp
new file mode 100644
index 0000000..a7c832c
--- /dev/null
+++ b/app/main.cpp
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2018 Konsulko Group
+ * Copyright (C) 2019 FUJITSU LIMITED
+ *
+ * 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 <QtCore/QDebug>
+#include <QtGui/QGuiApplication>
+#include <QtCore/QUrl>
+
+#include <QtQml/QQmlApplicationEngine>
+
+#define DEFAULT_QT_QPA_PLATFORM "eglfs"
+#define DEFAULT_EGLFS_CONFIG_FILE "/etc/kms.conf"
+
+int main(int argc, char *argv[])
+{
+ int i;
+ for (i = 1; i < argc; i++) {
+ if (!argv[i] || *argv[i] != '-')
+ continue;
+ const char *arg = argv[i];
+ if (arg[1] == '-') // startsWith("--")
+ ++arg;
+ if (strcmp(arg, "-platform") == 0)
+ break;
+ }
+
+ /* Using "eglfs" as default if QT_QPA_PLATFORM is not set. */
+ QByteArray platformNameEnv = qgetenv("QT_QPA_PLATFORM");
+ if (platformNameEnv.isEmpty() && i == argc) {
+ qputenv("QT_QPA_PLATFORM", DEFAULT_QT_QPA_PLATFORM);
+ }
+
+ /* Using "/etc/kms.conf" as default if QT_QPA_EGLFS_KMS_CONFIG/QT_QPA_KMS_CONFIG are not set. */
+ if (qgetenv("QT_QPA_KMS_CONFIG").isEmpty() &&
+ qgetenv("QT_QPA_EGLFS_KMS_CONFIG").isEmpty()) {
+ qputenv("QT_QPA_EGLFS_KMS_CONFIG", DEFAULT_EGLFS_CONFIG_FILE);
+ }
+
+ /* FIXTHIS: socket cannot be created successfully in '/run/user/0'. */
+ qputenv("XDG_RUNTIME_DIR", "/run/platform/display");
+
+ QGuiApplication app(argc, argv);
+ QQmlApplicationEngine appEngine(QUrl("qrc:///cluster-gauges.qml"));
+
+ return app.exec();
+}