From a7368e17518079219d22972d5b79d3e0045c9024 Mon Sep 17 00:00:00 2001 From: ChrisTerBeke Date: Tue, 10 Oct 2017 17:12:13 +0200 Subject: [PATCH] Re-added active handler functionality in layer slider - CURA-4432 --- plugins/LayerView/LayerSlider.qml | 38 +++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/plugins/LayerView/LayerSlider.qml b/plugins/LayerView/LayerSlider.qml index 74106f0bc8..a7b96e0538 100644 --- a/plugins/LayerView/LayerSlider.qml +++ b/plugins/LayerView/LayerSlider.qml @@ -20,6 +20,7 @@ Item { property color lowerHandleColor: "black" property color rangeHandleColor: "black" property real handleLabelWidth: width + property var activeHandle: upperHandle // track properties property real trackThickness: 4 // width of the slider track @@ -60,6 +61,11 @@ Item { rangeHandle.height = lowerHandle.y - (upperHandle.y + upperHandle.height) } + // set the active handle to show only one label at a time + function setActiveHandle (handle) { + activeHandle = handle + } + // slider track Rectangle { id: track @@ -98,6 +104,15 @@ Item { UM.LayerView.setMinimumLayer(lowerValue) } + function setValue (value) { + var range = sliderRoot.upperValue - sliderRoot.lowerValue + value = Math.min(value, sliderRoot.maximumValue) + value = Math.max(value, sliderRoot.minimumValue + range) + + UM.LayerView.setCurrentLayer(value) + UM.LayerView.setMinimumLayer(value - range) + } + Rectangle { width: sliderRoot.trackThickness - 2 * sliderRoot.trackBorderWidth height: parent.height + sliderRoot.handleSize @@ -116,6 +131,23 @@ Item { } onPositionChanged: parent.onHandleDragged() + onPressed: sliderRoot.setActiveHandle(rangeHandle) + } + + LayerSliderLabel { + id: rangleHandleLabel + + height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height + x: parent.x - width - UM.Theme.getSize("default_margin").width + anchors.verticalCenter: parent.verticalCenter + target: Qt.point(sliderRoot.width, y + height / 2) + visible: sliderRoot.activeHandle == parent + + // custom properties + maximumValue: sliderRoot.maximumValue + value: sliderRoot.upperValue + busy: UM.LayerView.busy + setValue: rangeHandle.setValue // connect callback functions } } @@ -178,6 +210,7 @@ Item { } onPositionChanged: parent.onHandleDragged() + onPressed: sliderRoot.setActiveHandle(upperHandle) } LayerSliderLabel { @@ -187,7 +220,7 @@ Item { x: parent.x - width - UM.Theme.getSize("default_margin").width anchors.verticalCenter: parent.verticalCenter target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.layersVisible + visible: sliderRoot.activeHandle == parent // custom properties maximumValue: sliderRoot.maximumValue @@ -257,6 +290,7 @@ Item { } onPositionChanged: parent.onHandleDragged() + onPressed: sliderRoot.setActiveHandle(lowerHandle) } LayerSliderLabel { @@ -266,7 +300,7 @@ Item { x: parent.x - width - UM.Theme.getSize("default_margin").width anchors.verticalCenter: parent.verticalCenter target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.layersVisible + visible: sliderRoot.activeHandle == parent // custom properties maximumValue: sliderRoot.maximumValue