69 lines
1.8 KiB
QML
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)
|
|
}
|
|
}
|
|
}
|
|
}
|