mirror of
				https://github.com/Swordfish90/cool-retro-term.git
				synced 2025-10-30 22:54:21 +00:00 
			
		
		
		
	Fixing checkable slider. It now behaves consistently and avoids binding loops.
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
| @@ -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; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -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 | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user