Index: sources/gui/qml/compounds/ValueAdjuster.qml =================================================================== diff -u -r5d7e02ed6481cc6ae1c944a5ba1687766f7f8375 -r10d95daf091fedda008906727088648f66ae5bac --- sources/gui/qml/compounds/ValueAdjuster.qml (.../ValueAdjuster.qml) (revision 5d7e02ed6481cc6ae1c944a5ba1687766f7f8375) +++ sources/gui/qml/compounds/ValueAdjuster.qml (.../ValueAdjuster.qml) (revision 10d95daf091fedda008906727088648f66ae5bac) @@ -26,10 +26,9 @@ property real value : 0 property real defaultValue: 0 property real step : 0 - property real actualValue : 0 property bool isActive : false property bool editable : true - property bool canOff : false + property bool canOff : false property bool canRefresh : false // fix floating-point precision issue @@ -41,28 +40,38 @@ readonly property bool canDecrement : isActive ? canOff ? value > 0 : value > minimum : true + signal didChange (real vValue) + signal didActiveChange (bool vState) + onIsActiveChanged : { - if ( canRefresh ) { canRefresh = false; return; } + if ( canRefresh ) { canRefresh = false; return; } - if ( isActive ) { _root.value = _root.defaultValue } + if ( isActive ) { didChange(_root.defaultValue) } } - function refresh () { value = actualValue; canRefresh = true } + function refresh() { canRefresh = true } - function clear() { _root.isActive = false } + function clear() { didActiveChange(false) } function increment() { - if ( ! isActive ) { isActive = true; return; } + let tValue = value + if ( ! isActive ) { didActiveChange(true); return; } - if ( canOff ) { value = val < minVal ? minVal : val + stepVal } - else { value += stepVal } + if ( canOff ) { tValue = val < minVal ? minVal : val + stepVal } + else { tValue += stepVal } + + didChange(tValue) + } - function decrement() { - if ( ! isActive ) { isActive = true; return; } + function decrement(vValue) { + let tValue = value + if ( ! isActive ) { didActiveChange(true); return; } - if ( canOff ) { value = val > minVal ? val - stepVal : 0 } - else { value -= stepVal } + if ( canOff ) { tValue = val > minVal ? val - stepVal : 0 } + else { tValue -= stepVal } + + didChange(tValue) } Text { id: _text @@ -122,7 +131,7 @@ pressAndHoldInterval: 0 onClicked: { - if ( _root.editable ) { isActive = true; focus = true } + if ( _root.editable ) { didActiveChange(true); focus = true } _slider.opacity = 0 } @@ -134,7 +143,7 @@ } onPressAndHold: { - if ( _root.editable ) { isActive = true; focus = true } + if ( _root.editable ) { didActiveChange(true); focus = true } _sliderMouseArea.grabbed = true } @@ -146,7 +155,8 @@ _slider.pos = Math.max(0, Math.min(1, mouse.x / parent.width)) let raw = _slider.from + _slider.pos * (_slider.to - _slider.from) let stepped = Math.round((raw - _slider.from) / _root.step) * _root.step + _slider.from - _root.value = stepped + didChange(stepped) +// _root.value = stepped } } @@ -180,6 +190,7 @@ visible : _root.editable iconImageSource : enabled ? "qrc:/images/iArrowLeft" : "qrc:/images/iArrowLeftDisabled" +// onClicked : didDecrement() onClicked : decrement() } @@ -194,6 +205,7 @@ visible : _root.editable iconImageSource : enabled ? "qrc:/images/iArrowRight" : "qrc:/images/iArrowRightDisabled" +// onClicked : didIncrement() onClicked : increment() } }