Browse Source

Merge pull request #12573 from Ultimaker/CURA-8849_more_intent_fixes

[CURA-8849] more intent fixes
Casper Lamboo 2 years ago
parent
commit
f4ee4ad05d

+ 11 - 0
resources/qml/IconWithText.qml

@@ -24,6 +24,8 @@ Item
     property alias wrapMode: label.wrapMode
     property real spacing: UM.Theme.getSize("narrow_margin").width
 
+    property string tooltipText: ""
+
     // These properties can be used in combination with layouts.
     readonly property real contentWidth: icon.width + margin + label.contentWidth
     readonly property real minContentWidth: Math.round(icon.width + margin + 0.5 * label.contentWidth)
@@ -66,4 +68,13 @@ Item
             margins: margin
         }
     }
+
+    MouseArea
+    {
+        enabled: tooltipText != ""
+        anchors.fill: parent
+        hoverEnabled: true
+        onEntered: base.showTooltip(parent, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipText)
+        onExited: base.hideTooltip()
+    }
 }

+ 16 - 15
resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml

@@ -13,7 +13,7 @@ import Cura 1.0 as Cura
 Item
 {
     id: enableAdhesionRow
-    height: childrenRect.height
+    height: enableAdhesionContainer.height
 
     property real labelColumnWidth: Math.round(width / 3)
     property var curaRecommendedMode: Cura.RecommendedMode {}
@@ -47,8 +47,6 @@ Item
             id: enableAdhesionCheckBox
             anchors.verticalCenter: parent.verticalCenter
 
-            property alias _hovered: adhesionMouseArea.containsMouse
-
             //: Setting enable printing build-plate adhesion helper checkbox
             enabled: recommendedPrintSetup.settingsEnabled
 
@@ -60,22 +58,25 @@ Item
                 id: adhesionMouseArea
                 anchors.fill: parent
                 hoverEnabled: true
-
-                onClicked:
-                {
-                    curaRecommendedMode.setAdhesion(!parent.checked)
-                }
-
-                onEntered:
-                {
-                    base.showTooltip(enableAdhesionCheckBox, Qt.point(-enableAdhesionContainer.x - UM.Theme.getSize("thick_margin").width, 0),
-                        catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards."));
-                }
-                onExited: base.hideTooltip()
+                // propagateComposedEvents used on adhesionTooltipMouseArea does not work with Controls Components.
+                // It only works with other MouseAreas, so this is required
+                onClicked: curaRecommendedMode.setAdhesion(!parent.checked)
             }
         }
     }
 
+    MouseArea
+    {
+        id: adhesionTooltipMouseArea
+        anchors.fill: parent
+        propagateComposedEvents: true
+        hoverEnabled: true
+
+        onEntered:base.showTooltip(enableAdhesionCheckBox, Qt.point(-enableAdhesionContainer.x - UM.Theme.getSize("thick_margin").width, 0),
+                catalog.i18nc("@label", "Enable printing a brim or raft. This will add a flat area around or under your object which is easy to cut off afterwards."));
+        onExited: base.hideTooltip()
+    }
+
     UM.SettingPropertyProvider
     {
         id: platformAdhesionType

+ 1 - 1
resources/qml/PrintSetupSelector/Recommended/RecommendedInfillDensitySelector.qml

@@ -65,6 +65,7 @@ Item
         font: UM.Theme.getFont("medium")
         width: labelColumnWidth
         iconSize: UM.Theme.getSize("medium_button_icon").width
+        tooltipText: catalog.i18nc("@label", "Gradual infill will gradually increase the amount of infill towards the top.")
     }
 
     Item
@@ -102,7 +103,6 @@ Item
                 id: backgroundLine
                 height: UM.Theme.getSize("print_setup_slider_groove").height
                 width: parent.width - UM.Theme.getSize("print_setup_slider_handle").width
-                implicitWidth: width
                 anchors.horizontalCenter: parent.horizontalCenter
                 anchors.verticalCenter: parent.verticalCenter
                 color: infillSlider.enabled ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable")

+ 1 - 1
resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml

@@ -62,7 +62,7 @@ Item
         {
             width: parent.width
             Layout.fillWidth: true
-            Layout.topMargin: UM.Theme.getSize("thin_margin").height
+            Layout.topMargin: UM.Theme.getSize("default_margin").height
             Layout.bottomMargin: UM.Theme.getSize("thin_margin").height
         }
 

+ 1 - 0
resources/qml/PrintSetupSelector/Recommended/RecommendedResolutionSelector.qml

@@ -22,6 +22,7 @@ Item
         id: resolutionTitle
         anchors.top: parent.top
         anchors.left: parent.left
+        anchors.leftMargin: - UM.Theme.getSize("thick_lining").width
         source: UM.Theme.getIcon("PrintQuality")
         text: catalog.i18nc("@label", "Resolution")
         width: labelColumnWidth

+ 192 - 185
resources/qml/PrintSetupSelector/Recommended/RecommendedSupportSelector.qml

@@ -14,39 +14,41 @@ import Cura 1.0 as Cura
 Item
 {
     id: enableSupportRow
-    height: childrenRect.height
+    height: UM.Theme.getSize("print_setup_big_item").height
 
     property real labelColumnWidth: Math.round(width / 3)
 
-    Cura.IconWithText
-    {
-        id: enableSupportRowTitle
-        anchors.top: parent.top
-        anchors.left: parent.left
-        visible: enableSupportCheckBox.visible
-        source: UM.Theme.getIcon("Support")
-        text: catalog.i18nc("@label", "Support")
-        font: UM.Theme.getFont("medium")
-        width: labelColumnWidth
-        iconSize: UM.Theme.getSize("medium_button_icon").width
-    }
-
     Item
     {
         id: enableSupportContainer
-        height: enableSupportCheckBox.height
+        width: labelColumnWidth + enableSupportCheckBox.width
 
         anchors
         {
-            left: enableSupportRowTitle.right
-            right: parent.right
-            verticalCenter: enableSupportRowTitle.verticalCenter
+            left: parent.left
+            top: parent.top
+            bottom: parent.bottom
+            rightMargin: UM.Theme.getSize("thick_margin").width
+        }
+
+        Cura.IconWithText
+        {
+            id: enableSupportRowTitle
+            anchors.left: parent.left
+            visible: enableSupportCheckBox.visible
+            source: UM.Theme.getIcon("Support")
+            text: catalog.i18nc("@label", "Support")
+            font: UM.Theme.getFont("medium")
+            width: labelColumnWidth
+            iconSize: UM.Theme.getSize("medium_button_icon").width
+            tooltipText: catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing.")
         }
 
         UM.CheckBox
         {
             id: enableSupportCheckBox
             anchors.verticalCenter: parent.verticalCenter
+            anchors.left: enableSupportRowTitle.right
 
             property alias _hovered: enableSupportMouseArea.containsMouse
 
@@ -60,157 +62,219 @@ Item
                 id: enableSupportMouseArea
                 anchors.fill: parent
                 hoverEnabled: true
-
+                // propagateComposedEvents used on supportToolTipMouseArea does not work with Controls Components.
+                // It only works with other MouseAreas, so this is required
                 onClicked: supportEnabled.setPropertyValue("value", supportEnabled.properties.value != "True")
-
-                onEntered:
-                {
-                    base.showTooltip(enableSupportCheckBox, Qt.point(-enableSupportContainer.x - UM.Theme.getSize("thick_margin").width, 0),
-                        catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing."))
-                }
-                onExited: base.hideTooltip()
             }
         }
 
-        ComboBox
+        MouseArea
         {
-            id: supportExtruderCombobox
+            id: supportToolTipMouseArea
+            anchors.fill: parent
+            propagateComposedEvents: true
+            hoverEnabled: true
+            onEntered: base.showTooltip(enableSupportContainer, Qt.point(-enableSupportContainer.x - UM.Theme.getSize("thick_margin").width, 0),
+                    catalog.i18nc("@label", "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing."))
+            onExited: base.hideTooltip()
+        }
+    }
 
-            height: UM.Theme.getSize("print_setup_big_item").height
-            anchors
-            {
-                left: enableSupportCheckBox.right
-                right: parent.right
-                leftMargin: UM.Theme.getSize("thick_margin").width
-                rightMargin: UM.Theme.getSize("thick_margin").width
-                verticalCenter: parent.verticalCenter
-            }
+    ComboBox
+    {
+        id: supportExtruderCombobox
 
-            enabled: recommendedPrintSetup.settingsEnabled
-            visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1)
-            textRole: "name"  // this solves that the combobox isn't populated in the first time Cura is started
+        height: UM.Theme.getSize("print_setup_big_item").height
+        anchors
+        {
+            left: enableSupportContainer.right
+            right: parent.right
+            leftMargin: UM.Theme.getSize("default_margin").width
+            rightMargin: UM.Theme.getSize("thick_margin").width
+            verticalCenter: parent.verticalCenter
+        }
+
+        enabled: recommendedPrintSetup.settingsEnabled
+        visible: enableSupportCheckBox.visible && (supportEnabled.properties.value == "True") && (extrudersEnabledCount.properties.value > 1)
+        textRole: "name"  // this solves that the combobox isn't populated in the first time Cura is started
 
-            model: extruderModel
+        model: extruderModel
 
-            // knowing the extruder position, try to find the item index in the model
-            function getIndexByPosition(position)
+        // knowing the extruder position, try to find the item index in the model
+        function getIndexByPosition(position)
+        {
+            var itemIndex = -1  // if position is not found, return -1
+            for (var item_index in model.items)
             {
-                var itemIndex = -1  // if position is not found, return -1
-                for (var item_index in model.items)
+                var item = model.getItem(item_index)
+                if (item.index == position)
                 {
-                    var item = model.getItem(item_index)
-                    if (item.index == position)
-                    {
-                        itemIndex = item_index
-                        break
-                    }
+                    itemIndex = item_index
+                    break
                 }
-                return itemIndex
             }
+            return itemIndex
+        }
+
+        onActivated:
+        {
+            if (model.getItem(index).enabled)
+            {
+                forceActiveFocus();
+                supportExtruderNr.setPropertyValue("value", model.getItem(index).index);
+            } else
+            {
+                currentIndex = supportExtruderNr.properties.value;  // keep the old value
+            }
+        }
+
+        currentIndex: (supportExtruderNr.properties.value !== undefined) ? supportExtruderNr.properties.value : 0
 
-            onActivated:
+        property string color: "#fff"
+        Connections
+        {
+            target: extruderModel
+            function onModelChanged()
             {
-                if (model.getItem(index).enabled)
-                {
-                    forceActiveFocus();
-                    supportExtruderNr.setPropertyValue("value", model.getItem(index).index);
-                } else
+                var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color
+                if (maybeColor)
                 {
-                    currentIndex = supportExtruderNr.properties.value;  // keep the old value
+                    supportExtruderCombobox.color = maybeColor
                 }
             }
+        }
+        onCurrentIndexChanged:
+        {
+            var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color
+            if(maybeColor)
+            {
+                supportExtruderCombobox.color = maybeColor
+            }
+        }
+
+        Binding
+        {
+            target: supportExtruderCombobox
+            property: "currentIndex"
+            value: supportExtruderCombobox.getIndexByPosition(supportExtruderNr.properties.value)
+            // Sometimes when the value is already changed, the model is still being built.
+            // The when clause ensures that the current index is not updated when this happens.
+            when: supportExtruderCombobox.model.count > 0
+        }
+
+        indicator: UM.ColorImage
+        {
+            id: downArrow
+            x: supportExtruderCombobox.width - width - supportExtruderCombobox.rightPadding
+            y: supportExtruderCombobox.topPadding + Math.round((supportExtruderCombobox.availableHeight - height) / 2)
+
+            source: UM.Theme.getIcon("ChevronSingleDown")
+            width: UM.Theme.getSize("standard_arrow").width
+            height: UM.Theme.getSize("standard_arrow").height
 
-            currentIndex: (supportExtruderNr.properties.value !== undefined) ? supportExtruderNr.properties.value : 0
+            color: UM.Theme.getColor("setting_control_button")
+        }
 
-            property string color: "#fff"
-            Connections
+        background: Rectangle
+        {
+            color:
             {
-                target: extruderModel
-                function onModelChanged()
+                if (!enabled)
+                {
+                    return UM.Theme.getColor("setting_control_disabled")
+                }
+                if (supportExtruderCombobox.hovered || base.activeFocus)
                 {
-                    var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color
-                    if (maybeColor)
-                    {
-                        supportExtruderCombobox.color = maybeColor
-                    }
+                    return UM.Theme.getColor("setting_control_highlight")
                 }
+                return UM.Theme.getColor("setting_control")
             }
-            onCurrentIndexChanged:
+            radius: UM.Theme.getSize("setting_control_radius").width
+            border.width: UM.Theme.getSize("default_lining").width
+            border.color:
             {
-                var maybeColor = supportExtruderCombobox.model.getItem(supportExtruderCombobox.currentIndex).color
-                if(maybeColor)
+                if (!enabled)
                 {
-                    supportExtruderCombobox.color = maybeColor
+                    return UM.Theme.getColor("setting_control_disabled_border")
+                }
+                if (supportExtruderCombobox.hovered || supportExtruderCombobox.activeFocus)
+                {
+                    return UM.Theme.getColor("setting_control_border_highlight")
                 }
+                return UM.Theme.getColor("setting_control_border")
             }
+        }
 
-            Binding
+        contentItem: UM.Label
+        {
+            anchors.verticalCenter: parent.verticalCenter
+            anchors.left: parent.left
+            anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
+            anchors.right: downArrow.left
+            rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
+
+            text: supportExtruderCombobox.currentText
+            textFormat: Text.PlainText
+            color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text")
+
+            elide: Text.ElideLeft
+
+
+            background: Rectangle
             {
-                target: supportExtruderCombobox
-                property: "currentIndex"
-                value: supportExtruderCombobox.getIndexByPosition(supportExtruderNr.properties.value)
-                // Sometimes when the value is already changed, the model is still being built.
-                // The when clause ensures that the current index is not updated when this happens.
-                when: supportExtruderCombobox.model.count > 0
+                id: swatch
+                height: Math.round(parent.height / 2)
+                width: height
+                radius: Math.round(width / 2)
+                anchors.right: parent.right
+                anchors.verticalCenter: parent.verticalCenter
+                anchors.rightMargin: UM.Theme.getSize("thin_margin").width
+
+                color: supportExtruderCombobox.color
             }
+        }
 
-            indicator: UM.ColorImage
-            {
-                id: downArrow
-                x: supportExtruderCombobox.width - width - supportExtruderCombobox.rightPadding
-                y: supportExtruderCombobox.topPadding + Math.round((supportExtruderCombobox.availableHeight - height) / 2)
+        popup: Popup
+        {
+            y: supportExtruderCombobox.height - UM.Theme.getSize("default_lining").height
+            width: supportExtruderCombobox.width
+            implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width
+            padding: UM.Theme.getSize("default_lining").width
 
-                source: UM.Theme.getIcon("ChevronSingleDown")
-                width: UM.Theme.getSize("standard_arrow").width
-                height: UM.Theme.getSize("standard_arrow").height
+            contentItem: ListView
+            {
+                implicitHeight: contentHeight
 
-                color: UM.Theme.getColor("setting_control_button")
+                ScrollBar.vertical: UM.ScrollBar {}
+                clip: true
+                model: supportExtruderCombobox.popup.visible ? supportExtruderCombobox.delegateModel : null
+                currentIndex: supportExtruderCombobox.highlightedIndex
             }
 
             background: Rectangle
             {
-                color:
-                {
-                    if (!enabled)
-                    {
-                        return UM.Theme.getColor("setting_control_disabled")
-                    }
-                    if (supportExtruderCombobox.hovered || base.activeFocus)
-                    {
-                        return UM.Theme.getColor("setting_control_highlight")
-                    }
-                    return UM.Theme.getColor("setting_control")
-                }
-                radius: UM.Theme.getSize("setting_control_radius").width
-                border.width: UM.Theme.getSize("default_lining").width
-                border.color:
-                {
-                    if (!enabled)
-                    {
-                        return UM.Theme.getColor("setting_control_disabled_border")
-                    }
-                    if (supportExtruderCombobox.hovered || supportExtruderCombobox.activeFocus)
-                    {
-                        return UM.Theme.getColor("setting_control_border_highlight")
-                    }
-                    return UM.Theme.getColor("setting_control_border")
-                }
+                color: UM.Theme.getColor("setting_control")
+                border.color: UM.Theme.getColor("setting_control_border")
             }
+        }
+
+        delegate: ItemDelegate
+        {
+            width: supportExtruderCombobox.width - 2 * UM.Theme.getSize("default_lining").width
+            height: supportExtruderCombobox.height
+            highlighted: supportExtruderCombobox.highlightedIndex == index
 
             contentItem: UM.Label
             {
-                anchors.verticalCenter: parent.verticalCenter
-                anchors.left: parent.left
+                anchors.fill: parent
                 anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
-                anchors.right: downArrow.left
-                rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
+                anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width
 
-                text: supportExtruderCombobox.currentText
-                textFormat: Text.PlainText
-                color: enabled ? UM.Theme.getColor("setting_control_text") : UM.Theme.getColor("setting_control_disabled_text")
-
-                elide: Text.ElideLeft
+                text: model.name
+                color: model.enabled ? UM.Theme.getColor("setting_control_text"): UM.Theme.getColor("action_button_disabled_text")
 
+                elide: Text.ElideRight
+                rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
 
                 background: Rectangle
                 {
@@ -222,71 +286,14 @@ Item
                     anchors.verticalCenter: parent.verticalCenter
                     anchors.rightMargin: UM.Theme.getSize("thin_margin").width
 
-                    color: supportExtruderCombobox.color
-                }
-            }
-
-            popup: Popup
-            {
-                y: supportExtruderCombobox.height - UM.Theme.getSize("default_lining").height
-                width: supportExtruderCombobox.width
-                implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width
-                padding: UM.Theme.getSize("default_lining").width
-
-                contentItem: ListView
-                {
-                    implicitHeight: contentHeight
-
-                    ScrollBar.vertical: UM.ScrollBar {}
-                    clip: true
-                    model: supportExtruderCombobox.popup.visible ? supportExtruderCombobox.delegateModel : null
-                    currentIndex: supportExtruderCombobox.highlightedIndex
-                }
-
-                background: Rectangle
-                {
-                    color: UM.Theme.getColor("setting_control")
-                    border.color: UM.Theme.getColor("setting_control_border")
+                    color: supportExtruderCombobox.model.getItem(index).color
                 }
             }
 
-            delegate: ItemDelegate
+            background: Rectangle
             {
-                width: supportExtruderCombobox.width - 2 * UM.Theme.getSize("default_lining").width
-                height: supportExtruderCombobox.height
-                highlighted: supportExtruderCombobox.highlightedIndex == index
-
-                contentItem: UM.Label
-                {
-                    anchors.fill: parent
-                    anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
-                    anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width
-
-                    text: model.name
-                    color: model.enabled ? UM.Theme.getColor("setting_control_text"): UM.Theme.getColor("action_button_disabled_text")
-
-                    elide: Text.ElideRight
-                    rightPadding: swatch.width + UM.Theme.getSize("setting_unit_margin").width
-
-                    background: Rectangle
-                    {
-                        id: swatch
-                        height: Math.round(parent.height / 2)
-                        width: height
-                        radius: Math.round(width / 2)
-                        anchors.right: parent.right
-                        anchors.verticalCenter: parent.verticalCenter
-                        anchors.rightMargin: UM.Theme.getSize("thin_margin").width
-
-                        color: supportExtruderCombobox.model.getItem(index).color
-                    }
-                }
-
-                background: Rectangle
-                {
-                    color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent"
-                    border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent"
-                }
+                color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent"
+                border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent"
             }
         }
     }

+ 1 - 1
resources/qml/Settings/SettingItem.qml

@@ -209,7 +209,7 @@ Item
                 height: UM.Theme.getSize("small_button_icon").height
                 width: height
 
-                color: UM.Theme.getColor("setting_control_button")
+                color: UM.Theme.getColor("accent_1")
                 hoverColor: UM.Theme.getColor("setting_control_button_hover")
 
                 iconSource: UM.Theme.getIcon("ArrowReset")

+ 8 - 6
resources/qml/Widgets/ComboBox.qml

@@ -56,28 +56,30 @@ ComboBox
 
     background: UM.UnderlineBackground
     {
-        //Rectangle for highlighting when this combobox needs to pulse.
+        // Rectangle for highlighting when this combobox needs to pulse.
         Rectangle
         {
             anchors.fill: parent
             opacity: 0
-            color: UM.Theme.getColor("warning")
+            color: "transparent"
+
+            border.color: UM.Theme.getColor("text_field_border_active")
+            border.width: UM.Theme.getSize("default_lining").width
 
             SequentialAnimation on opacity
             {
                 id: pulseAnimation
                 running: false
-                loops: 1
-                alwaysRunToEnd: true
+                loops: 2
                 PropertyAnimation
                 {
                     to: 1
-                    duration: 300
+                    duration: 150
                 }
                 PropertyAnimation
                 {
                     to: 0
-                    duration : 2000
+                    duration : 150
                 }
             }
         }