From fe256b35628284427683416c080cb9e4f1b0c6c2 Mon Sep 17 00:00:00 2001 From: Diego Prado Gesto Date: Mon, 10 Sep 2018 15:57:19 +0200 Subject: [PATCH] Fix some issues in the material preference page. Now the generic section collapses and expands correctly. Some qml error was also fixed. Contributes to CURA-5682. --- .../Materials/MaterialsDetailsPanel.qml | 18 +++++---- .../Preferences/Materials/MaterialsList.qml | 4 +- .../Preferences/Materials/MaterialsPage.qml | 39 +++++++++++-------- 3 files changed, 37 insertions(+), 24 deletions(-) diff --git a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml index ad9f0e3766..738a1fa6d2 100644 --- a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml +++ b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml @@ -15,19 +15,23 @@ Item property var currentItem: base.currentItem - onCurrentItemChanged: { updateMaterialPropertiesObject(currentItem) } + onCurrentItemChanged: { updateMaterialPropertiesObject() } - function updateMaterialPropertiesObject( currentItem ) + function updateMaterialPropertiesObject() { + if (currentItem === null) + { + return + } materialProperties.name = currentItem.name || "Unknown" - materialProperties.guid = currentItem.GUID; + materialProperties.guid = currentItem.GUID materialProperties.container_id = currentItem.id materialProperties.brand = currentItem.brand || "Unknown" materialProperties.material = currentItem.material || "Unknown" materialProperties.color_name = currentItem.color_name || "Yellow" materialProperties.color_code = currentItem.color_code || "yellow" materialProperties.description = currentItem.description || "" - materialProperties.adhesion_info = currentItem.adhesion_info || ""; + materialProperties.adhesion_info = currentItem.adhesion_info || "" materialProperties.density = currentItem.density || 0.0 materialProperties.diameter = currentItem.diameter || 0.0 materialProperties.approximate_diameter = currentItem.approximate_diameter || "0" @@ -62,11 +66,11 @@ Item bottom: parent.bottom } - editingEnabled: base.currentItem != null && !base.currentItem.is_read_only + editingEnabled: currentItem != null && !currentItem.is_read_only properties: materialProperties - containerId: base.currentItem != null ? base.currentItem.id : "" - currentMaterialNode: base.currentItem.container_node + containerId: currentItem != null ? currentItem.id : "" + currentMaterialNode: currentItem.container_node } diff --git a/resources/qml/Preferences/Materials/MaterialsList.qml b/resources/qml/Preferences/Materials/MaterialsList.qml index d5e4443a8c..8b870e75be 100644 --- a/resources/qml/Preferences/Materials/MaterialsList.qml +++ b/resources/qml/Preferences/Materials/MaterialsList.qml @@ -181,10 +181,12 @@ Item anchors.left: parent.left height: generic_section.expanded ? childrenRect.height : 0 visible: generic_section.expanded + Repeater { model: genericMaterialsModel - delegate: MaterialsSlot { + delegate: MaterialsSlot + { material: model } } diff --git a/resources/qml/Preferences/Materials/MaterialsPage.qml b/resources/qml/Preferences/Materials/MaterialsPage.qml index 96fea6a951..bcf875be27 100644 --- a/resources/qml/Preferences/Materials/MaterialsPage.qml +++ b/resources/qml/Preferences/Materials/MaterialsPage.qml @@ -19,6 +19,8 @@ Item property var currentItem: null property var current_type: null property var current_brand: null + + property var hasCurrentItem: base.currentItem != null property var isCurrentItemActivated: { const extruder_position = Cura.ExtruderManager.activeExtruderIndex; @@ -89,47 +91,48 @@ Item } Component.onCompleted: { expandActiveMaterial(active_root_material_id) } - onCurrentItemChanged: { MaterialsDetailsPanel.currentItem = currentItem } + onCurrentItemChanged: { materialDetailsPanel.currentItem = currentItem } + Connections { target: materials_model onItemsChanged: { - var currentItemId = base.currentItem == null ? "" : base.currentItem.root_material_id; - var position = Cura.ExtruderManager.activeExtruderIndex; + var currentItemId = hasCurrentItem ? base.currentItem.root_material_id : "" + var position = Cura.ExtruderManager.activeExtruderIndex // try to pick the currently selected item; it may have been moved if (base.newRootMaterialIdToSwitchTo == "") { - base.newRootMaterialIdToSwitchTo = currentItemId; + base.newRootMaterialIdToSwitchTo = currentItemId } for (var idx = 0; idx < materials_model.rowCount(); ++idx) { - var item = materials_model.getItem(idx); + var item = materials_model.getItem(idx) if (item.root_material_id == base.newRootMaterialIdToSwitchTo) { // Switch to the newly created profile if needed - materialListView.currentIndex = idx; - materialListView.activateDetailsWithIndex(materialListView.currentIndex); + materialDetailsPanel.currentIndex = idx + materialDetailsPanel.activateDetailsWithIndex(materialListView.currentIndex) if (base.toActivateNewMaterial) { - Cura.MachineManager.setMaterial(position, item.container_node); + Cura.MachineManager.setMaterial(position, item.container_node) } - base.newRootMaterialIdToSwitchTo = ""; - base.toActivateNewMaterial = false; + base.newRootMaterialIdToSwitchTo = "" + base.toActivateNewMaterial = false return } } - materialListView.currentIndex = 0; - materialListView.activateDetailsWithIndex(materialListView.currentIndex); + materialListView.currentIndex = 0 + materialListView.activateDetailsWithIndex(materialListView.currentIndex) if (base.toActivateNewMaterial) { - Cura.MachineManager.setMaterial(position, materials_model.getItem(0).container_node); + Cura.MachineManager.setMaterial(position, materials_model.getItem(0).container_node) } - base.newRootMaterialIdToSwitchTo = ""; - base.toActivateNewMaterial = false; + base.newRootMaterialIdToSwitchTo = "" + base.toActivateNewMaterial = false } } @@ -313,11 +316,15 @@ Item frameVisible: true verticalScrollBarPolicy: Qt.ScrollBarAlwaysOn - MaterialsList {} + MaterialsList + { + id: materialListView + } } MaterialsDetailsPanel { + id: materialDetailsPanel anchors { left: materialScrollView.right