mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-12 20:39:01 +08:00
Simplify SettingExtruder setting item
This way it properly updates when a parent setting changes. Contributes to CURA-3804
This commit is contained in:
parent
7d5c2a9b6a
commit
616ee34be5
@ -15,22 +15,19 @@ SettingItem
|
|||||||
contents: ComboBox
|
contents: ComboBox
|
||||||
{
|
{
|
||||||
id: control
|
id: control
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
model: Cura.ExtrudersModel
|
model: Cura.ExtrudersModel { }
|
||||||
{
|
|
||||||
id: extruders_model
|
|
||||||
onModelChanged: control.color = extruders_model.getItem(control.currentIndex).color
|
|
||||||
}
|
|
||||||
property string color:
|
|
||||||
{
|
|
||||||
var model_color = extruders_model.getItem(control.currentIndex).color;
|
|
||||||
return (model_color) ? model_color : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
textRole: "name"
|
textRole: "name"
|
||||||
|
|
||||||
anchors.fill: parent
|
onActivated:
|
||||||
onCurrentIndexChanged: updateCurrentColor();
|
{
|
||||||
|
forceActiveFocus();
|
||||||
|
propertyProvider.setPropertyValue("value", model.getItem(index).index);
|
||||||
|
}
|
||||||
|
|
||||||
|
currentIndex: propertyProvider.properties.value
|
||||||
|
|
||||||
MouseArea
|
MouseArea
|
||||||
{
|
{
|
||||||
@ -59,7 +56,19 @@ SettingItem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
border.width: UM.Theme.getSize("default_lining").width
|
border.width: UM.Theme.getSize("default_lining").width
|
||||||
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control.hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border")
|
border.color:
|
||||||
|
{
|
||||||
|
if(!enabled)
|
||||||
|
{
|
||||||
|
return UM.Theme.getColor("setting_control_disabled_border");
|
||||||
|
}
|
||||||
|
if(control.hovered || base.activeFocus)
|
||||||
|
{
|
||||||
|
UM.Theme.getColor("setting_control_border_highlight")
|
||||||
|
}
|
||||||
|
|
||||||
|
return UM.Theme.getColor("setting_control_border")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
label: Item
|
label: Item
|
||||||
{
|
{
|
||||||
@ -68,35 +77,36 @@ SettingItem
|
|||||||
id: swatch
|
id: swatch
|
||||||
height: UM.Theme.getSize("setting_control").height / 2
|
height: UM.Theme.getSize("setting_control").height / 2
|
||||||
width: height
|
width: height
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.leftMargin: UM.Theme.getSize("default_lining").width
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
||||||
color: control.color
|
|
||||||
border.width: UM.Theme.getSize("default_lining").width
|
border.width: UM.Theme.getSize("default_lining").width
|
||||||
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : UM.Theme.getColor("setting_control_border")
|
border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border")
|
||||||
|
|
||||||
|
color: control.currentText != "" ? control.model.getItem(control.currentIndex).color : ""
|
||||||
}
|
}
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
anchors.left: swatch.right
|
anchors
|
||||||
anchors.leftMargin: UM.Theme.getSize("default_lining").width
|
{
|
||||||
anchors.right: downArrow.left
|
left: swatch.right;
|
||||||
anchors.rightMargin: UM.Theme.getSize("default_lining").width
|
right: arrow.left;
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
verticalCenter: parent.verticalCenter
|
||||||
|
margins: UM.Theme.getSize("default_lining").width
|
||||||
|
}
|
||||||
|
width: parent.width - swatch.width;
|
||||||
|
|
||||||
text: control.currentText
|
text: control.currentText
|
||||||
font: UM.Theme.getFont("default")
|
font: UM.Theme.getFont("default")
|
||||||
color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text")
|
color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text")
|
||||||
|
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
UM.RecolorImage
|
UM.RecolorImage
|
||||||
{
|
{
|
||||||
id: downArrow
|
id: arrow
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2
|
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
||||||
source: UM.Theme.getIcon("arrow_bottom")
|
source: UM.Theme.getIcon("arrow_bottom")
|
||||||
@ -109,57 +119,5 @@ SettingItem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onActivated:
|
|
||||||
{
|
|
||||||
forceActiveFocus();
|
|
||||||
propertyProvider.setPropertyValue("value", extruders_model.getItem(index).index);
|
|
||||||
control.color = extruders_model.getItem(index).color;
|
|
||||||
}
|
|
||||||
|
|
||||||
onModelChanged: updateCurrentIndex();
|
|
||||||
|
|
||||||
Binding
|
|
||||||
{
|
|
||||||
target: control
|
|
||||||
property: "currentIndex"
|
|
||||||
value:
|
|
||||||
{
|
|
||||||
for(var i = 0; i < extruders_model.rowCount(); ++i)
|
|
||||||
{
|
|
||||||
if(extruders_model.getItem(i).index == propertyProvider.properties.value)
|
|
||||||
{
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// In some cases we want to update the current color without updating the currentIndex, so it's a seperate function.
|
|
||||||
function updateCurrentColor()
|
|
||||||
{
|
|
||||||
for(var i = 0; i < extruders_model.rowCount(); ++i)
|
|
||||||
{
|
|
||||||
if(extruders_model.getItem(i).index == currentIndex)
|
|
||||||
{
|
|
||||||
control.color = extruders_model.getItem(i).color;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateCurrentIndex()
|
|
||||||
{
|
|
||||||
for(var i = 0; i < extruders_model.rowCount(); ++i)
|
|
||||||
{
|
|
||||||
if(extruders_model.getItem(i).index == propertyProvider.properties.value)
|
|
||||||
{
|
|
||||||
control.currentIndex = i;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
currentIndex = -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user