mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-22 21:59:37 +08:00

This reimplements the behavior of pressing tab/backtab to force the correct order of items in the listview.
149 lines
4.6 KiB
QML
149 lines
4.6 KiB
QML
// Copyright (c) 2016 Ultimaker B.V.
|
|
// Uranium is released under the terms of the AGPLv3 or higher.
|
|
|
|
import QtQuick 2.1
|
|
import QtQuick.Controls 1.1
|
|
import QtQuick.Controls.Styles 1.1
|
|
|
|
import UM 1.1 as UM
|
|
import Cura 1.0 as Cura
|
|
|
|
SettingItem
|
|
{
|
|
id: base
|
|
property var focusItem: control
|
|
|
|
contents: ComboBox
|
|
{
|
|
id: control
|
|
anchors.fill: parent
|
|
|
|
model: Cura.ExtrudersModel { onModelChanged: control.color = getItem(control.currentIndex).color }
|
|
|
|
textRole: "name"
|
|
|
|
onActivated:
|
|
{
|
|
forceActiveFocus();
|
|
propertyProvider.setPropertyValue("value", model.getItem(index).index);
|
|
}
|
|
|
|
onActiveFocusChanged:
|
|
{
|
|
if(activeFocus)
|
|
{
|
|
base.focusReceived();
|
|
}
|
|
}
|
|
|
|
Keys.onTabPressed:
|
|
{
|
|
base.setActiveFocusToNextSetting(true)
|
|
}
|
|
Keys.onBacktabPressed:
|
|
{
|
|
base.setActiveFocusToNextSetting(false)
|
|
}
|
|
|
|
currentIndex: propertyProvider.properties.value
|
|
|
|
MouseArea
|
|
{
|
|
anchors.fill: parent
|
|
acceptedButtons: Qt.NoButton
|
|
onWheel: wheel.accepted = true;
|
|
}
|
|
|
|
property string color: "#fff"
|
|
|
|
Binding
|
|
{
|
|
// We override the color property's value when the ExtruderModel changes. So we need to use an
|
|
// explicit binding here otherwise we do not handle value changes after the model changes.
|
|
target: control
|
|
property: "color"
|
|
value: control.currentText != "" ? control.model.getItem(control.currentIndex).color : ""
|
|
}
|
|
|
|
style: ComboBoxStyle
|
|
{
|
|
background: Rectangle
|
|
{
|
|
color:
|
|
{
|
|
if(!enabled)
|
|
{
|
|
return UM.Theme.getColor("setting_control_disabled");
|
|
}
|
|
if(control.hovered || base.activeFocus)
|
|
{
|
|
return UM.Theme.getColor("setting_control_highlight");
|
|
}
|
|
return UM.Theme.getColor("setting_control");
|
|
}
|
|
border.width: UM.Theme.getSize("default_lining").width
|
|
border.color:
|
|
{
|
|
if(!enabled)
|
|
{
|
|
return UM.Theme.getColor("setting_control_disabled_border")
|
|
}
|
|
if(control.hovered || control.activeFocus)
|
|
{
|
|
return UM.Theme.getColor("setting_control_border_highlight")
|
|
}
|
|
return UM.Theme.getColor("setting_control_border")
|
|
}
|
|
}
|
|
label: Item
|
|
{
|
|
Rectangle
|
|
{
|
|
id: swatch
|
|
height: UM.Theme.getSize("setting_control").height / 2
|
|
width: height
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
border.width: UM.Theme.getSize("default_lining").width
|
|
border.color: enabled ? UM.Theme.getColor("setting_control_border") : UM.Theme.getColor("setting_control_disabled_border")
|
|
|
|
color: control.color
|
|
}
|
|
Label
|
|
{
|
|
anchors
|
|
{
|
|
left: swatch.right;
|
|
right: arrow.left;
|
|
verticalCenter: parent.verticalCenter
|
|
margins: UM.Theme.getSize("default_lining").width
|
|
}
|
|
width: parent.width - swatch.width;
|
|
|
|
text: control.currentText
|
|
font: UM.Theme.getFont("default")
|
|
color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text")
|
|
|
|
elide: Text.ElideRight
|
|
verticalAlignment: Text.AlignVCenter
|
|
}
|
|
UM.RecolorImage
|
|
{
|
|
id: arrow
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
source: UM.Theme.getIcon("arrow_bottom")
|
|
width: UM.Theme.getSize("standard_arrow").width
|
|
height: UM.Theme.getSize("standard_arrow").height
|
|
sourceSize.width: width + 5
|
|
sourceSize.height: width + 5
|
|
|
|
color: UM.Theme.getColor("setting_control_text")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|