Files
evcharger-app/StartStopButton.qml
T

69 lines
1.8 KiB
QML

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQml
import EVChargerApp
Button {
id: button
required property DeviceConnection deviceConnection
ApiKeyValueHelper {
id: alwApiKeyHelper
deviceConnection: button.deviceConnection
apiKey: "alw"
}
ApiKeyValueHelper {
id: modelStatusApiKeyHelper
deviceConnection: button.deviceConnection
apiKey: "modelStatus"
}
SetValueHelper {
id: setValueHelper
deviceConnection: button.deviceConnection
apiKey: ""
}
BusyIndicator {
visible: setValueHelper.pending
}
RequestStatusText {
request: setValueHelper
}
Material.accent: Material.White
text: alwApiKeyHelper.value ? qsTr("Stop") : qsTr("Start")
readonly property int notChargingBecauseAccessControl: Constants.ModelStatus.NotChargingBecauseAccessControl
readonly property int forceOff: Constants.ForceState.Off
readonly property int forceOn: Constants.ForceState.On
onClicked: {
// random delays not considered at all in this logic (yet)
if (alwApiKeyHelper.value) {
// currently allowed to charge -> STOP
setValueHelper.apiKey = "frc"
setValueHelper.setValue(forceOff)
} else {
// currently not allowed to -> START
if (modelStatusApiKeyHelper.value === notChargingBecauseAccessControl) {
// not charging because of access control -> start transaction
setValueHelper.apiKey = "trx"
setValueHelper.setValue(0)
} else {
// set force state to on
setValueHelper.apiKey = "frc"
setValueHelper.setValue(forceOn)
}
}
}
}