Cura/resources/qml/Preferences/SettingVisibilityPage.qml
Jaime van Kessel b2238420fb Ensure that reset always correctly gets set to basic
The old code that simply resetted the preferences was still active, but this could cause a race condition
in some situations. In those cases it would first set it to basic and then clear the preferences (thus
resulting in no settings being visible)

CURA-5981
2018-12-04 15:46:13 +01:00

205 lines
5.7 KiB
QML

// Copyright (c) 2016 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import UM 1.2 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;
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.rowCount(null))
{
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": "*" + text}
}
ComboBox
{
id: visibilityPreset
width: 150 * screenScaleFactor
anchors
{
top: parent.top
right: parent.right
}
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)
}
}
ScrollView
{
id: scrollView
frameVisible: true
anchors
{
top: filter.bottom;
topMargin: UM.Theme.getSize("default_margin").height
left: parent.left;
right: parent.right;
bottom: parent.bottom;
}
ListView
{
id: settingsListView
model: UM.SettingDefinitionsModel
{
id: definitionsModel
containerId: Cura.MachineManager.activeDefinitionId
showAll: true
exclude: ["machine_settings", "command_line_settings"]
showAncestors: true
expanded: ["*"]
visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
}
delegate: Loader
{
id: loader
width: parent.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 { }
}
}
}