Cura/resources/qml/Preferences/SettingVisibilityPage.qml
Ghostkeeper bb32f25b49
Replace old ScrollView with new ListView
I also swapped out the old NewControls import to just be the actual Controls, and used OldControls to import the Controls1 module. This is consistent with the rest of the code base as far as I could find.

Contributes to issue CURA-8686.
2022-01-18 18:43:27 +01:00

202 lines
5.6 KiB
QML

// 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}
}
ComboBox
{
id: visibilityPreset
width: 150 * screenScaleFactor
anchors
{
top: parent.top
right: parent.right
bottom: settingsListView.top
}
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 { }
}
}
}