6import QGroundControl.Controls
7import QGroundControl.FactControls
11 property alias fact: factTextField.fact
12 property alias textFieldPreferredWidth: factTextField.textFieldPreferredWidth
13 property alias textFieldUnitsLabel: factTextField.textFieldUnitsLabel
14 property alias textFieldShowUnits: factTextField.textFieldShowUnits
15 property alias textFieldShowHelp: factTextField.textFieldShowHelp
16 property alias textField: factTextField
17 property alias enableCheckBoxChecked: enableCheckbox.checked
19 property bool showEnableCheckbox: false ///< true: show enable/disable checkbox, false: hide
20 property color backgroundColor: _ftfsBackgroundColor
22 signal enableCheckboxClicked
25 implicitHeight: mainLayout.implicitHeight
26 color: backgroundColor
27 radius: ScreenTools.defaultBorderRadius
29 property bool _loadComplete: false
30 property bool _showSlider: fact.userMin !== undefined && fact.userMax !== undefined
31 property color _ftfsBackgroundColor: Qt.rgba(qgcPal.windowShadeLight.r, qgcPal.windowShadeLight.g, qgcPal.windowShadeLight.b, 0.2)
33 function updateSliderToClampedValue() {
34 if (_showSlider && sliderLoader.item) {
35 let clampedSliderValue = control.fact.value
36 if (clampedSliderValue > control.fact.userMax) {
37 clampedSliderValue = control.fact.userMax
38 } else if (clampedSliderValue < control.fact.userMin) {
39 clampedSliderValue = control.fact.userMin
41 sliderLoader.item.value = clampedSliderValue
45 Component.onCompleted: {
52 function onValueChanged() {
53 control.updateSliderToClampedValue()
57 QGCPalette { id: qgcPal; colorGroupEnabled: true }
65 spacing: ScreenTools.defaultFontPixelWidth
69 Layout.fillWidth: visible
71 visible: control.showEnableCheckbox
73 onClicked: control.enableCheckboxClicked()
76 LabelledFactTextField {
78 Layout.fillWidth: !control.showEnableCheckbox
79 label: control.showEnableCheckbox ? "" : control.label
81 enabled: !control.showEnableCheckbox || enableCheckbox.checked
87 Layout.fillWidth: true
88 sourceComponent: control._showSlider ? sliderComponent : null
89 enabled: !control.showEnableCheckbox || enableCheckbox.checked
91 onLoaded: control.updateSliderToClampedValue()
99 Layout.fillWidth: true
100 from: control.fact.userMin
101 to: control.fact.userMax
102 showBoundaryValues: true
105 if (control._loadComplete) {
106 control.fact.value = slider.value