2 changed files with 82 additions and 0 deletions
@ -0,0 +1,81 @@
@@ -0,0 +1,81 @@
|
||||
import QtQuick 2.5 |
||||
import QtQuick.Controls 1.4 |
||||
|
||||
import QGroundControl.ScreenTools 1.0 |
||||
import QGroundControl.Palette 1.0 |
||||
|
||||
/// The SliderSwitch control implements a sliding switch control similar to the power off |
||||
/// control on an iPhone. |
||||
Rectangle { |
||||
id: _root |
||||
width: label.contentWidth + (_diameter * 2) + (_border * 4) |
||||
radius: height /2 |
||||
color: qgcPal.window |
||||
|
||||
signal accept ///< Action confirmed |
||||
signal reject ///< Action rejected |
||||
|
||||
property string confirmText ///< Text for slider |
||||
|
||||
property real _border: 4 |
||||
property real _diameter: height - (_border * 2) |
||||
|
||||
QGCPalette { id: qgcPal; colorGroupEnabled: true } |
||||
|
||||
QGCLabel { |
||||
id: label |
||||
anchors.horizontalCenter: parent.horizontalCenter |
||||
anchors.verticalCenter: parent.verticalCenter |
||||
text: "Slide to " + confirmText |
||||
} |
||||
|
||||
Rectangle { |
||||
id: slider |
||||
x: _border |
||||
y: _border |
||||
height: _diameter |
||||
width: _diameter |
||||
radius: _diameter / 2 |
||||
color: qgcPal.windowShade |
||||
opacity: 0.8 |
||||
|
||||
MouseArea { |
||||
id: sliderDragArea |
||||
anchors.fill: parent |
||||
onClicked: _root.accept() |
||||
drag.target: slider |
||||
drag.axis: Drag.XAxis |
||||
drag.minimumX: _border |
||||
drag.maximumX: _maxXDrag |
||||
|
||||
property real _maxXDrag: _root.width - ((_diameter + _border) * 2) |
||||
property bool dragActive: drag.active |
||||
|
||||
onDragActiveChanged: { |
||||
if (!sliderDragArea.drag.active) { |
||||
if (slider.x > _maxXDrag - _border) { |
||||
_root.accept() |
||||
} |
||||
slider.x = _border |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
Rectangle { |
||||
id: cancel |
||||
anchors.rightMargin: _border |
||||
anchors.right: parent.right |
||||
anchors.verticalCenter: parent.verticalCenter |
||||
height: _diameter |
||||
width: _diameter |
||||
radius: _diameter / 2 |
||||
color: qgcPal.windowShade |
||||
opacity: 0.8 |
||||
|
||||
MouseArea { |
||||
anchors.fill: parent |
||||
onClicked: _root.reject() |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue