Cura/resources/qml/Settings/SettingCategory.qml
2022-03-11 13:11:36 +01:00

120 lines
3.7 KiB
QML

// Copyright (c) 2022 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7
import QtQuick.Controls 2.0
import UM 1.5 as UM
import Cura 1.5 as Cura
Cura.CategoryButton
{
id: base
anchors.left: parent.left
anchors.right: parent.right
categoryIcon: UM.Theme.getIcon(definition.icon)
expanded: definition.expanded
labelText: definition.label
signal showTooltip(string text)
signal hideTooltip()
signal contextMenuRequested()
signal showAllHiddenInheritedSettings(string category_id)
signal focusReceived()
signal setActiveFocusToNextSetting(bool forward)
property var focusItem: base
onClicked:
{
if (definition.expanded)
{
settingDefinitionsModel.collapseRecursive(definition.key)
}
else
{
settingDefinitionsModel.expandRecursive(definition.key)
}
//Set focus so that tab navigation continues from this point on.
//NB: This must be set AFTER collapsing/expanding the category so that the scroll position is correct.
forceActiveFocus()
}
onActiveFocusChanged:
{
if (activeFocus)
{
base.focusReceived()
}
}
Keys.onTabPressed: base.setActiveFocusToNextSetting(true)
Keys.onBacktabPressed: base.setActiveFocusToNextSetting(false)
UM.SimpleButton
{
id: settingsButton
visible: base.hovered || settingsButton.hovered
height: UM.Theme.getSize("small_button_icon").height
width: height
anchors
{
right: inheritButton.visible ? inheritButton.left : parent.right
// Use 1.9 as the factor because there is a 0.1 difference between the settings and inheritance warning icons
rightMargin: inheritButton.visible ? Math.round(UM.Theme.getSize("default_margin").width / 2) : arrow.width + Math.round(UM.Theme.getSize("default_margin").width * 1.9)
verticalCenter: parent.verticalCenter
}
color: UM.Theme.getColor("setting_control_button")
hoverColor: UM.Theme.getColor("setting_control_button_hover")
iconSource: UM.Theme.getIcon("Sliders")
onClicked: Cura.Actions.configureSettingVisibility.trigger(definition)
}
UM.SimpleButton
{
id: inheritButton
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: arrow.width + UM.Theme.getSize("default_margin").width * 2
visible:
{
if (Cura.SettingInheritanceManager.settingsWithInheritanceWarning.indexOf(definition.key) >= 0)
{
var children_with_override = Cura.SettingInheritanceManager.getChildrenKeysWithOverride(definition.key)
for (var i = 0; i < children_with_override.length; i++)
{
if (!settingDefinitionsModel.getVisible(children_with_override[i]))
{
return true
}
}
return false
}
return false
}
height: UM.Theme.getSize("small_button_icon").height
width: height
onClicked:
{
settingDefinitionsModel.expandRecursive(definition.key)
base.showAllHiddenInheritedSettings(definition.key)
}
color: UM.Theme.getColor("setting_control_button")
hoverColor: UM.Theme.getColor("setting_control_button_hover")
iconSource: UM.Theme.getIcon("Information")
onEntered: base.showTooltip(catalog.i18nc("@label","Some hidden settings use values different from their normal calculated value.\n\nClick to make these settings visible."))
onExited: base.hideTooltip()
}
}