diff --git a/qgcresources.qrc b/qgcresources.qrc
index d7fbf236d05190e3375b2124ed425f4676dc68dc..c3b12d2b28cf3587838cc39d76439c6a51802c44 100644
--- a/qgcresources.qrc
+++ b/qgcresources.qrc
@@ -136,8 +136,10 @@
resources/Antenna_RC.svg
resources/Antenna_T.svg
resources/ArrowDown.svg
+ resources/ArrowRight.svg
resources/buttonLeft.svg
resources/buttonRight.svg
+ resources/cancel.svg
resources/gear.svg
resources/JoystickBezel.png
resources/JoystickBezelLight.png
diff --git a/resources/ArrowRight.svg b/resources/ArrowRight.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b67347b1534a9543db0099790236336e83d12fc3
--- /dev/null
+++ b/resources/ArrowRight.svg
@@ -0,0 +1,17 @@
+
+
+
diff --git a/resources/cancel.svg b/resources/cancel.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1b124e8ba4d7e1ba5fa55d755bddb8b9f7afea48
--- /dev/null
+++ b/resources/cancel.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml
index bc9722211c6c9b363fbae728b0e5414a67e9bd15..fa6f02a468f8cc02264e9bd21ffc4d3a20fa4c5f 100644
--- a/src/FlightDisplay/FlightDisplayViewWidgets.qml
+++ b/src/FlightDisplay/FlightDisplayViewWidgets.qml
@@ -40,7 +40,7 @@ Item {
property alias guidedModeBar: _guidedModeBar
- property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
+ property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
property bool _isSatellite: _mainIsMap ? _flightMap ? _flightMap.isSatelliteMap : true : true
readonly property real _margins: ScreenTools.defaultFontPixelHeight / 2
@@ -330,6 +330,13 @@ Item {
}
}
+ function rejectGuidedModeConfirm() {
+ guidedModeConfirm.visible = false
+ guidedModeBar.visible = true
+ altitudeSlider.visible = false
+ _flightMap._gotoHereCoordinate = QtPositioning.coordinate()
+ }
+
function confirmAction(actionCode) {
confirmActionCode = actionCode
switch (confirmActionCode) {
@@ -374,32 +381,52 @@ Item {
spacing: _margins
QGCButton {
- text: _activeVehicle.armed ? (_activeVehicle.flying ? "Emergency Stop" : "Disarm") : "Arm"
- onClicked: _guidedModeBar.confirmAction(_activeVehicle.armed ? (_activeVehicle.flying ? _guidedModeBar.confirmEmergencyStop : _guidedModeBar.confirmDisarm) : _guidedModeBar.confirmArm)
+ text: _activeVehicle ? (_activeVehicle.armed ? (_activeVehicle.flying ? "Emergency Stop" : "Disarm") : "Arm") : ""
+ onClicked: {
+ if(_activeVehicle) {
+ _guidedModeBar.confirmAction(_activeVehicle.armed ? (_activeVehicle.flying ? _guidedModeBar.confirmEmergencyStop : _guidedModeBar.confirmDisarm) : _guidedModeBar.confirmArm)
+ }
+ }
}
QGCButton {
text: "RTL"
- visible: _activeVehicle.guidedModeSupported && _activeVehicle.flying
- onClicked: _guidedModeBar.confirmAction(_guidedModeBar.confirmHome)
+ visible: _activeVehicle && _activeVehicle.guidedModeSupported && _activeVehicle.flying
+ onClicked: {
+ if(_activeVehicle) {
+ _guidedModeBar.confirmAction(_guidedModeBar.confirmHome)
+ }
+ }
}
QGCButton {
- text: _activeVehicle.flying ? "Land" : "Takeoff"
- visible: _activeVehicle.guidedModeSupported && _activeVehicle.armed
- onClicked: _guidedModeBar.confirmAction(_activeVehicle.flying ? _guidedModeBar.confirmLand : _guidedModeBar.confirmTakeoff)
+ text: _activeVehicle ? (_activeVehicle.flying ? "Land" : "Takeoff") : ""
+ visible: _activeVehicle && _activeVehicle.guidedModeSupported && _activeVehicle.armed
+ onClicked: {
+ if(_activeVehicle) {
+ _guidedModeBar.confirmAction(_activeVehicle.flying ? _guidedModeBar.confirmLand : _guidedModeBar.confirmTakeoff)
+ }
+ }
}
QGCButton {
text: "Pause"
- visible: _activeVehicle.pauseVehicleSupported && _activeVehicle.flying
- onClicked: _activeVehicle.pauseVehicle()
+ visible: _activeVehicle && _activeVehicle.pauseVehicleSupported && _activeVehicle.flying
+ onClicked: {
+ if(_activeVehicle) {
+ _activeVehicle.pauseVehicle()
+ }
+ }
}
QGCButton {
text: "Change Altitude"
- visible: _activeVehicle.guidedModeSupported && _activeVehicle.armed
- onClicked: _guidedModeBar.confirmAction(_guidedModeBar.confirmChangeAlt)
+ visible: _activeVehicle && _activeVehicle.guidedModeSupported && _activeVehicle.armed
+ onClicked: {
+ if(_activeVehicle) {
+ _guidedModeBar.confirmAction(_guidedModeBar.confirmChangeAlt)
+ }
+ }
}
}
@@ -439,12 +466,21 @@ Item {
}*/
} // Rectangle - Guided mode buttons
+ MouseArea {
+ anchors.fill: parent
+ enabled: guidedModeConfirm.visible
+ onClicked: {
+ _guidedModeBar.rejectGuidedModeConfirm()
+ }
+ }
+
// Action confirmation control
SliderSwitch {
id: guidedModeConfirm
anchors.top: _guidedModeBar.top
anchors.bottom: _guidedModeBar.bottom
anchors.horizontalCenter: parent.horizontalCenter
+ //showReject: true
visible: false
z: QGroundControl.zOrderWidgets
@@ -456,10 +492,7 @@ Item {
}
onReject: {
- guidedModeConfirm.visible = false
- guidedModeBar.visible = true
- altitudeSlider.visible = false
- _flightMap._gotoHereCoordinate = QtPositioning.coordinate()
+ _guidedModeBar.rejectGuidedModeConfirm()
}
}
diff --git a/src/QmlControls/SliderSwitch.qml b/src/QmlControls/SliderSwitch.qml
index 3d0e6d3a4dfdd7d1231a924c0a1f1602350435bc..f45608a565e8c49cbccfe9cf443867ae49deeb9c 100644
--- a/src/QmlControls/SliderSwitch.qml
+++ b/src/QmlControls/SliderSwitch.qml
@@ -8,7 +8,7 @@ import QGroundControl.Palette 1.0
/// control on an iPhone.
Rectangle {
id: _root
- width: label.contentWidth + (_diameter * 2) + (_border * 4)
+ width: label.contentWidth + (_diameter * 2.5) + (_border * 4)
radius: height /2
color: qgcPal.window
@@ -16,6 +16,7 @@ Rectangle {
signal reject ///< Action rejected
property string confirmText ///< Text for slider
+ property bool showReject: false
property real _border: 4
property real _diameter: height - (_border * 2)
@@ -39,11 +40,25 @@ Rectangle {
color: qgcPal.windowShade
opacity: 0.8
+ QGCColoredImage {
+ anchors.centerIn: parent
+ width: parent.width * 0.8
+ height: parent.height * 0.8
+ fillMode: Image.PreserveAspectFit
+ smooth: false
+ mipmap: false
+ color: qgcPal.text
+ cache: false
+ source: "/res/ArrowRight.svg"
+ }
+
+ /*
QGCLabel {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
text: ">"
}
+ */
MouseArea {
id: sliderDragArea
@@ -54,7 +69,7 @@ Rectangle {
drag.minimumX: _border
drag.maximumX: _maxXDrag
- property real _maxXDrag: _root.width - ((_diameter + _border) * 2)
+ property real _maxXDrag: _root.width - ((_diameter + _border) * (showReject ? 2 : 1))
property bool dragActive: drag.active
onDragActiveChanged: {
@@ -78,12 +93,24 @@ Rectangle {
radius: _diameter / 2
color: qgcPal.windowShade
opacity: 0.8
+ visible: showReject
+
+ Image {
+ anchors.centerIn: parent
+ width: parent.width * 0.8
+ height: parent.height * 0.8
+ fillMode: Image.PreserveAspectFit
+ smooth: true
+ source: "/res/cancel.svg"
+ }
+ /*
QGCLabel {
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
text: "X"
}
+ */
MouseArea {
anchors.fill: parent