Simplify materials preference page by wrapping scroll items in ListView

CURA-8979
This commit is contained in:
casper 2022-03-21 13:20:41 +01:00
parent c10865b179
commit 10339555f4

View file

@ -515,7 +515,7 @@ Item
}
}
ScrollView
ListView
{
id: settingsPage
visible: pageSelectorTabRow.currentItem.activeView === "settings"
@ -530,7 +530,9 @@ Item
rightMargin: UM.Theme.getSize("thin_margin").width
}
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
width: settingsPage.width
spacing: UM.Theme.getSize("narrow_margin").height
ScrollBar.vertical: UM.ScrollBar
{
id: settingScrollBar
@ -545,91 +547,83 @@ Item
property real columnWidth: Math.floor((width - settingScrollBar.width - UM.Theme.getSize("narrow_margin").width) / 2)
Column
model: UM.SettingDefinitionsModel
{
width: settingsPage.width
spacing: UM.Theme.getSize("narrow_margin").height
Repeater
containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
visibilityHandler: Cura.MaterialSettingsVisibilityHandler { }
expanded: ["*"]
}
delegate: UM.TooltipArea
{
width: childrenRect.width
height: childrenRect.height
UM.TooltipArea
{
model: UM.SettingDefinitionsModel
anchors.fill: parent
text: model.description
}
UM.Label
{
id: label
width: settingsPage.columnWidth
height: spinBox.height + UM.Theme.getSize("default_lining").height
text: model.label
elide: Text.ElideRight
verticalAlignment: Qt.AlignVCenter
}
Cura.SpinBox
{
id: spinBox
anchors.left: label.right
value:
{
containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
visibilityHandler: Cura.MaterialSettingsVisibilityHandler { }
expanded: ["*"]
// In case the setting is not in the material...
if (!isNaN(parseFloat(materialPropertyProvider.properties.value)))
{
return parseFloat(materialPropertyProvider.properties.value);
}
// ... we search in the variant, and if it is not there...
if (!isNaN(parseFloat(variantPropertyProvider.properties.value)))
{
return parseFloat(variantPropertyProvider.properties.value);
}
// ... then look in the definition container.
if (!isNaN(parseFloat(machinePropertyProvider.properties.value)))
{
return parseFloat(machinePropertyProvider.properties.value);
}
return 0;
}
width: settingsPage.columnWidth
suffix: " " + model.unit
to: 99999
decimals: model.unit == "mm" ? 2 : 0
delegate: UM.TooltipArea
{
width: childrenRect.width
height: childrenRect.height
onEditingFinished: materialPropertyProvider.setPropertyValue("value", value)
}
UM.TooltipArea
{
anchors.fill: parent
text: model.description
}
UM.Label
{
id: label
width: settingsPage.columnWidth
height: spinBox.height + UM.Theme.getSize("default_lining").height
text: model.label
elide: Text.ElideRight
verticalAlignment: Qt.AlignVCenter
}
Cura.SpinBox
{
id: spinBox
anchors.left: label.right
value:
{
// In case the setting is not in the material...
if (!isNaN(parseFloat(materialPropertyProvider.properties.value)))
{
return parseFloat(materialPropertyProvider.properties.value);
}
// ... we search in the variant, and if it is not there...
if (!isNaN(parseFloat(variantPropertyProvider.properties.value)))
{
return parseFloat(variantPropertyProvider.properties.value);
}
// ... then look in the definition container.
if (!isNaN(parseFloat(machinePropertyProvider.properties.value)))
{
return parseFloat(machinePropertyProvider.properties.value);
}
return 0;
}
width: settingsPage.columnWidth
suffix: " " + model.unit
to: 99999
decimals: model.unit == "mm" ? 2 : 0
onEditingFinished: materialPropertyProvider.setPropertyValue("value", value)
}
UM.ContainerPropertyProvider
{
id: materialPropertyProvider
containerId: base.containerId
watchedProperties: [ "value" ]
key: model.key
}
UM.ContainerPropertyProvider
{
id: variantPropertyProvider
containerId: Cura.MachineManager.activeStack.variant.id
watchedProperties: [ "value" ]
key: model.key
}
UM.ContainerPropertyProvider
{
id: machinePropertyProvider
containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
watchedProperties: ["value"]
key: model.key
}
}
UM.ContainerPropertyProvider
{
id: materialPropertyProvider
containerId: base.containerId
watchedProperties: [ "value" ]
key: model.key
}
UM.ContainerPropertyProvider
{
id: variantPropertyProvider
containerId: Cura.MachineManager.activeStack.variant.id
watchedProperties: [ "value" ]
key: model.key
}
UM.ContainerPropertyProvider
{
id: machinePropertyProvider
containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
watchedProperties: ["value"]
key: model.key
}
}
}