Cura/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml
Jaime van Kessel 97124bf5a9 Fix various QML warnings
CURA-8979
2022-03-15 10:32:44 +01:00

94 lines
3.7 KiB
QML

// Copyright (c) 2022 Ultimaker B.V.
// Uranium is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7
import QtQuick.Controls 2.4
import UM 1.5 as UM
import Cura 1.5 as Cura
Item
{
id: detailsPanel
property var currentItem: null
onCurrentItemChanged:
{
// When the current item changes, the detail view needs to be updated
if (currentItem != null)
{
updateMaterialPropertiesObject()
materialDetailsView.currentMaterialNode = currentItem.container_node
}
}
function updateMaterialPropertiesObject()
{
// DRAGON WARNING!!! DO NOT TOUCH THIS IF YOU DON'T KNOW.
// TL;DR: Always update "container_id" first!
//
// Other widgets such as MaterialsView have bindings towards "materialProperties" and its properties. Here the
// properties are updated one by one, and each change can trigger a reaction on those widgets that have
// connections to the property gets changed, and some reactions will use functions such as
// ContainerManager.getContainerMetaDataEntry() to fetch data using the "container_id" as the reference.
// We need to change "container_id" first so any underlying triggers will use the correct "container_id" to
// fetch data. Or, for example, if we change GUID first, which triggered the weight widget to fetch weight
// before we can update "container_id", so it will fetch weight with the wrong (old) "container_id".
materialProperties.container_id = currentItem.id
materialProperties.name = currentItem.name || "Unknown"
materialProperties.guid = currentItem.GUID
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.density = currentItem.density || 0.0
materialProperties.diameter = currentItem.diameter || 0.0
materialProperties.approximate_diameter = currentItem.approximate_diameter || "0"
}
// Material detailed information view below the title Label
MaterialsView
{
id: materialDetailsView
anchors.fill: parent
editingEnabled: currentItem != null && !currentItem.is_read_only
onResetSelectedMaterial: base.resetExpandedActiveMaterial()
properties: materialProperties
containerId: currentItem != null ? currentItem.id : ""
currentMaterialNode: currentItem != null ? currentItem.container_node: null
}
QtObject
{
id: materialProperties
property string guid: "00000000-0000-0000-0000-000000000000"
property string container_id: "Unknown";
property string name: "Unknown";
property string profile_type: "Unknown";
property string brand: "Unknown";
property string material: "Unknown"; // This needs to be named as "material" to be consistent with
// the material container's metadata entry
property string color_name: "Yellow";
property color color_code: "yellow";
property real density: 0.0;
property real diameter: 0.0;
property string approximate_diameter: "0";
property real spool_cost: 0.0;
property real spool_weight: 0.0;
property real spool_length: 0.0;
property real cost_per_meter: 0.0;
property string description: "";
property string adhesion_info: "";
}
}