// Copyright (c) 2022 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.1 import QtQuick.Controls 2.15 import QtQuick.Controls 1.1 as OldControls import UM 1.5 as UM import Cura 1.0 as Cura UM.PreferencesPage { title: catalog.i18nc("@title:tab", "Setting Visibility") property QtObject settingVisibilityPresetsModel: CuraApplication.getSettingVisibilityPresetsModel() property int scrollToIndex: 0 signal scrollToSection( string key ) onScrollToSection: { settingsListView.positionViewAtIndex(definitionsModel.getIndex(key), ListView.Beginning) } function reset() { settingVisibilityPresetsModel.setActivePreset("basic") } resetEnabled: true; Item { id: base anchors.fill: parent OldControls.CheckBox { id: toggleVisibleSettings anchors { verticalCenter: filter.verticalCenter left: parent.left leftMargin: UM.Theme.getSize("default_margin").width } text: catalog.i18nc("@label:textbox", "Check all") checkedState: { if(definitionsModel.visibleCount == definitionsModel.categoryCount) { return Qt.Unchecked } else if(definitionsModel.visibleCount == definitionsModel.count) { return Qt.Checked } else { return Qt.PartiallyChecked } } partiallyCheckedEnabled: true MouseArea { anchors.fill: parent; onClicked: { if(parent.checkedState == Qt.Unchecked || parent.checkedState == Qt.PartiallyChecked) { definitionsModel.setAllExpandedVisible(true) } else { definitionsModel.setAllExpandedVisible(false) } } } } TextField { id: filter anchors { top: parent.top left: toggleVisibleSettings.right leftMargin: UM.Theme.getSize("default_margin").width right: visibilityPreset.left rightMargin: UM.Theme.getSize("default_margin").width } placeholderText: catalog.i18nc("@label:textbox", "Filter...") onTextChanged: definitionsModel.filter = {"i18n_label|i18n_description": "*" + text} } Cura.ComboBox { id: visibilityPreset width: 150 * screenScaleFactor anchors { top: parent.top right: parent.right verticalCenter: filter.verticalCenter } model: settingVisibilityPresetsModel.items textRole: "name" currentIndex: { var idx = -1; for(var i = 0; i < settingVisibilityPresetsModel.items.length; ++i) { if(settingVisibilityPresetsModel.items[i].presetId == settingVisibilityPresetsModel.activePreset) { idx = i; break; } } return idx; } onActivated: { var preset_id = settingVisibilityPresetsModel.items[index].presetId settingVisibilityPresetsModel.setActivePreset(preset_id) } } ListView { id: settingsListView anchors { top: filter.bottom topMargin: UM.Theme.getSize("default_margin").height left: parent.left right: parent.right bottom: parent.bottom } clip: true ScrollBar.vertical: UM.ScrollBar {} model: UM.SettingDefinitionsModel { id: definitionsModel containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" showAll: true exclude: ["machine_settings", "command_line_settings"] showAncestors: true expanded: ["*"] visibilityHandler: UM.SettingPreferenceVisibilityHandler {} } delegate: Loader { id: loader width: settingsListView.width height: model.type != undefined ? UM.Theme.getSize("section").height : 0 property var definition: model property var settingDefinitionsModel: definitionsModel asynchronous: true active: model.type != undefined sourceComponent: { switch(model.type) { case "category": return settingVisibilityCategory default: return settingVisibilityItem } } } } UM.I18nCatalog { name: "cura" } SystemPalette { id: palette } Component { id: settingVisibilityCategory; UM.SettingVisibilityCategory { } } Component { id: settingVisibilityItem; UM.SettingVisibilityItem { } } } }