Split pane with sliders for each light off into separate QML file

This commit is contained in:
Michael Ehrenreich
2023-02-15 23:33:22 +01:00
parent 0be230668d
commit 97e09d4ec9
3 changed files with 73 additions and 58 deletions

View File

@ -27,6 +27,7 @@ qt_add_qml_module(applightcontrol
HomePage.qml
SettingsPage.qml
LightControlWindow.qml
LightSliderPane.qml
EditableListView.qml
DeviceTypesSettingsPage.qml
DevicesSettingsPage.qml

View File

@ -17,66 +17,10 @@ RowLayout {
Repeater {
model: devicesModel
delegate: Pane {
property int deviceAddress: model.address
property int myDeviceTypeId: model.deviceTypeId
delegate: LightSliderPane {
light: model
Material.elevation: 6
//width: 75
height: 250
ColumnLayout {
anchors.fill: parent
Label {
Layout.fillWidth: true
text: model.name
horizontalAlignment: Text.AlignHCenter
}
RowLayout {
Layout.fillWidth: true
Layout.fillHeight: true
Repeater {
model: DeviceTypeRegistersModel {
controller: __controller
deviceTypeId: myDeviceTypeId
}
delegate: ColumnLayout {
property int registerAddress: deviceAddress + index
Layout.fillHeight: true
Label {
Layout.fillWidth: true
text: model.registerTypeName
horizontalAlignment: Text.AlignHCenter
}
Slider {
id: slider
Layout.fillWidth: true
Layout.fillHeight: true
orientation: Qt.Vertical
from: 0
to: 255
onValueChanged: __controller.setChannel(registerAddress, value)
}
Label {
Layout.fillWidth: true
text: Math.round(slider.value)
horizontalAlignment: Text.AlignHCenter
}
}
}
}
}
}
}
}

70
LightSliderPane.qml Normal file
View File

@ -0,0 +1,70 @@
import QtQuick
import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Window
import QtQuick.VirtualKeyboard
import com.büro 1.0
Pane {
property variant light
Material.elevation: 6
ColumnLayout {
anchors.fill: parent
Label {
Layout.fillWidth: true
text: light.name
horizontalAlignment: Text.AlignHCenter
}
RowLayout {
Layout.fillWidth: true
Layout.fillHeight: true
Repeater {
model: DeviceTypeRegistersModel {
controller: __controller
deviceTypeId: light.deviceTypeId
}
delegate: ColumnLayout {
property int registerAddress: light.address + index
Layout.fillHeight: true
Label {
Layout.fillWidth: true
text: model.registerTypeName
horizontalAlignment: Text.AlignHCenter
}
Slider {
id: slider
Layout.fillWidth: true
Layout.fillHeight: true
orientation: Qt.Vertical
from: 0
to: 255
snapMode: Slider.SnapAlways
stepSize: 1
onValueChanged: __controller.setChannel(registerAddress, value)
}
Label {
Layout.fillWidth: true
text: Math.round(slider.value)
horizontalAlignment: Text.AlignHCenter
}
}
}
}
}
}