Stop the simulation also when the range slider is used. Reuse some code.

Contributes to CURA-5725.
This commit is contained in:
Diego Prado Gesto 2018-09-18 16:30:15 +02:00
parent 1b1ca8a53b
commit f965b66c87
2 changed files with 28 additions and 32 deletions

View file

@ -111,6 +111,12 @@ Item {
UM.SimulationView.setMinimumLayer(lowerValue) UM.SimulationView.setMinimumLayer(lowerValue)
} }
function setValueManually(value)
{
sliderRoot.manuallyChanged = true
upperHandle.setValue(value)
}
function setValue(value) { function setValue(value) {
var range = sliderRoot.upperValue - sliderRoot.lowerValue var range = sliderRoot.upperValue - sliderRoot.lowerValue
value = Math.min(value, sliderRoot.maximumValue) value = Math.min(value, sliderRoot.maximumValue)
@ -154,7 +160,7 @@ Item {
maximumValue: sliderRoot.maximumValue maximumValue: sliderRoot.maximumValue
value: sliderRoot.upperValue value: sliderRoot.upperValue
busy: UM.SimulationView.busy busy: UM.SimulationView.busy
setValue: rangeHandle.setValue // connect callback functions setValue: rangeHandle.setValueManually // connect callback functions
} }
} }
@ -193,7 +199,7 @@ Item {
return result return result
} }
function setValueAndStopSimulation(value) function setValueManually(value)
{ {
sliderRoot.manuallyChanged = true sliderRoot.manuallyChanged = true
upperHandle.setValue(value) upperHandle.setValue(value)
@ -214,16 +220,8 @@ Item {
sliderRoot.updateRangeHandle() sliderRoot.updateRangeHandle()
} }
Keys.onUpPressed: Keys.onUpPressed: upperHandleLabel.setValue(upperHandleLabel.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1))
{ Keys.onDownPressed: upperHandleLabel.setValue(upperHandleLabel.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1))
sliderRoot.manuallyChanged = true
upperHandleLabel.setValue(upperHandleLabel.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1))
}
Keys.onDownPressed:
{
sliderRoot.manuallyChanged = true
upperHandleLabel.setValue(upperHandleLabel.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1))
}
// dragging // dragging
MouseArea { MouseArea {
@ -256,7 +254,7 @@ Item {
maximumValue: sliderRoot.maximumValue maximumValue: sliderRoot.maximumValue
value: sliderRoot.upperValue value: sliderRoot.upperValue
busy: UM.SimulationView.busy busy: UM.SimulationView.busy
setValue: upperHandle.setValueAndStopSimulation // connect callback functions setValue: upperHandle.setValueManually // connect callback functions
} }
} }
@ -296,7 +294,7 @@ Item {
return result return result
} }
function setValueAndStopSimulation(value) function setValueManually(value)
{ {
sliderRoot.manuallyChanged = true sliderRoot.manuallyChanged = true
lowerHandle.setValue(value) lowerHandle.setValue(value)
@ -352,7 +350,7 @@ Item {
maximumValue: sliderRoot.maximumValue maximumValue: sliderRoot.maximumValue
value: sliderRoot.lowerValue value: sliderRoot.lowerValue
busy: UM.SimulationView.busy busy: UM.SimulationView.busy
setValue: lowerHandle.setValueAndStopSimulation // connect callback functions setValue: lowerHandle.setValueManually // connect callback functions
} }
} }
} }

View file

@ -36,16 +36,16 @@ Item {
property bool pathsVisible: true property bool pathsVisible: true
property bool manuallyChanged: true // Indicates whether the value was changed manually or during simulation property bool manuallyChanged: true // Indicates whether the value was changed manually or during simulation
function getHandleValueFromSliderHandle () { function getHandleValueFromSliderHandle() {
return handle.getValue() return handle.getValue()
} }
function setHandleValue (value) { function setHandleValue(value) {
handle.setValue(value) handle.setValue(value)
updateRangeHandle() updateRangeHandle()
} }
function updateRangeHandle () { function updateRangeHandle() {
rangeHandle.width = handle.x - sliderRoot.handleSize rangeHandle.width = handle.x - sliderRoot.handleSize
} }
@ -97,7 +97,7 @@ Item {
color: handleLabel.activeFocus ? sliderRoot.handleActiveColor : sliderRoot.handleColor color: handleLabel.activeFocus ? sliderRoot.handleActiveColor : sliderRoot.handleColor
visible: sliderRoot.pathsVisible visible: sliderRoot.pathsVisible
function onHandleDragged () { function onHandleDragged() {
sliderRoot.manuallyChanged = true sliderRoot.manuallyChanged = true
// update the range handle // update the range handle
@ -108,15 +108,21 @@ Item {
} }
// get the value based on the slider position // get the value based on the slider position
function getValue () { function getValue() {
var result = x / (sliderRoot.width - sliderRoot.handleSize) var result = x / (sliderRoot.width - sliderRoot.handleSize)
result = result * sliderRoot.maximumValue result = result * sliderRoot.maximumValue
result = sliderRoot.roundValues ? Math.round(result) : result result = sliderRoot.roundValues ? Math.round(result) : result
return result return result
} }
function setValueManually(value)
{
sliderRoot.manuallyChanged = true
handle.setValue(value)
}
// set the slider position based on the value // set the slider position based on the value
function setValue (value) { function setValue(value) {
// Normalize values between range, since using arrow keys will create out-of-the-range values // Normalize values between range, since using arrow keys will create out-of-the-range values
value = sliderRoot.normalizeValue(value) value = sliderRoot.normalizeValue(value)
@ -130,16 +136,8 @@ Item {
sliderRoot.updateRangeHandle() sliderRoot.updateRangeHandle()
} }
Keys.onRightPressed: Keys.onRightPressed: handleLabel.setValue(handleLabel.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1))
{ Keys.onLeftPressed: handleLabel.setValue(handleLabel.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1))
sliderRoot.manuallyChanged = true
handleLabel.setValue(handleLabel.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1))
}
Keys.onLeftPressed:
{
sliderRoot.manuallyChanged = true
handleLabel.setValue(handleLabel.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1))
}
// dragging // dragging
MouseArea { MouseArea {
@ -172,7 +170,7 @@ Item {
maximumValue: sliderRoot.maximumValue maximumValue: sliderRoot.maximumValue
value: sliderRoot.handleValue value: sliderRoot.handleValue
busy: UM.SimulationView.busy busy: UM.SimulationView.busy
setValue: handle.setValue // connect callback functions setValue: handle.setValueManually // connect callback functions
} }
} }
} }