Fixing checkable slider. It now behaves consistently and avoids binding loops.

This commit is contained in:
Filippo Scognamiglio 2014-08-09 14:45:01 +02:00
parent 1c97a08b8d
commit abb485f828
3 changed files with 47 additions and 28 deletions

View File

@ -23,30 +23,48 @@ import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
RowLayout {
property bool enabled: true
property alias name: check.text
property double value: (check.checked) ? _value : 0.0
property alias _value: slider.value
property double value
property alias min_value: slider.minimumValue
property alias max_value: slider.maximumValue
property alias stepSize: slider.stepSize
signal newValue(real newValue);
id: setting_component
anchors.left: parent.left
anchors.right: parent.right
spacing: 25
onValueChanged: {
check.checked = !(value == 0);
if(check.checked)
slider.value = value;
}
CheckBox{
id: check
implicitWidth: 150
Component.onCompleted: checked = (_value !== 0);
enabled: parent.enabled
onClicked: {
if(!checked){
checked = false;
slider.enabled = false;
newValue(0);
} else {
checked = true;
newValue(slider.value);
slider.enabled = true;
}
}
}
Slider{
id: slider
stepSize: parent.stepSize
Layout.fillWidth: true
enabled: check.checked && parent.enabled
onValueChanged: {
newValue(value);
}
}
Text{
id: textfield

View File

@ -30,49 +30,49 @@ Tab{
anchors.fill: parent
CheckableSlider{
name: qsTr("Bloom")
onValueChanged: shadersettings.bloom_strength = value
_value: shadersettings.bloom_strength
onNewValue: shadersettings.bloom_strength = newValue
value: shadersettings.bloom_strength
}
CheckableSlider{
name: qsTr("Motion Blur")
onValueChanged: shadersettings.motion_blur = value
_value: shadersettings.motion_blur
onNewValue: shadersettings.motion_blur = newValue
value: shadersettings.motion_blur
}
CheckableSlider{
name: qsTr("Noise")
onValueChanged: shadersettings.noise_strength = value
_value: shadersettings.noise_strength
onNewValue: shadersettings.noise_strength = newValue
value: shadersettings.noise_strength
}
CheckableSlider{
name: qsTr("Jitter")
onValueChanged: shadersettings.jitter = value
_value: shadersettings.jitter
onNewValue: shadersettings.jitter = newValue
value: shadersettings.jitter
}
CheckableSlider{
name: qsTr("Glow")
onValueChanged: shadersettings.glowing_line_strength = value;
_value: shadersettings.glowing_line_strength
onNewValue: shadersettings.glowing_line_strength = newValue;
value: shadersettings.glowing_line_strength
}
CheckableSlider{
name: qsTr("Screen distortion")
onValueChanged: shadersettings.screen_distortion = value;
_value: shadersettings.screen_distortion;
onNewValue: shadersettings.screen_distortion = newValue;
value: shadersettings.screen_distortion;
}
CheckableSlider{
name: qsTr("Ambient light")
onValueChanged: shadersettings.ambient_light = value;
_value: shadersettings.ambient_light
onNewValue: shadersettings.ambient_light = newValue;
value: shadersettings.ambient_light
enabled: shadersettings.frames_index !== 0
}
CheckableSlider{
name: qsTr("Brightness flickering")
onValueChanged: shadersettings.brightness_flickering= value;
_value: shadersettings.brightness_flickering;
onNewValue: shadersettings.brightness_flickering = newValue;
value: shadersettings.brightness_flickering;
}
CheckableSlider{
name: qsTr("Horizontal flickering")
onValueChanged: shadersettings.horizontal_sincronization = value;
_value: shadersettings.horizontal_sincronization;
onNewValue: shadersettings.horizontal_sincronization = newValue;
value: shadersettings.horizontal_sincronization;
}
}
}

View File

@ -115,13 +115,14 @@ Tab{
Layout.fillWidth: true
CheckableSlider{
name: qsTr("Chroma Color")
onValueChanged: shadersettings.chroma_color = value
_value: shadersettings.chroma_color
onNewValue: shadersettings.chroma_color = newValue
value: shadersettings.chroma_color
}
CheckableSlider{
name: qsTr("Saturation Color")
onValueChanged: shadersettings.saturation_color = value
_value: shadersettings.saturation_color
onNewValue: shadersettings.saturation_color = newValue
value: shadersettings.saturation_color
enabled: shadersettings.chroma_color !== 0
}
}
}