C
Qt Cluster: Rendering and Recovery from Main UI Failure
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
// This file is part of the Qt Safe Renderer module
import QtQuick
import ".."
import "."
import ClusterDemo
import Qt.SafeRenderer
Item {
id: root
width: 1920
height: 1080
property alias camera: camera
property alias speedoMeter: speedoMeter
property alias flipable: flipable
property bool startupAnimationStopped: false
property int gaugeDemoTime: 1000
property alias centerStack: centerStack // duration (/2) of the gauge needle animation at startup
property alias turnIndicatorLeft: turnleft
property alias turnIndicatorRight: turnright
property alias iconCoolant: iconCoolant
property alias iconBattery: iconBattery
property alias iconFuel: iconFuel
property alias iconParkingBrake: iconParkingBrake
property alias iconLights: iconLights
property alias iconLowbeam: iconLowBeam
property alias iconTyre: iconTyre
property alias iconLamp: iconLamp
property alias iconSeatbelt: iconSeatbelt
property alias speedText: speedText
// TODO: Needed, as background clearing gets messed up after hybrid 3D
Rectangle {
anchors.fill: parent
color: "black"
z: -1
}
Image {
id: frame
y: 180
width: 1920
height: 720
fillMode: Image.Stretch
source: "image://etc/DashboardFrameSport-mask.png"
z: 2
}
//where?
CameraLoader {
id: camera
width: parent.width / 2.5
height: parent.height - 270
anchors.centerIn: parent
}
// end comment
Item {
id: container
width: root.width
height: 720
anchors.verticalCenterOffset: 0
anchors.horizontalCenterOffset: 0
anchors.centerIn: parent
SpeedoMeterLoader {
id: speedoMeter
anchors.left: parent.left
anchors.leftMargin: 72
anchors.top: parent.top
anchors.topMargin: 101
height: 570
value: 50
width: 570
z: 4
}
SafePicture {
id: iconTyre
objectName: "iconTyre"
width: 72
height: 72
anchors.right: iconParkingBrake.left
anchors.bottom: iconParkingBrake.bottom
anchors.bottomMargin: 18
color: "#face20"
source: "qrc:/iso-icons/iso_grs_7000_4_1434A.dat"
z: 4
}
SafeText {
id: speedText
objectName: "speedText"
anchors.horizontalCenter: speedoMeter.horizontalCenter
anchors.top: speedoMeter.top
anchors.topMargin: 158
font.pixelSize: 108
color: "white"
width: 390
height: 130
text: "10"
verticalAlignment: Text.AlignTop
anchors.horizontalCenterOffset: 0
font.family: "Lato"
horizontalAlignment: Text.AlignHCenter
runtimeEditable: true
}
SafeText {
id: kmText
objectName: "kmText"
text: "km/h"
verticalAlignment: Text.AlignTop
font.italic: true
anchors.horizontalCenterOffset: 0
anchors.topMargin: 0
font.family: "Lato"
color: "white"
width: 98
height: 48
font.pixelSize: 38
horizontalAlignment: Text.AlignHCenter
anchors.top: speedText.bottom
anchors.horizontalCenter: speedoMeter.horizontalCenter
}
SafePicture {
id: iconParkingBrake
objectName: "iconParkingBrake"
width: 72
height: 72
anchors.centerIn: speedoMeter
anchors.verticalCenterOffset: 72
anchors.horizontalCenterOffset: 0
color: "#e41e25"
source: "qrc:/iso-icons/iso_grs_7000_4_0238.dat"
z: 4
}
SafePicture {
id: iconFuel
objectName: "iconFuel"
width: 72
height: 72
anchors.left: iconParkingBrake.right
anchors.bottom: iconParkingBrake.bottom
anchors.bottomMargin: 27
color: "#e41e25"
source: "qrc:/iso-icons/iso_grs_7000_4_0245.dat"
z: 4
}
CenterStack {
id: centerStack
viewIndex: 3
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.topMargin: 125
}
RPMFlipable {
id: flipable
anchors.right: parent.right
anchors.rightMargin: 75
anchors.top: parent.top
anchors.topMargin: 104
width: 570
height: 570
rpmValue: 2212
flipped: false
z: 4
}
SafePicture {
id: iconBattery
objectName: "iconBattery"
width: 72
height: 72
anchors.centerIn: flipable
anchors.verticalCenterOffset: 36
anchors.horizontalCenterOffset: -36
source: "qrc:/iso-icons/iso_grs_7000_4_0247.dat"
color: "#e41e25"
z: 4
}
SafePicture {
id: iconCoolant
objectName: "iconCoolant"
width: 72
height: 72
anchors.centerIn: flipable
anchors.verticalCenterOffset: 36
anchors.horizontalCenterOffset: 36
source: "qrc:/iso-icons/iso_grs_7000_4_0246.dat"
color: "blue"
z: 4
}
}
Item {
width: speedoMeter.width
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: pilotLights.top
TurnLeft {
id: turnleft
}
TurnRight {
id: turnright
}
}
Item {
id: bottomRow
height: 102
width: 480
anchors.bottom: parent.bottom
anchors.bottomMargin: 195
anchors.horizontalCenter: parent.horizontalCenter
z: 3
property int pixelSize: 26
Text {
text: ValueSource.date
color: "white"
font.pixelSize: bottomRow.pixelSize
anchors.right: temperature.left
anchors.rightMargin: 23
}
Text {
id: temperature
text: "+18°C"
color: "white"
font.pixelSize: bottomRow.pixelSize
anchors.right: time.left
anchors.rightMargin: 23
}
Text {
id: time
text: ValueSource.time
color: "white"
font.pixelSize: bottomRow.pixelSize
anchors.right: parent.right
}
}
Row {
id: pilotLights
anchors.horizontalCenter: parent.horizontalCenter
y: 215
spacing: 3.0
z: 3
width: 300
SafePicture {
id: iconLights
objectName: "iconLights"
width: 72
height: 72
color: "#5caa15"
source: "qrc:/iso-icons/iso_grs_7000_4_0456.dat"
}
SafePicture {
id: iconSeatbelt
objectName: "iconSeatbelt"
width: 72
height: 72
color: "#e41e25"
source: "qrc:/iso-icons/iso_grs_7000_4_0249.dat"
}
SafePicture {
id: iconLowBeam
objectName: "iconLowBeam"
width: 72
height: 72
color: "#e41e25"
source: "qrc:/iso-icons/iso_grs_7000_4_0083.dat"
}
SafePicture {
id: iconLamp
objectName: "iconLamp"
width: 72
height: 72
color: "#face20"
source: "qrc:/iso-icons/iso_grs_7000_4_1555.dat"
}
}
SafeText {
id: safeText
objectName: "safeText"
x: 800
y: 415
width: 400
height: 102
color: "#face20"
text: "Error occurred. Recovering.."
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
font.pixelSize: 30
font.family: "Lato"
visible: false
}
// end comment
}