5import QGroundControl.Controls
7/// The SliderSwitch control implements a sliding switch control similar to the power off
8/// control on an iPhone. It supports holding the space bar to slide the switch.
11 implicitWidth: label.contentWidth + (_diameter * 2.5) + (_border * 4)
12 implicitHeight: label.height * 2.5
14 color: qgcPal.windowShade
16 signal accept ///< Action confirmed
18 property string confirmText ///< Text for slider
19 property alias fontPointSize: label.font.pointSize ///< Point size for text
21 property real _border: 4
22 property real _diameter: height - (_border * 2)
23 property real _dragStartX: _border
24 property real _dragStopX: _root.width - (_diameter + _border)
26 Keys.onSpacePressed: (event) => {
27 if (visible && event.modifiers === Qt.NoModifier && !sliderDragArea.drag.active) {
29 sliderAnimation.start()
33 Keys.onReleased: (event) => {
34 if (visible && event.key === Qt.Key_Space && !event.isAutoRepeat) {
36 resetSpaceBarSliding()
40 function resetSpaceBarSliding() {
44 QGCPalette { id: qgcPal; colorGroupEnabled: true }
48 x: _diameter + _border
49 width: parent.width - x
50 anchors.verticalCenter: parent.verticalCenter
51 horizontalAlignment: Text.AlignHCenter
53 color: qgcPal.buttonText
63 color: qgcPal.primaryButton
66 anchors.centerIn: parent
67 width: parent.width * 0.8
68 height: parent.height * 0.8
69 sourceSize.height: height
70 fillMode: Image.PreserveAspectFit
73 color: qgcPal.buttonText
75 source: "/res/ArrowRight.svg"
78 PropertyAnimation on x {
93 sliderAnimation.stop()
99 anchors.leftMargin: -ScreenTools.defaultFontPixelWidth * 15
102 drag.axis: Drag.XAxis
103 drag.minimumX: _dragStartX
104 drag.maximumX: _dragStopX
105 preventStealing: true
107 property bool dragActive: drag.active
109 onDragActiveChanged: {
110 if (!sliderDragArea.drag.active) {
111 if (slider.x > _dragStopX - _border) {