CURA-4870 Make the configuration pop-up open and close with one click.

Before it was the case in which sometimes the user needs two clicks for
that.
Also collapse the dropdown when the configuration is applied.
This commit is contained in:
Diego Prado Gesto 2018-03-14 15:15:43 +01:00
parent ff676c98a6
commit 61ce0c3154
3 changed files with 32 additions and 36 deletions

View file

@ -66,6 +66,7 @@ Column
configuration: modelData configuration: modelData
onActivateConfiguration: onActivateConfiguration:
{ {
switchPopupState()
Cura.MachineManager.applyRemoteConfiguration(configuration) Cura.MachineManager.applyRemoteConfiguration(configuration)
} }
} }

View file

@ -13,54 +13,54 @@ Item
id: configurationSelector id: configurationSelector
property var connectedDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null property var connectedDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null
property var panelWidth: control.width property var panelWidth: control.width
property var panelVisible: false
SyncButton { function switchPopupState()
onClicked: configurationSelector.state == "open" ? configurationSelector.state = "closed" : configurationSelector.state = "open" {
popup.opened ? popup.close() : popup.open()
}
SyncButton
{
id: syncButton
onClicked: switchPopupState()
outputDevice: connectedDevice outputDevice: connectedDevice
} }
Popup { Popup
{
// TODO Change once updating to Qt5.10 - This property is already in 5.10 but is manually implemented until upgrade
property bool opened: false
id: popup id: popup
clip: true clip: true
closePolicy: Popup.CloseOnPressOutsideParent
y: configurationSelector.height - UM.Theme.getSize("default_lining").height y: configurationSelector.height - UM.Theme.getSize("default_lining").height
x: configurationSelector.width - width x: configurationSelector.width - width
width: panelWidth width: panelWidth
visible: panelVisible && connectedDevice != null visible: opened
padding: UM.Theme.getSize("default_lining").width padding: UM.Theme.getSize("default_lining").width
contentItem: ConfigurationListView { transformOrigin: Popup.Top
contentItem: ConfigurationListView
{
id: configList id: configList
width: panelWidth - 2 * popup.padding width: panelWidth - 2 * popup.padding
outputDevice: connectedDevice outputDevice: connectedDevice
} }
background: Rectangle { background: Rectangle
{
color: UM.Theme.getColor("setting_control") color: UM.Theme.getColor("setting_control")
border.color: UM.Theme.getColor("setting_control_border") border.color: UM.Theme.getColor("setting_control_border")
} }
} exit: Transition
{
states: [
// This adds a second state to the container where the rectangle is farther to the right
State {
name: "open"
PropertyChanges {
target: popup
height: configList.computedHeight
}
},
State {
name: "closed"
PropertyChanges {
target: popup
height: 0
}
}
]
transitions: [
// This adds a transition that defaults to applying to all state changes
Transition {
// This applies a default NumberAnimation to any changes a state change makes to x or y properties // This applies a default NumberAnimation to any changes a state change makes to x or y properties
NumberAnimation { properties: "height"; duration: 200; easing.type: Easing.InOutQuad; } NumberAnimation { property: "visible"; duration: 75; }
}
enter: Transition
{
// This applies a default NumberAnimation to any changes a state change makes to x or y properties
NumberAnimation { property: "visible"; duration: 75; }
}
onClosed: opened = false
onOpened: opened = true
} }
]
} }

View file

@ -86,11 +86,6 @@ Button
label: Label {} label: Label {}
} }
onClicked:
{
panelVisible = !panelVisible
}
Connections { Connections {
target: outputDevice target: outputDevice
onUniqueConfigurationsChanged: { onUniqueConfigurationsChanged: {