First implementation

This commit is contained in:
Yury Shuvakin
2025-07-02 18:00:35 +09:00
commit 6cf2010c08
107 changed files with 10803 additions and 0 deletions

192
Qml/Battery.qml Normal file
View File

@@ -0,0 +1,192 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import Core 1.0
import Controls 1.0 as CustomControls
import Palette 1.0
Rectangle {
radius: 14
color: Palette.controlBackgroundColor
property BatteryController battery: null
property int batteryIndex: 0
onBatteryIndexChanged: {
if (battery) {
battery.batteryIndex = batteryIndex
}
}
ColumnLayout {
anchors.fill: parent
anchors.margins: 20
spacing: 10
RowLayout {
CustomControls.Label {
text: "АКБ %1".arg(batteryIndex + 1)
font.pixelSize: 20
font.weight: Font.DemiBold
Layout.fillWidth: true
}
CustomControls.Button {
text: chargeTypeToString(battery ? battery.chargeType : 0)
backgroundColor: workingModeToColor(battery ? battery.workingMode : 0)
Layout.preferredWidth: 180
onClicked: battery ? battery.actionButtonClicked() : null
}
}
GridLayout {
columns: 2
rowSpacing: 8
columnSpacing: 16
Layout.fillWidth: true
CustomControls.Label {
text: "КП"
horizontalAlignment: Text.AlignHCenter
Layout.fillWidth: true
Layout.preferredWidth: 1
}
CustomControls.Label {
text: "УКБП"
horizontalAlignment: Text.AlignHCenter
Layout.fillWidth: true
Layout.preferredWidth: 1
}
CustomControls.TextField {
text: battery ? convertDoubleToString(battery.controlCurrent) : "—"
indicatorText: "А"
Layout.fillWidth: true
Layout.preferredWidth: 1
}
CustomControls.TextField {
text: battery ? convertDoubleToString(battery.measuredCurrent) : "—"
indicatorText: "А"
Layout.fillWidth: true
Layout.preferredWidth: 1
}
CustomControls.TextField {
text: battery ? convertDoubleToString(battery.controlVoltage) : "—"
indicatorText: "В"
implicitWidth: 1
Layout.fillWidth: true
}
CustomControls.TextField {
text: battery ? convertDoubleToString(battery.measuredVoltage) : "—"
indicatorText: "В"
Layout.fillWidth: true
Layout.preferredWidth: 1
}
CustomControls.TextField {
text: battery ? convertDoubleToString(battery.controlTemperature) : "—"
indicatorText: "°C"
Layout.fillWidth: true
Layout.preferredWidth: 1
}
CustomControls.TextField {
text: battery ? convertDoubleToString(battery.measuredTemperature) : "—"
indicatorText: "°C"
implicitWidth: 1
Layout.fillWidth: true
}
CustomControls.TextField {
text: battery ? convertDoubleToString(battery.controlCapacity) : "—"
indicatorText: "Ач"
Layout.fillWidth: true
Layout.preferredWidth: 1
}
CustomControls.TextField {
text: battery ? convertDoubleToString(battery.measuredCapacity) : "—"
indicatorText: "Ач"
Layout.fillWidth: true
Layout.preferredWidth: 1
}
}
ListView {
id: statusView
clip: true
spacing: 5
boundsBehavior: Flickable.StopAtBounds
flickableDirection: Flickable.HorizontalAndVerticalFlick
model: battery ? battery.statues : null
delegate: CustomControls.ColoredLabel {
text: modelData.description
backgroundColor: Palette.neutralColor
font.pixelSize: 11
onWidthChanged: {
if (width > statusView.contentWidth) {
statusView.contentWidth = width
}
}
}
ScrollBar.vertical: ScrollBar {}
ScrollBar.horizontal: ScrollBar {}
Layout.fillWidth: true
Layout.fillHeight: true
}
}
function convertIntToString(value) {
if (value === undefined || value === null) {
return "—"
}
return parseInt(value).toString()
}
function convertDoubleToString(value) {
if (value === undefined || value === null) {
return "—"
}
return parseFloat(value).toFixed(1)
}
function chargeTypeToString(type) {
switch (type) {
case 1:
return "Контрольный разряд"
case 2:
return "Повторный заряд"
case 3:
return "Завершение заряда"
case 0:
default:
return "Первичный подзаряд"
}
}
function workingModeToColor(mode) {
switch (mode) {
case 1:
return Palette.greenButtonColor
case 2:
return Palette.redButtonColor
case 3:
return Palette.yellowButtonColor
case 0:
default:
return Palette.blueButtonColor
}
}
}