From 964c566ffb151126533ba0232d4279813e10cc80 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Mon, 13 Jun 2022 14:43:23 +0200 Subject: Add spacing option between icon and text in IconWithText.qml --- resources/qml/IconWithText.qml | 2 ++ 1 file changed, 2 insertions(+) (limited to 'resources/qml') diff --git a/resources/qml/IconWithText.qml b/resources/qml/IconWithText.qml index cc0834d7ea..24f211ae17 100644 --- a/resources/qml/IconWithText.qml +++ b/resources/qml/IconWithText.qml @@ -22,6 +22,7 @@ Item property alias elide: label.elide property real margin: UM.Theme.getSize("narrow_margin").width property alias wrapMode: label.wrapMode + property real spacing: UM.Theme.getSize("narrow_margin").width // These properties can be used in combination with layouts. readonly property real contentWidth: icon.width + margin + label.contentWidth @@ -61,6 +62,7 @@ Item top: parent.top bottom: parent.bottom rightMargin: 0 + leftMargin: spacing margins: margin } } -- cgit v1.2.3 From a87695cd8dfb5c257ed63ffd05a972846bcb77ec Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 14 Jun 2022 11:41:38 +0200 Subject: Added new intent selection buttons and resolution drop down to replace the matrix. We are now selecting intents first and then quality, however the container hierarchy quality -> intents. This is the reason for the new functions inside machine manager. CURA-8849 --- .../Recommended/RecommendedPrintSetup.qml | 27 ++- .../RecommendedQualityProfileSelector.qml | 189 +++------------------ .../RecommendedQualityProfileSelectorButton.qml | 63 +++++++ .../Recommended/RecommendedResolutionSelector.qml | 65 +++++++ 4 files changed, 168 insertions(+), 176 deletions(-) create mode 100644 resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml create mode 100644 resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml index de8cce6e94..9dce3565a0 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml @@ -3,8 +3,8 @@ import QtQuick 2.10 -import UM 1.2 as UM -import Cura 1.0 as Cura +import UM 1.6 as UM +import Cura 1.6 as Cura Item { @@ -13,11 +13,11 @@ Item height: childrenRect.height + 2 * padding property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || extrudersEnabledCount.properties.value == 1 - property real padding: UM.Theme.getSize("thick_margin").width + property real padding: UM.Theme.getSize("default_margin").width Column { - spacing: UM.Theme.getSize("wide_margin").height + spacing: UM.Theme.getSize("default_margin").height anchors { @@ -30,11 +30,26 @@ Item // TODO property real firstColumnWidth: Math.round(width / 3) + UM.Label + { + text: catalog.i18nc("@label", "Profiles") + font: UM.Theme.getFont("medium") + } + RecommendedQualityProfileSelector { width: parent.width - // TODO Create a reusable component with these properties to not define them separately for each component - labelColumnWidth: parent.firstColumnWidth + } + + RecommendedResolutionSelector + { + width: parent.width + } + + UM.Label + { + text: catalog.i18nc("@label", "Print settings") + font: UM.Theme.getFont("medium") } RecommendedInfillDensitySelector diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml index f96062463d..edce3c59a0 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml @@ -3,9 +3,10 @@ import QtQuick 2.10 import QtQuick.Controls 2.3 +import QtQuick.Layouts 2.10 import UM 1.5 as UM -import Cura 1.6 as Cura +import Cura 1.7 as Cura import ".." Item @@ -13,187 +14,35 @@ Item id: qualityRow height: childrenRect.height - property real labelColumnWidth: Math.round(width / 3) - property real settingsColumnWidth: width - labelColumnWidth - - // Here are the elements that are shown in the left column - - Column + RowLayout { - anchors - { - left: parent.left - right: parent.right - } - - spacing: UM.Theme.getSize("default_margin").height - - ButtonGroup - { - id: activeProfileButtonGroup - exclusive: true - onClicked: Cura.IntentManager.selectIntent(button.modelData.intent_category, button.modelData.quality_type) - } - - Item - { - height: childrenRect.height - anchors - { - left: parent.left - right: parent.right - } - Cura.IconWithText - { - id: profileLabel - source: UM.Theme.getIcon("PrintQuality") - text: catalog.i18nc("@label", "Profiles") - font: UM.Theme.getFont("medium") - width: labelColumnWidth - iconSize: UM.Theme.getSize("medium_button_icon").width - } - UM.SimpleButton - { - id: resetToDefaultQualityButton - - visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.MachineManager.hasCustomQuality - height: visible ? UM.Theme.getSize("print_setup_icon").height : 0 - width: height - anchors - { - right: profileLabel.right - rightMargin: UM.Theme.getSize("default_margin").width - leftMargin: UM.Theme.getSize("default_margin").width - verticalCenter: parent.verticalCenter - } - - color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") - iconSource: UM.Theme.getIcon("ArrowReset") - - onClicked: - { - // if the current profile is user-created, switch to a built-in quality - Cura.MachineManager.resetToUseDefaultQuality() - } - onEntered: - { - var tooltipContent = catalog.i18nc("@tooltip","You have modified some profile settings. If you want to change these go to custom mode.") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipContent) - } - onExited: base.hideTooltip() - } - - Cura.LabelBar - { - id: labelbar - anchors - { - left: profileLabel.right - right: parent.right - verticalCenter: profileLabel.verticalCenter - } - - model: Cura.QualityProfilesDropDownMenuModel - modelKey: "layer_height" - } - } - + id: intentRow + width: parent.width Repeater { - model: Cura.IntentCategoryModel {} - Item - { - anchors - { - left: parent.left - right: parent.right - } - height: intentCategoryLabel.height - - UM.Label - { - id: intentCategoryLabel - text: model.name - width: labelColumnWidth - UM.Theme.getSize("section_icon").width - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("section_icon").width + UM.Theme.getSize("narrow_margin").width - font: UM.Theme.getFont("medium") - elide: Text.ElideRight - } - - Cura.RadioCheckbar - { - anchors - { - left: intentCategoryLabel.right - right: parent.right - } - dataModel: model["qualities"] - buttonGroup: activeProfileButtonGroup - - function checkedFunction(modelItem) - { - if(Cura.MachineManager.hasCustomQuality) - { - // When user created profile is active, no quality tickbox should be active. - return false - } - - if(modelItem === null) - { - return false - } - return Cura.MachineManager.activeQualityType == modelItem.quality_type && Cura.MachineManager.activeIntentCategory == modelItem.intent_category - } + model: Cura.IntentSelectionModel {} - isCheckedFunction: checkedFunction - } + RecommendedQualityProfileSelectorButton + { + text: model.name + iconSource: UM.Theme.getIcon(model.icon) - MouseArea // Intent description tooltip hover area - { - id: intentDescriptionHoverArea - anchors.fill: parent - hoverEnabled: true - enabled: model.description !== undefined - acceptedButtons: Qt.NoButton // react to hover only, don't steal clicks - Timer - { - id: intentTooltipTimer - interval: 500 - running: false - repeat: false - onTriggered: base.showTooltip( - intentCategoryLabel, - Qt.point(-(intentCategoryLabel.x - qualityRow.x) - UM.Theme.getSize("thick_margin").width, 0), - model.description - ) - } + selected: Cura.MachineManager.activeIntentCategory == model.intent_category - onEntered: intentTooltipTimer.start() - onExited: + onClicked: { + var qualityType + if (Cura.MachineManager.intentCategoryHasQuality(model.intent_category, Cura.MachineManager.activeQualityType)) { - base.hideTooltip() - intentTooltipTimer.stop() + qualityType = Cura.MachineManager.activeQualityType + } else { + qualityType = Cura.MachineManager.getDefaultQualityTypeForIntent(model.intent_category) + print(Cura.MachineManager.getDefaultQualityTypeForIntent(model.intent_category)) } + Cura.IntentManager.selectIntent(model.intent_category, qualityType) } - - NoIntentIcon // This icon has hover priority over intentDescriptionHoverArea, so draw it above it. - { - affected_extruders: Cura.MachineManager.extruderPositionsWithNonActiveIntent - intent_type: model.name - anchors.right: intentCategoryLabel.right - anchors.rightMargin: UM.Theme.getSize("narrow_margin").width - width: intentCategoryLabel.height * 0.75 - anchors.verticalCenter: parent.verticalCenter - height: width - visible: Cura.MachineManager.activeIntentCategory == model.intent_category && affected_extruders.length - } - - } - } } } diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml new file mode 100644 index 0000000000..53b77812e2 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml @@ -0,0 +1,63 @@ +// Copyright (c) 2022 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 2.10 + +import UM 1.5 as UM +import Cura 1.7 as Cura + + +Rectangle +{ + id: base + height: 60 + Layout.fillWidth: true + color: mouseArea.containsMouse || selected ? UM.Theme.getColor("um_blue_1") : UM.Theme.getColor("background_1") + + property alias iconSource: intentIcon.source + property alias text: qualityLabel.text + property bool selected: false + + signal clicked() + + MouseArea + { + id: mouseArea + anchors.fill: parent + hoverEnabled: true + onClicked: base.clicked() + } + + Item + { + width: intentIcon.width + anchors + { + top: parent.top + bottom: qualityLabel.top + horizontalCenter: parent.horizontalCenter + } + + UM.ColorImage + { + id: intentIcon + width: UM.Theme.getSize("recommended_button_icon").width + height: width + anchors.centerIn: parent + color: UM.Theme.getColor("icon") + } + } + + UM.Label + { + id: qualityLabel + anchors + { + bottom: parent.bottom + horizontalCenter: parent.horizontalCenter + bottomMargin: UM.Theme.getSize("narrow_margin").height + } + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml new file mode 100644 index 0000000000..0cc29a2d5c --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml @@ -0,0 +1,65 @@ +// Copyright (c) 2022 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 + +import UM 1.6 as UM +import Cura 1.7 as Cura + +Item +{ + height: childrenRect.height + + property real labelColumnWidth: Math.round(width / 3) + + Cura.IconWithText + { + id: resolutionTitle + anchors.top: parent.top + anchors.left: parent.left + source: UM.Theme.getIcon("PrintQuality") + text: catalog.i18nc("@label", "Resolution") + width: labelColumnWidth + height: parent.height + spacing: UM.Theme.getSize("thick_margin").width + iconSize: UM.Theme.getSize("medium_button_icon").width + } + + Cura.ComboBox + { + id: visibilityPreset + implicitHeight: UM.Theme.getSize("combobox").height + implicitWidth: UM.Theme.getSize("combobox").width + anchors + { + top: parent.top + right: parent.right + } + + textRole: "display_text" + + model: Cura.ActiveIntentQualitiesModel{} + + currentIndex: + { + var current_quality_type = Cura.MachineManager.activeQualityType + + var index = 0 + for (var i = 0; i < model.count; i++) + { + if (model.getItem(i).quality_type == current_quality_type) + { + index = i + break + } + } + return index + } + + onActivated: + { + var selected_item = model.getItem(currentIndex) + Cura.IntentManager.selectIntent(selected_item.intent_category, selected_item.quality_type) + } + } +} \ No newline at end of file -- cgit v1.2.3 From 28c1291febebbb6f93f9eca00067cca89c96d084 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 15:09:34 +0200 Subject: Allow configuring combobox with whether they allow styled text or not For some models we'd like to have the possibility to have rich text in the combobox. For some we'd like to prevent that, for instance to prevent the user from using colours in their profile names, or boldface, or even images. Contributes to issue CURA-8849. --- resources/qml/Widgets/ComboBox.qml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'resources/qml') diff --git a/resources/qml/Widgets/ComboBox.qml b/resources/qml/Widgets/ComboBox.qml index 988b7c3782..f85c5d060b 100644 --- a/resources/qml/Widgets/ComboBox.qml +++ b/resources/qml/Widgets/ComboBox.qml @@ -17,6 +17,8 @@ ComboBox property var defaultTextOnEmptyModel: catalog.i18nc("@label", "No items to select from") // Text displayed in the combobox when the model is empty property var defaultTextOnEmptyIndex: "" // Text displayed in the combobox when the model has items but no item is selected + property alias textFormat: contentLabel.textFormat + enabled: delegateModel.count > 0 onVisibleChanged: { popup.close() } @@ -146,7 +148,7 @@ ComboBox anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width text: delegateItem.text - textFormat: Text.PlainText + textFormat: control.textFormat color: UM.Theme.getColor("setting_control_text") elide: Text.ElideRight wrapMode: Text.NoWrap -- cgit v1.2.3 From 074e9a86077698114538b5e34774c699592d8788 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 15:10:26 +0200 Subject: Show profile group name in bold That highlights it relative to the layer height. Contributes to issue CURA-8849. --- .../qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml | 1 + 1 file changed, 1 insertion(+) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml index 0cc29a2d5c..ef64d7d6d4 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml @@ -37,6 +37,7 @@ Item } textRole: "display_text" + textFormat: Text.StyledText model: Cura.ActiveIntentQualitiesModel{} -- cgit v1.2.3 From 40d473c243297dcdd0d7de7c7fb03c83c3b951cb Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Tue, 14 Jun 2022 15:44:11 +0200 Subject: Add circle with letter inside for non default intents CURA-8849 --- .../RecommendedQualityProfileSelector.qml | 4 +- .../RecommendedQualityProfileSelectorButton.qml | 43 +++++++++++++++++++--- 2 files changed, 39 insertions(+), 8 deletions(-) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml index edce3c59a0..569cf7f7d0 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml @@ -25,8 +25,8 @@ Item RecommendedQualityProfileSelectorButton { - text: model.name - iconSource: UM.Theme.getIcon(model.icon) + profileName: model.name + icon: model.icon selected: Cura.MachineManager.activeIntentCategory == model.intent_category diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml index 53b77812e2..a08cfab37a 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml @@ -16,9 +16,9 @@ Rectangle Layout.fillWidth: true color: mouseArea.containsMouse || selected ? UM.Theme.getColor("um_blue_1") : UM.Theme.getColor("background_1") - property alias iconSource: intentIcon.source - property alias text: qualityLabel.text property bool selected: false + property string profileName: "" + property string icon: "" signal clicked() @@ -38,21 +38,52 @@ Rectangle top: parent.top bottom: qualityLabel.top horizontalCenter: parent.horizontalCenter + topMargin: UM.Theme.getSize("narrow_margin").height } - UM.ColorImage + Item { id: intentIcon width: UM.Theme.getSize("recommended_button_icon").width - height: width - anchors.centerIn: parent - color: UM.Theme.getColor("icon") + height: UM.Theme.getSize("recommended_button_icon").height + UM.ColorImage + { + anchors.fill: parent + anchors.centerIn: parent + visible: icon != "" + source: UM.Theme.getIcon(icon) + color: UM.Theme.getColor("icon") + } + + Rectangle + { + id: circle + anchors.fill: parent + radius: width + anchors.verticalCenter: parent.verticalCenter + visible: icon == "" + color: transparent + border.width: UM.Theme.getSize("thick_lining").width + border.color: UM.Theme.getColor("text") + + UM.Label + { + id: initialLabel + anchors.centerIn: parent + text: profileName.charAt(0).toUpperCase() + font: UM.Theme.getFont("small_bold") + horizontalAlignment: Text.AlignHCenter + } + } + + } } UM.Label { id: qualityLabel + text: profileName anchors { bottom: parent.bottom -- cgit v1.2.3 From bd131257fec7ea80e2edd9cdc41da2e06f69c50a Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 15:39:28 +0200 Subject: Implement sending a signal when changing intent changes quality level For now it does nothing. But I'm adding a function that should cause the combobox to pulse. That'll be a new feature so I'm implementing it in a separate commit. Contributes to issue CURA-8849. --- .../Recommended/RecommendedResolutionSelector.qml | 15 +++++++++++++++ resources/qml/Widgets/ComboBox.qml | 5 +++++ 2 files changed, 20 insertions(+) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml index ef64d7d6d4..62cdf94185 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml @@ -8,9 +8,11 @@ import Cura 1.7 as Cura Item { + id: recommendedResolutionSelector height: childrenRect.height property real labelColumnWidth: Math.round(width / 3) + property string _previousResolution: Cura.MachineManager.activeQualityType //Internal variable to detect changes. Cura.IconWithText { @@ -62,5 +64,18 @@ Item var selected_item = model.getItem(currentIndex) Cura.IntentManager.selectIntent(selected_item.intent_category, selected_item.quality_type) } + + Connections + { + target: Cura.IntentManager + function onIntentCategoryChanged() + { + if(recommendedResolutionSelector._previousResolution !== Cura.MachineManager.activeQualityType) + { + visibilityPreset.pulse(); + } + recommendedResolutionSelector._previousResolution = Cura.MachineManager.activeQualityType; + } + } } } \ No newline at end of file diff --git a/resources/qml/Widgets/ComboBox.qml b/resources/qml/Widgets/ComboBox.qml index f85c5d060b..0e98cdb25a 100644 --- a/resources/qml/Widgets/ComboBox.qml +++ b/resources/qml/Widgets/ComboBox.qml @@ -164,4 +164,9 @@ ComboBox text: delegateLabel.truncated ? delegateItem.text : "" } } + + function pulse() + { + //TODO: Initiate a pulse of colour. + } } -- cgit v1.2.3 From e095d41f0bde88194b91142fe60c4c2fbd5be173 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 15:57:28 +0200 Subject: Implement pulse animation option for ComboBox widget You can now call pulse() on it and it'll pulse in the warning colour. Contributes to issue CURA-8849. --- resources/qml/Widgets/ComboBox.qml | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'resources/qml') diff --git a/resources/qml/Widgets/ComboBox.qml b/resources/qml/Widgets/ComboBox.qml index 0e98cdb25a..77e6c489e9 100644 --- a/resources/qml/Widgets/ComboBox.qml +++ b/resources/qml/Widgets/ComboBox.qml @@ -54,7 +54,34 @@ ComboBox } ] - background: UM.UnderlineBackground{} + background: UM.UnderlineBackground + { + //Rectangle for highlighting when this combobox needs to pulse. + Rectangle + { + anchors.fill: parent + opacity: 0 + color: UM.Theme.getColor("warning") + + SequentialAnimation on opacity + { + id: pulseAnimation + running: false + loops: 1 + alwaysRunToEnd: true + PropertyAnimation + { + to: 1 + duration: 300 + } + PropertyAnimation + { + to: 0 + duration : 2000 + } + } + } + } indicator: UM.ColorImage { @@ -167,6 +194,6 @@ ComboBox function pulse() { - //TODO: Initiate a pulse of colour. + pulseAnimation.restart(); } } -- cgit v1.2.3 From 83ea5c29442c2efc4e0a97e9fb4ef2e8a27b8bc4 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 15:59:54 +0200 Subject: Fix triggering first pulse Before the first pulse, the _previousResolution property was still bound to the activeQualityType property of the MachineManager. When it then checks if it changed, it finds that it didn't change because it checks against that same property, but the _previousResolution automatically updated with it. After that it loses its binding because it's set in the function itself to a fixed value. Instead, we'll now give it its initial value with the Component.onCompleted function so that it doesn't bind, and then doesn't change along with the first change. Contributes to issue CURA-8849. --- .../PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml index 62cdf94185..c69b4dbd13 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml @@ -12,7 +12,8 @@ Item height: childrenRect.height property real labelColumnWidth: Math.round(width / 3) - property string _previousResolution: Cura.MachineManager.activeQualityType //Internal variable to detect changes. + property string _previousResolution: "" //Internal variable to detect changes. + Component.onCompleted: _previousResolution = Cura.MachineManager.activeQualityType; Cura.IconWithText { -- cgit v1.2.3 From 6b6f41bfe9b3f92eedb130ad95fec67d60ac7bf0 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 16:07:05 +0200 Subject: Add a horizontal line between sections of recommended set-up This delimits the selecting of the profile from the few basic settings. Contributes to issue CURA-8849. --- .../qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml index 9dce3565a0..f0b1010517 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml @@ -46,6 +46,15 @@ Item width: parent.width } + //Line between the sections. + Rectangle + { + width: parent.width + height: UM.Theme.getSize("default_lining").height + + color: UM.Theme.getColor("lining") + } + UM.Label { text: catalog.i18nc("@label", "Print settings") -- cgit v1.2.3 From aee614ff9b205e8cddd3b0c3c87858524fc6e926 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 16:12:10 +0200 Subject: Hide intent category selector if there's just 'default' intent It doesn't make sense to let the user choose then. Contributes to issue CURA-8849. --- .../Recommended/RecommendedQualityProfileSelector.qml | 2 ++ 1 file changed, 2 insertions(+) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml index 569cf7f7d0..6bcca955d1 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml @@ -13,6 +13,7 @@ Item { id: qualityRow height: childrenRect.height + visible: intentSelectionRepeater.count > 1 //Only show selector if there's more options than just "default". RowLayout { @@ -21,6 +22,7 @@ Item Repeater { + id: intentSelectionRepeater model: Cura.IntentSelectionModel {} RecommendedQualityProfileSelectorButton -- cgit v1.2.3 From b8e37936319625327f79073f7141bc7bd64d819b Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 16:19:56 +0200 Subject: Fix QML warning about no variable 'transparent' existing It's a colour name. It should be within quotes here. Contributes to issue CURA-8849. --- .../Recommended/RecommendedQualityProfileSelectorButton.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml index a08cfab37a..278a75ce0f 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml @@ -62,7 +62,7 @@ Rectangle radius: width anchors.verticalCenter: parent.verticalCenter visible: icon == "" - color: transparent + color: "transparent" border.width: UM.Theme.getSize("thick_lining").width border.color: UM.Theme.getColor("text") -- cgit v1.2.3 From 5c15ac68b89ae7c526c319ab0316f4cf7333c584 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 16:59:23 +0200 Subject: Add a design for the notification when there's no recommended profile Looks more harsh than it should be, perhaps. I'd prefer if we could add some text that says that you can create your own custom profiles too... Contributes to issue CURA-8849. --- .../Recommended/UnsupportedProfileIndication.qml | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml b/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml new file mode 100644 index 0000000000..86852de4a0 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml @@ -0,0 +1,54 @@ +//Copyright (c) 2022 Ultimaker B.V. +//Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.15 + +import Cura 1.6 as Cura +import UM 1.6 as UM + +//Message showing the user that the configuration they have selected has no profiles. +Column +{ + spacing: UM.Theme.getSize("default_margin").height + + Row + { + width: parent.width + + spacing: UM.Theme.getSize("thin_margin").width + + UM.StatusIcon + { + width: UM.Theme.getSize("notification_icon").width + status: UM.StatusIcon.Status.ERROR + } + + UM.Label + { + width: parent.width + + font: UM.Theme.getFont("default_bold") + text: catalog.i18nc("@error", "Configuration not supported") + } + } + + UM.Label + { + width: parent.width + + text: catalog.i18nc("@message:text %1 is the name the printer uses for 'nozzle'.", "No profiles are available for the selected material/%1 configuration. Please change your configuration." + ).arg(Cura.MachineManager.activeDefinitionVariantsName) + } + + Cura.TertiaryButton + { + anchors.right: parent.right + + text: catalog.i18nc("@button:label", "Learn more") + textFont: UM.Theme.getFont("default") + iconSource: UM.Theme.getIcon("LinkExternal") + isIconOnRightSide: true + + onClicked: Qt.openUrlExternally("https://ultimaker.com/") //TODO: Fill in the actual link. + } +} \ No newline at end of file -- cgit v1.2.3 From b18cb1f649db96090e4cd4c8e78504d435618a36 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 18:20:00 +0200 Subject: Show UnsupportedProfileIndication if list of quality types is empty And otherwise show the intent and quality level selectors. This is currently quite broken because the list of quality levels is not correct. It should only show a quality type if it is supported by all extruders. Contributes to issue CURA-8849. --- .../Recommended/RecommendedPrintSetup.qml | 14 ++++++++++++-- .../Recommended/RecommendedResolutionSelector.qml | 2 ++ 2 files changed, 14 insertions(+), 2 deletions(-) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml index f0b1010517..fbe1c5bc54 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. +//Copyright (c) 2022 Ultimaker B.V. +//Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 @@ -39,11 +39,21 @@ Item RecommendedQualityProfileSelector { width: parent.width + + visible: recommendedResolutionSelector.visible } RecommendedResolutionSelector + { + id: recommendedResolutionSelector + width: parent.width + } + + UnsupportedProfileIndication { width: parent.width + + visible: !recommendedResolutionSelector.visible } //Line between the sections. diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml index c69b4dbd13..6217cfe1cc 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml @@ -15,6 +15,8 @@ Item property string _previousResolution: "" //Internal variable to detect changes. Component.onCompleted: _previousResolution = Cura.MachineManager.activeQualityType; + visible: visibilityPreset.count > 0 //Only show if there are quality types to select from. + Cura.IconWithText { id: resolutionTitle -- cgit v1.2.3 From 3acc7bcb1c522cb9dcbec243af9c414fd95f7847 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 14 Jun 2022 18:20:35 +0200 Subject: Add actual link to help page for when a profile is not supported Doesn't have UTM tags though. Maybe that's not important here. Contributes to issue CURA-8849. --- .../qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml b/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml index 86852de4a0..6d1511d526 100644 --- a/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml +++ b/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml @@ -49,6 +49,6 @@ Column iconSource: UM.Theme.getIcon("LinkExternal") isIconOnRightSide: true - onClicked: Qt.openUrlExternally("https://ultimaker.com/") //TODO: Fill in the actual link. + onClicked: Qt.openUrlExternally("https://support.ultimaker.com/hc/en-us/articles/360012909099-How-to-check-why-a-profile-is-Not-supported") //TODO: Add tags? } } \ No newline at end of file -- cgit v1.2.3 From d293855c6528019e919f043b88648d05b3c1269b Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 15 Jun 2022 09:07:35 +0200 Subject: Remove typo CURA-8849 --- .../Recommended/RecommendedQualityProfileSelectorButton.qml | 1 - 1 file changed, 1 deletion(-) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml index 278a75ce0f..25ac660c8a 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml @@ -62,7 +62,6 @@ Rectangle radius: width anchors.verticalCenter: parent.verticalCenter visible: icon == "" - color: "transparent" border.width: UM.Theme.getSize("thick_lining").width border.color: UM.Theme.getColor("text") -- cgit v1.2.3 From 5fa10b0b8ac9614832d7506cbaa09ba7740f0ca4 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 15 Jun 2022 09:48:08 +0200 Subject: Add campaign link CURA-8849 --- .../qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml b/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml index 6d1511d526..ff12fa9307 100644 --- a/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml +++ b/resources/qml/PrintSetupSelector/Recommended/UnsupportedProfileIndication.qml @@ -49,6 +49,6 @@ Column iconSource: UM.Theme.getIcon("LinkExternal") isIconOnRightSide: true - onClicked: Qt.openUrlExternally("https://support.ultimaker.com/hc/en-us/articles/360012909099-How-to-check-why-a-profile-is-Not-supported") //TODO: Add tags? + onClicked: Qt.openUrlExternally("https://support.ultimaker.com/hc/en-us/articles/360012909099") } } \ No newline at end of file -- cgit v1.2.3 From 8362d4c96765be9a6ba76c01a2e2e897006b45d2 Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 15 Jun 2022 10:48:04 +0200 Subject: 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 ++++- 2 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 resources/qml/PrintSetupSelector/Recommended/ProfileWarningReset.qml (limited to 'resources/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 } } -- cgit v1.2.3 From 6f8470167fa38f9c6e61098cd23d4d61477d8c4b Mon Sep 17 00:00:00 2001 From: "j.delarago" Date: Wed, 15 Jun 2022 17:40:07 +0200 Subject: Suggested changes CURA-8849 --- .../Recommended/RecommendedQualityProfileSelectorButton.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'resources/qml') diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml index 25ac660c8a..6804e7e5ba 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelectorButton.qml @@ -14,7 +14,7 @@ Rectangle id: base height: 60 Layout.fillWidth: true - color: mouseArea.containsMouse || selected ? UM.Theme.getColor("um_blue_1") : UM.Theme.getColor("background_1") + color: mouseArea.containsMouse || selected ? UM.Theme.getColor("background_3") : UM.Theme.getColor("background_1") property bool selected: false property string profileName: "" -- cgit v1.2.3