C
Indicators: Creating Safety-Critical UI
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
// This file is part of the Qt Safe Renderer module
import QtQuick
import Qt.SafeRenderer
Rectangle {
id: root
width: 640
height: 480
color: "black"
property alias text: safeText.text
LeftIndicators {
id: leftindicators
}
RightIndicators {
id: rightIndicators
}
SafeText {
id: safeText
objectName: "safetextitem"
x: 236
y: 163
width: 65
height: 34
color: "#8ae234"
fillColor: "#000000"
text: "0"
horizontalAlignment: Text.AlignRight
verticalAlignment: Text.AlignBottom
font.family: "Lato"
font.pixelSize: 32
runtimeEditable: true
}
SafeText {
id: safeUnitText
objectName: "safeunittextitem"
x: 300
y: 163
width: 75
height: 32
color: "#8ae234"
fillColor: "#000000"
text: "km/h"
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignBottom
font.family: "Lato"
font.pixelSize: 32
runtimeEditable: false
}
SafeImage {
id: park
objectName: "park"
x: 176
y: 318
width: 40
height: 50
source: "parking.png"
fillColor: "#000000"
}
SafeImage {
id: neutral
objectName: "neutral"
x: 400
y: 318
width: 40
height: 50
source: "neutral.png"
fillColor: "#000000"
}
SafeImage {
id: reverse
objectName: "reverse"
x: 286
y: 208
width: 40
height: 50
source: "reverse.png"
fillColor: "#000000"
}
SafeImage {
id: drive
objectName: "drive"
x: 286
y: 428
width: 40
height: 50
source: "drive.png"
fillColor: "#000000"
}
states: [
State {
name: "park"
PropertyChanges {
target: park
x: 276
y: 313
width: 60
height: 60
}
},
State {
name: "neutral"
PropertyChanges {
target: neutral
x: 276
y: 313
width: 60
height: 60
}
},
State {
name: "reverse"
PropertyChanges {
target: reverse
x: 276
y: 313
width: 60
height: 60
}
},
State {
name: "drive"
PropertyChanges {
target: drive
x: 276
y: 313
width: 60
height: 60
}
}
]
transitions: [
Transition {
from: "*"
to: "*"
NumberAnimation {
properties: "x,y,width,height"
duration: 500
easing.type: Easing.InOutQuad
}
}
]
}