Added UI skeleton for BMS settings screen
This commit is contained in:
@@ -25,7 +25,7 @@ Item {
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: serialField
|
||||
id: serialNumberField
|
||||
enabled: false
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.spacing) / 2
|
||||
@@ -314,7 +314,7 @@ Item {
|
||||
Connections {
|
||||
target: BmsInterface.bmsConfig()
|
||||
onUpdated: {
|
||||
serialField.text = BmsInterface.bmsConfig().getParamDouble("notUsedCurrentThreshold") // TODO
|
||||
serialNumberField.text = BmsInterface.bmsConfig().getParamDouble("notUsedCurrentThreshold") // TODO
|
||||
|
||||
numberOfModulesLabel.text = BmsInterface.bmsConfig().getParamInt("cellMonitorICCount")
|
||||
numberOfCellsLabel.text = BmsInterface.bmsConfig().getParamInt("noOfCellsSeries")
|
||||
|
||||
612
qml/Screens/BmsSettingsScreen.qml
Normal file
612
qml/Screens/BmsSettingsScreen.qml
Normal file
@@ -0,0 +1,612 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
|
||||
import Controls 1.0 as Controls
|
||||
import Cubo 1.0
|
||||
|
||||
RowLayout {
|
||||
property real contentPadding: 35
|
||||
property real contentRowSpacing: 20
|
||||
property real contentColumnSpacing: 35
|
||||
|
||||
spacing: contentColumnSpacing
|
||||
|
||||
Flickable {
|
||||
id: settingsFlickable
|
||||
clip: true
|
||||
contentHeight: configLayout.height
|
||||
|
||||
ColumnLayout {
|
||||
id: configLayout
|
||||
width: parent.width
|
||||
spacing: 15
|
||||
|
||||
Controls.Frame {
|
||||
id: serialNumberSettingsFrame
|
||||
padding: contentPadding
|
||||
implicitWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
RowLayout {
|
||||
spacing: contentColumnSpacing
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.TitleLabel {
|
||||
text: qsTr("Serial number")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.spacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: serialNumberField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.spacing) / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Frame {
|
||||
id: configurationSettingsFrame
|
||||
padding: contentPadding
|
||||
implicitWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
rowSpacing: contentRowSpacing
|
||||
columnSpacing: contentColumnSpacing
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.TitleLabel {
|
||||
text: qsTr("Configuration")
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Number of boards")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Number of cells")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: numberOfBoardsField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: numberOfCellsField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Frame {
|
||||
id: socSettingsFrame
|
||||
padding: contentPadding
|
||||
implicitWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
rowSpacing: contentRowSpacing
|
||||
columnSpacing: contentColumnSpacing
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.TitleLabel {
|
||||
text: qsTr("SOC")
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Number of cells connected in parallel")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Battery capacity")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: numberOfParallelCellsField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: batteryCapacityField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Frame {
|
||||
id: limitSettingsFrame
|
||||
padding: contentPadding
|
||||
implicitWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
rowSpacing: contentRowSpacing
|
||||
columnSpacing: contentColumnSpacing
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.TitleLabel {
|
||||
text: qsTr("Limits")
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Maximum charge current, A")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Maximum load current, A")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: maximumChargeCurrentField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: maximumLoadCurrentField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Maximum temperature, °C")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: maximumTemperatureField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Frame {
|
||||
id: cellSettingsFrame
|
||||
padding: contentPadding
|
||||
implicitWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
rowSpacing: contentRowSpacing
|
||||
columnSpacing: contentColumnSpacing
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.TitleLabel {
|
||||
text: qsTr("Cell configuration")
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Lower shutdown threshold, V")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Upper shutdown threshold, V")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: lowerShutdownThresholdField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: upperShutdownThresholdField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
// TODO
|
||||
// Controls.SubtitleLabel {
|
||||
// text: qsTr("Lower shutdown threshold, V")
|
||||
// Layout.fillWidth: true
|
||||
// Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
// }
|
||||
|
||||
// Controls.SubtitleLabel {
|
||||
// text: qsTr("Upper shutdown threshold, V")
|
||||
// Layout.fillWidth: true
|
||||
// Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
// }
|
||||
|
||||
// Controls.TextField {
|
||||
// id: lowerShutdownThresholdField
|
||||
// Layout.fillWidth: true
|
||||
// Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
// }
|
||||
|
||||
// Controls.TextField {
|
||||
// id: upperShutdownThresholdField
|
||||
// Layout.fillWidth: true
|
||||
// Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Frame {
|
||||
id: balancingSettingsFrame
|
||||
padding: contentPadding
|
||||
implicitWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
rowSpacing: contentRowSpacing
|
||||
columnSpacing: contentColumnSpacing
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.TitleLabel {
|
||||
text: qsTr("Balancing configuration")
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Balancing start voltage, V")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Cell voltage delta to start balancing, V")
|
||||
maximumLineCount: 2
|
||||
wrapMode: Text.WordWrap
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: balancingStartVoltageField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: balancingStartDeltaVoltageField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Frame {
|
||||
id: outputSettingsFrame
|
||||
padding: contentPadding
|
||||
implicitWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
property real outputNumberSize: 60
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
rowSpacing: contentRowSpacing
|
||||
columnSpacing: contentColumnSpacing
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.TitleLabel {
|
||||
text: qsTr("Output settings")
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.LabelWithBackground {
|
||||
text: qsTr("№ 1")
|
||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Controls.CheckBox {
|
||||
text: qsTr("Use for management")
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.LineSeparator {
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.LabelWithBackground {
|
||||
text: qsTr("№ 2")
|
||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Controls.CheckBox {
|
||||
text: qsTr("Normally closed")
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Change in value during SOC")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: changeValueSocField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.LineSeparator {
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.LabelWithBackground {
|
||||
text: qsTr("№ 3")
|
||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Controls.CheckBox {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Closes at t<, °C")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Opens at t>, °C")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: closesBelowTemperatureThirdField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: opensGreaterTemperatureThirdField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.LineSeparator {
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 20
|
||||
|
||||
Controls.LabelWithBackground {
|
||||
text: qsTr("№ 4")
|
||||
Layout.preferredWidth: outputSettingsFrame.outputNumberSize
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Controls.CheckBox {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: outputSettingsFrame.outputNumberSize
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Closes at t<, °C")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Opens at t>, °C")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: closesBelowTemperatureFourthField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: opensGreaterTemperatureFourthField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
}
|
||||
|
||||
Controls.LineSeparator {
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Controls.Frame {
|
||||
id: zeroSensorSettingsFrame
|
||||
padding: contentPadding
|
||||
implicitWidth: parent.width
|
||||
Layout.fillWidth: true
|
||||
|
||||
GridLayout {
|
||||
columns: 2
|
||||
rowSpacing: contentRowSpacing
|
||||
columnSpacing: contentColumnSpacing
|
||||
anchors.fill: parent
|
||||
|
||||
Controls.SubtitleLabel {
|
||||
text: qsTr("Current sensor value «0»")
|
||||
Layout.fillWidth: true
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.TextField {
|
||||
id: zeroSensorValueField
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
|
||||
Controls.Button {
|
||||
id: zeroSensorValueCalibrationButton
|
||||
text: qsTr("Calibrate «0»")
|
||||
Layout.fillWidth: true
|
||||
Layout.maximumWidth: (parent.width - parent.columnSpacing) / 2
|
||||
Layout.columnSpan: 2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ScrollBar.vertical: Controls.ScrollBar {
|
||||
// policy: ScrollBar.AlwaysOn
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
spacing: contentRowSpacing
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("Serial number")
|
||||
onClicked: settingsFlickable.contentY = serialNumberSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("Configuration")
|
||||
onClicked: settingsFlickable.contentY = configurationSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("SOC")
|
||||
onClicked: settingsFlickable.contentY = socSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("Limits")
|
||||
onClicked: settingsFlickable.contentY = limitSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("Cell configuration")
|
||||
onClicked: settingsFlickable.contentY = cellSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("Balancing configuration")
|
||||
onClicked: settingsFlickable.contentY = balancingSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("Output settings")
|
||||
onClicked: settingsFlickable.contentY = outputSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
Controls.LinkLabel {
|
||||
text: qsTr("Current sensor value «0»")
|
||||
onClicked: settingsFlickable.contentY = zeroSensorSettingsFrame.mapToItem(settingsFlickable.contentItem, 0, 0).y
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
spacing: 15
|
||||
|
||||
Controls.OutlineButton {
|
||||
text: qsTr("Read settings from file")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Controls.OutlineButton {
|
||||
text: qsTr("Read current settings from BMS")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Controls.OutlineButton {
|
||||
text: qsTr("Write to non-volatile memory of BMS")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Controls.Button {
|
||||
text: qsTr("Write current values to BMS")
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Layout.maximumWidth: 320
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
@@ -63,7 +63,7 @@ Item {
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
width: ListView.view.width
|
||||
height: 36
|
||||
height: 38
|
||||
|
||||
Item {
|
||||
Layout.preferredWidth: parent.width / 6 - 20
|
||||
@@ -112,7 +112,7 @@ Item {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
model: []
|
||||
spacing: 2
|
||||
spacing: 0
|
||||
|
||||
header: cellListHeader
|
||||
delegate: cellListDelegate
|
||||
@@ -131,7 +131,7 @@ Item {
|
||||
anchors.fill: parent
|
||||
clip: true
|
||||
model: []
|
||||
spacing: 2
|
||||
spacing: 0
|
||||
|
||||
header: cellListHeader
|
||||
delegate: cellListDelegate
|
||||
|
||||
@@ -34,7 +34,7 @@ Dialog {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
|
||||
Controls.AlternativeButton {
|
||||
Controls.Button {
|
||||
text: qsTr("Connect")
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
|
||||
|
||||
@@ -2,3 +2,4 @@ module Screens
|
||||
ConnectionScreen 1.0 ConnectionScreen.qml
|
||||
AkbMonitorScreen 1.0 AkbMonitorScreen.qml
|
||||
CellMonitorScreen 1.0 CellMonitorScreen.qml
|
||||
BmsSettingsScreen 1.0 BmsSettingsScreen.qml
|
||||
|
||||
Reference in New Issue
Block a user