From 8362d4c96765be9a6ba76c01a2e2e897006b45d2 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 15 Jun 2022 10:48:04 +0200 Subject: [PATCH] Switch to column layout in RecommendedPrintSetup.qml so that left margins can be put on infill selector and items below it. Add warning and reset button when custom profile is select and/or settings have been changed CURA-8849 --- .../Recommended/ProfileWarningReset.qml | 108 ++++++++++++++++++ .../Recommended/RecommendedPrintSetup.qml | 22 +++- resources/themes/cura-light/theme.json | 4 +- 3 files changed, 129 insertions(+), 5 deletions(-) create mode 100644 resources/qml/PrintSetupSelector/Recommended/ProfileWarningReset.qml diff --git a/resources/qml/PrintSetupSelector/Recommended/ProfileWarningReset.qml b/resources/qml/PrintSetupSelector/Recommended/ProfileWarningReset.qml new file mode 100644 index 0000000000..c9abcab1c8 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/ProfileWarningReset.qml @@ -0,0 +1,108 @@ +import QtQuick 2.10 + +import UM 1.6 as UM +import Cura 1.6 as Cura + +Rectangle +{ + height: visible ? UM.Theme.getSize("action_button_icon").height : 0 + visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.MachineManager.hasCustomQuality + anchors.topMargin: UM.Theme.getSize("default_margin") + anchors.bottomMargin: UM.Theme.getSize("default_margin") + + + Rectangle + { + id: warningIcon + color: UM.Theme.getColor("um_yellow_5") + height: UM.Theme.getSize("action_button_icon").height + width: height + radius: width + anchors + { + left: parent.left + verticalCenter: parent.verticalCenter + } + UM.ColorImage + { + height: UM.Theme.getSize("action_button_icon").height + width: height + source: UM.Theme.getIcon("Warning", "low") + } + } + + UM.Label + { + id: warning + anchors + { + left: warningIcon.right + verticalCenter: parent.verticalCenter + leftMargin: UM.Theme.getSize("thin_margin").width + } + + text: "" + + states: [ + State + { + name: "settings changed and custom quality" + when: Cura.SimpleModeSettingsManager.isProfileCustomized && Cura.MachineManager.hasCustomQuality + PropertyChanges + { + target: warning + text: { + var profile_name = Cura.MachineManager.activeQualityChangesGroup.name + return "%1 %2".arg(profile_name).arg(catalog.i18nc("@info", "custom profile is active and you overwrote some settings.")) + } + } + + }, + State + { + name: "custom quality" + when: Cura.MachineManager.hasCustomQuality + PropertyChanges + { + target: warning + text: { + var profile_name = Cura.MachineManager.activeQualityChangesGroup.name + return "%1 %2".arg(profile_name).arg(catalog.i18nc("@info", "custom profile is overriding some settings.")) + } + } + }, + State + { + name: "settings changed" + when: Cura.SimpleModeSettingsManager.isProfileCustomized + PropertyChanges + { + target: warning + text: catalog.i18nc("@info", "Some settings were changed.") + } + } + ] + + } + + UM.SimpleButton + { + id: resetToDefaultQualityButton + height: UM.Theme.getSize("action_button_icon").height + width: height + iconSource: UM.Theme.getIcon("ArrowReset") + anchors + { + right: parent.right + verticalCenter: parent.verticalCenter + } + + color: UM.Theme.getColor("accent_1") + + onClicked: + { + Cura.MachineManager.resetToUseDefaultQuality() + } + } + +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml index fbe1c5bc54..aac8dcecfb 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml @@ -2,6 +2,7 @@ //Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 +import QtQuick.Layouts 1.1 import UM 1.6 as UM import Cura 1.6 as Cura @@ -15,7 +16,7 @@ Item property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || extrudersEnabledCount.properties.value == 1 property real padding: UM.Theme.getSize("default_margin").width - Column + ColumnLayout { spacing: UM.Theme.getSize("default_margin").height @@ -39,29 +40,37 @@ Item RecommendedQualityProfileSelector { width: parent.width - visible: recommendedResolutionSelector.visible } RecommendedResolutionSelector { id: recommendedResolutionSelector + Layout.fillWidth: true width: parent.width } UnsupportedProfileIndication { width: parent.width - visible: !recommendedResolutionSelector.visible } + + ProfileWarningReset + { + width: parent.width + Layout.fillWidth: true + } + //Line between the sections. Rectangle { width: parent.width height: UM.Theme.getSize("default_lining").height - + Layout.topMargin: UM.Theme.getSize("narrow_margin").height + Layout.bottomMargin: UM.Theme.getSize("narrow_margin").height + Layout.fillWidth: true color: UM.Theme.getColor("lining") } @@ -76,6 +85,9 @@ Item width: parent.width // TODO Create a reusable component with these properties to not define them separately for each component labelColumnWidth: parent.firstColumnWidth + Layout.fillWidth: true + Layout.leftMargin: UM.Theme.getSize("default_margin").width + Layout.rightMargin: UM.Theme.getSize("default_margin").width } RecommendedSupportSelector @@ -83,6 +95,7 @@ Item width: parent.width // TODO Create a reusable component with these properties to not define them separately for each component labelColumnWidth: parent.firstColumnWidth + Layout.leftMargin: UM.Theme.getSize("default_margin").width } RecommendedAdhesionSelector @@ -90,6 +103,7 @@ Item width: parent.width // TODO Create a reusable component with these properties to not define them separately for each component labelColumnWidth: parent.firstColumnWidth + Layout.leftMargin: UM.Theme.getSize("default_margin").width } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 69e7f3dcfe..c9299f4d04 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -645,6 +645,8 @@ "preferences_page_list_item": [8.0, 2.0], - "recommended_button_icon": [1.7, 1.7] + "recommended_button_icon": [1.7, 1.7], + + "reset_profile_icon": [1, 1] } }