Commit dcaedd18 authored by Don Gagne's avatar Don Gagne

Merge pull request #3026 from DonLakeFlyer/SliderSwitch

Add new SliderSwitch control, use for Guide mode confirmation
parents a3683701 27fc129b
...@@ -81,6 +81,7 @@ ...@@ -81,6 +81,7 @@
<file alias="QGroundControl/Controls/QGCViewPanel.qml">src/QmlControls/QGCViewPanel.qml</file> <file alias="QGroundControl/Controls/QGCViewPanel.qml">src/QmlControls/QGCViewPanel.qml</file>
<file alias="QGroundControl/Controls/RoundButton.qml">src/QmlControls/RoundButton.qml</file> <file alias="QGroundControl/Controls/RoundButton.qml">src/QmlControls/RoundButton.qml</file>
<file alias="QGroundControl/Controls/SignalStrength.qml">src/ui/toolbar/SignalStrength.qml</file> <file alias="QGroundControl/Controls/SignalStrength.qml">src/ui/toolbar/SignalStrength.qml</file>
<file alias="QGroundControl/Controls/SliderSwitch.qml">src/QmlControls/SliderSwitch.qml</file>
<file alias="QGroundControl/Controls/SubMenuButton.qml">src/QmlControls/SubMenuButton.qml</file> <file alias="QGroundControl/Controls/SubMenuButton.qml">src/QmlControls/SubMenuButton.qml</file>
<file alias="QGroundControl/Controls/VehicleRotationCal.qml">src/QmlControls/VehicleRotationCal.qml</file> <file alias="QGroundControl/Controls/VehicleRotationCal.qml">src/QmlControls/VehicleRotationCal.qml</file>
<file alias="QGroundControl/Controls/VehicleSummaryRow.qml">src/QmlControls/VehicleSummaryRow.qml</file> <file alias="QGroundControl/Controls/VehicleSummaryRow.qml">src/QmlControls/VehicleSummaryRow.qml</file>
......
...@@ -271,8 +271,8 @@ Item { ...@@ -271,8 +271,8 @@ Item {
anchors.margins: _margins anchors.margins: _margins
anchors.bottom: parent.bottom anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
width: (guidedModeButtons.visible ? guidedModeButtons.width : guidedModeConfirm.width) + (_margins * 2) width: guidedModeButtons.width + (_margins * 2)
height: (guidedModeButtons.visible ? guidedModeButtons.height : guidedModeConfirm.height) + (_margins * 2) height: guidedModeButtons.height + (_margins * 2)
color: qgcPal.window color: qgcPal.window
visible: _activeVehicle visible: _activeVehicle
opacity: 0.9 opacity: 0.9
...@@ -289,7 +289,6 @@ Item { ...@@ -289,7 +289,6 @@ Item {
readonly property int confirmRetask: 9 readonly property int confirmRetask: 9
property int confirmActionCode property int confirmActionCode
property string confirmText
function actionConfirmed() { function actionConfirmed() {
switch (confirmActionCode) { switch (confirmActionCode) {
...@@ -335,35 +334,35 @@ Item { ...@@ -335,35 +334,35 @@ Item {
confirmActionCode = actionCode confirmActionCode = actionCode
switch (confirmActionCode) { switch (confirmActionCode) {
case confirmArm: case confirmArm:
_guidedModeBar.confirmText = "arm" guidedModeConfirm.confirmText = "arm"
break; break;
case confirmDisarm: case confirmDisarm:
_guidedModeBar.confirmText = "disarm" guidedModeConfirm.confirmText = "disarm"
break; break;
case confirmEmergencyStop: case confirmEmergencyStop:
_guidedModeBar.confirmText = "emergency stop" guidedModeConfirm.confirmText = "STOP ALL MOTORS!"
break; break;
case confirmTakeoff: case confirmTakeoff:
altitudeSlider.visible = true altitudeSlider.visible = true
altitudeSlider.setInitialValueMeters(10) altitudeSlider.setInitialValueMeters(10)
_guidedModeBar.confirmText = "takeoff" guidedModeConfirm.confirmText = "takeoff"
break; break;
case confirmLand: case confirmLand:
_guidedModeBar.confirmText = "land" guidedModeConfirm.confirmText = "land"
break; break;
case confirmChangeAlt: case confirmChangeAlt:
altitudeSlider.visible = true altitudeSlider.visible = true
altitudeSlider.setInitialValueAppSettingsDistanceUnits(_activeVehicle.altitudeAMSL.value) altitudeSlider.setInitialValueAppSettingsDistanceUnits(_activeVehicle.altitudeAMSL.value)
_guidedModeBar.confirmText = "altitude change" guidedModeConfirm.confirmText = "change altitude"
break; break;
case confirmGoTo: case confirmGoTo:
_guidedModeBar.confirmText = "move" guidedModeConfirm.confirmText = "move vehicle"
break; break;
case confirmRetask: case confirmRetask:
_guidedModeBar.confirmText = "active waypoint change" _guidedModeBar.confirmText = "active waypoint change"
break; break;
} }
guidedModeButtons.visible = false guidedModeBar.visible = false
guidedModeConfirm.visible = true guidedModeConfirm.visible = true
} }
...@@ -404,6 +403,7 @@ Item { ...@@ -404,6 +403,7 @@ Item {
} }
} }
/*
Row { Row {
id: guidedModeConfirm id: guidedModeConfirm
anchors.margins: _margins anchors.margins: _margins
...@@ -436,8 +436,32 @@ Item { ...@@ -436,8 +436,32 @@ Item {
_flightMap._gotoHereCoordinate = QtPositioning.coordinate() _flightMap._gotoHereCoordinate = QtPositioning.coordinate()
} }
} }
}*/
} // Rectangle - Guided mode buttons
// Action confirmation control
SliderSwitch {
id: guidedModeConfirm
anchors.top: _guidedModeBar.top
anchors.bottom: _guidedModeBar.bottom
anchors.horizontalCenter: parent.horizontalCenter
visible: false
z: QGroundControl.zOrderWidgets
onAccept: {
guidedModeConfirm.visible = false
guidedModeBar.visible = true
_guidedModeBar.actionConfirmed()
altitudeSlider.visible = false
} }
} // Column - Vertical tool buttons
onReject: {
guidedModeConfirm.visible = false
guidedModeBar.visible = true
altitudeSlider.visible = false
_flightMap._gotoHereCoordinate = QtPositioning.coordinate()
}
}
//-- Altitude slider //-- Altitude slider
Rectangle { Rectangle {
......
...@@ -32,6 +32,7 @@ QGCViewMessage 1.0 QGCViewMessage.qml ...@@ -32,6 +32,7 @@ QGCViewMessage 1.0 QGCViewMessage.qml
QGCViewPanel 1.0 QGCViewPanel.qml QGCViewPanel 1.0 QGCViewPanel.qml
RoundButton 1.0 RoundButton.qml RoundButton 1.0 RoundButton.qml
SignalStrength 1.0 SignalStrength.qml SignalStrength 1.0 SignalStrength.qml
SliderSwitch 1.0 SliderSwitch.qml
SubMenuButton 1.0 SubMenuButton.qml SubMenuButton 1.0 SubMenuButton.qml
VehicleRotationCal 1.0 VehicleRotationCal.qml VehicleRotationCal 1.0 VehicleRotationCal.qml
VehicleSummaryRow 1.0 VehicleSummaryRow.qml VehicleSummaryRow 1.0 VehicleSummaryRow.qml
......
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()
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment