diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc
index a8e2452a8d788b950f95cc9ac6c03873d2faa16b..079b5a43ae32bea57fd12ba230a79afbf830e860 100644
--- a/qgroundcontrol.qrc
+++ b/qgroundcontrol.qrc
@@ -194,6 +194,7 @@
src/FlightDisplay/FlightDisplayViewMap.qml
src/FlightDisplay/FlightDisplayViewVideo.qml
src/FlightDisplay/FlightDisplayViewWidgets.qml
+ src/FlightDisplay/FlyViewToolStrip.qml
src/FlightDisplay/GuidedActionConfirm.qml
src/FlightDisplay/GuidedActionList.qml
src/FlightDisplay/GuidedActionsController.qml
diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml
index 19cdf9f0fccac6aefc5f673d6c2c6f712ca0462a..5fe943593c399b2b0ccb0472476334a26449944a 100644
--- a/src/FlightDisplay/FlightDisplayView.qml
+++ b/src/FlightDisplay/FlightDisplayView.qml
@@ -39,7 +39,6 @@ Item {
}
}
- property alias guidedController: guidedActionsController
property bool activeVehicleJoystickEnabled: activeVehicle ? activeVehicle.joystickEnabled : false
property bool mainIsMap: QGroundControl.videoManager.hasVideo ? QGroundControl.loadBoolGlobalSetting(_mainIsMapKey, true) : true
property bool isBackgroundDark: mainIsMap ? (mainWindow.flightDisplayMap ? mainWindow.flightDisplayMap.isSatelliteMap : true) : true
@@ -54,17 +53,12 @@ Item {
property real _margins: ScreenTools.defaultFontPixelWidth / 2
property real _pipSize: mainWindow.width * 0.2
property alias _guidedController: guidedActionsController
- property alias _altitudeSlider: altitudeSlider
+ property alias _guidedConfirm: guidedActionConfirm
+ property alias _guidedList: guidedActionList
+ property alias _guidedSlider: altitudeSlider
+ property real _guidedZOrder: _flightVideoPipControl.z + 1
property real _toolsMargin: ScreenTools.defaultFontPixelWidth * 0.75
- readonly property var _dynamicCameras: activeVehicle ? activeVehicle.dynamicCameras : null
- readonly property bool _isCamera: _dynamicCameras ? _dynamicCameras.cameras.count > 0 : false
- readonly property real _defaultRoll: 0
- readonly property real _defaultPitch: 0
- readonly property real _defaultHeading: 0
- readonly property real _defaultAltitudeAMSL: 0
- readonly property real _defaultGroundSpeed: 0
- readonly property real _defaultAirSpeed: 0
readonly property string _mapName: "FlightDisplayView"
readonly property string _showMapBackgroundKey: "/showMapBackground"
readonly property string _mainIsMapKey: "MainFlyWindowIsMap"
@@ -129,16 +123,16 @@ Item {
Connections {
target: mainWindow
- onArmVehicle: guidedController.confirmAction(guidedController.actionArm)
+ onArmVehicle: _guidedController.confirmAction(_guidedController.actionArm)
onDisarmVehicle: {
- if (guidedController.showEmergenyStop) {
- guidedController.confirmAction(guidedController.actionEmergencyStop)
+ if (_guidedController.showEmergenyStop) {
+ _guidedController.confirmAction(_guidedController.actionEmergencyStop)
} else {
- guidedController.confirmAction(guidedController.actionDisarm)
+ _guidedController.confirmAction(_guidedController.actionDisarm)
}
}
- onVtolTransitionToFwdFlight: guidedController.confirmAction(guidedController.actionVtolTransitionToFwdFlight)
- onVtolTransitionToMRFlight: guidedController.confirmAction(guidedController.actionVtolTransitionToMRFlight)
+ onVtolTransitionToFwdFlight: _guidedController.confirmAction(_guidedController.actionVtolTransitionToFwdFlight)
+ onVtolTransitionToMRFlight: _guidedController.confirmAction(_guidedController.actionVtolTransitionToMRFlight)
onFlightDisplayMapChanged: setStates()
}
@@ -241,7 +235,7 @@ Item {
text: qsTr("Resume Mission From Waypoint %1").arg(_guidedController._resumeMissionIndex)
onClicked: {
- guidedController.executeAction(_guidedController.actionResumeMission, null, null)
+ _guidedController.executeAction(_guidedController.actionResumeMission, null, null)
hideDialog()
}
}
@@ -559,141 +553,28 @@ Item {
property Fact _virtualJoystickCentralized: QGroundControl.settingsManager.appSettings.virtualJoystickCentralized
}
- ToolStrip {
- visible: (activeVehicle ? activeVehicle.guidedModeSupported : true) && !QGroundControl.videoManager.fullScreen
- id: toolStrip
-
- anchors.leftMargin: isInstrumentRight() ? _toolsMargin : undefined
- anchors.left: isInstrumentRight() ? _mapAndVideo.left : undefined
- anchors.rightMargin:isInstrumentRight() ? undefined : ScreenTools.defaultFontPixelWidth
- anchors.right: isInstrumentRight() ? undefined : _mapAndVideo.right
- anchors.topMargin: _toolsMargin
- anchors.top: parent.top
- z: _mapAndVideo.z + 4
- maxHeight: parent.height - toolStrip.y + (_flightVideo.visible ? (_flightVideo.y - parent.height) : 0)
- title: qsTr("Fly")
-
- property bool _anyActionAvailable: _guidedController.showStartMission || _guidedController.showResumeMission || _guidedController.showChangeAlt || _guidedController.showLandAbort
- property var _actionModel: [
- {
- title: _guidedController.startMissionTitle,
- text: _guidedController.startMissionMessage,
- action: _guidedController.actionStartMission,
- visible: _guidedController.showStartMission
- },
- {
- title: _guidedController.continueMissionTitle,
- text: _guidedController.continueMissionMessage,
- action: _guidedController.actionContinueMission,
- visible: _guidedController.showContinueMission
- },
- {
- title: _guidedController.changeAltTitle,
- text: _guidedController.changeAltMessage,
- action: _guidedController.actionChangeAlt,
- visible: _guidedController.showChangeAlt
- },
- {
- title: _guidedController.landAbortTitle,
- text: _guidedController.landAbortMessage,
- action: _guidedController.actionLandAbort,
- visible: _guidedController.showLandAbort
- }
- ]
-
- model: [
- {
- name: "Checklist",
- iconSource: "/qmlimages/check.svg",
- buttonVisible: _useChecklist,
- buttonEnabled: _useChecklist && activeVehicle && !activeVehicle.armed,
- },
- {
- name: _guidedController.takeoffTitle,
- iconSource: "/res/takeoff.svg",
- buttonVisible: _guidedController.showTakeoff || !_guidedController.showLand,
- buttonEnabled: _guidedController.showTakeoff,
- action: _guidedController.actionTakeoff
- },
- {
- name: _guidedController.landTitle,
- iconSource: "/res/land.svg",
- buttonVisible: _guidedController.showLand && !_guidedController.showTakeoff,
- buttonEnabled: _guidedController.showLand,
- action: _guidedController.actionLand
- },
- {
- name: _guidedController.rtlTitle,
- iconSource: "/res/rtl.svg",
- buttonVisible: true,
- buttonEnabled: _guidedController.showRTL,
- action: _guidedController.actionRTL
- },
- {
- name: _guidedController.pauseTitle,
- iconSource: "/res/pause-mission.svg",
- buttonVisible: _guidedController.showPause,
- buttonEnabled: _guidedController.showPause,
- action: _guidedController.actionPause
- },
- {
- name: qsTr("Action"),
- iconSource: "/res/action.svg",
- buttonVisible: _anyActionAvailable,
- buttonEnabled: true,
- action: -1
- }
- ]
-
- onClicked: {
- if(index === 0) {
- checklistDropPanel.open()
- } else {
- guidedActionsController.closeAll()
- var action = model[index].action
- if (action === -1) {
- guidedActionList.model = _actionModel
- guidedActionList.visible = true
- } else {
- _guidedController.confirmAction(action)
- }
- }
-
- }
+ FlyViewToolStrip {
+ id: toolStrip
+ anchors.leftMargin: isInstrumentRight() ? _toolsMargin : undefined
+ anchors.left: isInstrumentRight() ? _mapAndVideo.left : undefined
+ anchors.rightMargin: isInstrumentRight() ? undefined : ScreenTools.defaultFontPixelWidth
+ anchors.right: isInstrumentRight() ? undefined : _mapAndVideo.right
+ anchors.topMargin: _toolsMargin
+ anchors.top: parent.top
+ z: _mapAndVideo.z + 4
+ maxHeight: parent.height - toolStrip.y + (_flightVideo.visible ? (_flightVideo.y - parent.height) : 0)
+ guidedActionsController: _guidedController
+ guidedActionList: _guidedList
+ preFlightCheckList: checklistDropPanel
+ visible: (activeVehicle ? activeVehicle.guidedModeSupported : true) && !QGroundControl.videoManager.fullScreen
}
GuidedActionsController {
id: guidedActionsController
missionController: _missionController
- confirmDialog: guidedActionConfirm
- actionList: guidedActionList
- altitudeSlider: _altitudeSlider
- z: _flightVideoPipControl.z + 1
-
- onShowStartMissionChanged: {
- if (showStartMission) {
- confirmAction(actionStartMission)
- }
- }
-
- onShowContinueMissionChanged: {
- if (showContinueMission) {
- confirmAction(actionContinueMission)
- }
- }
-
- onShowLandAbortChanged: {
- if (showLandAbort) {
- confirmAction(actionLandAbort)
- }
- }
-
- /// Close all dialogs
- function closeAll() {
- guidedActionConfirm.visible = false
- guidedActionList.visible = false
- altitudeSlider.visible = false
- }
+ confirmDialog: _guidedConfirm
+ actionList: _guidedList
+ altitudeSlider: _guidedSlider
}
GuidedActionConfirm {
@@ -701,8 +582,9 @@ Item {
anchors.margins: _margins
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
+ z: _guidedZOrder
guidedController: _guidedController
- altitudeSlider: _altitudeSlider
+ altitudeSlider: _guidedSlider
}
GuidedActionList {
@@ -710,6 +592,7 @@ Item {
anchors.margins: _margins
anchors.bottom: parent.bottom
anchors.horizontalCenter: parent.horizontalCenter
+ z: _guidedZOrder
guidedController: _guidedController
}
@@ -721,7 +604,7 @@ Item {
anchors.topMargin: ScreenTools.toolbarHeight + _margins
anchors.top: parent.top
anchors.bottom: parent.bottom
- z: _guidedController.z
+ z: _guidedZOrder
radius: ScreenTools.defaultFontPixelWidth / 2
width: ScreenTools.defaultFontPixelWidth * 10
color: qgcPal.window
diff --git a/src/FlightDisplay/FlyViewToolStrip.qml b/src/FlightDisplay/FlyViewToolStrip.qml
new file mode 100644
index 0000000000000000000000000000000000000000..f1c0b2152bfad540df585c110666df6d7106d4d3
--- /dev/null
+++ b/src/FlightDisplay/FlyViewToolStrip.qml
@@ -0,0 +1,107 @@
+/****************************************************************************
+ *
+ * (c) 2009-2020 QGROUNDCONTROL PROJECT
+ *
+ * QGroundControl is licensed according to the terms in the file
+ * COPYING.md in the root of the source code directory.
+ *
+ ****************************************************************************/
+
+import QGroundControl 1.0
+import QGroundControl.Controls 1.0
+
+ToolStrip {
+ title: qsTr("Fly")
+
+ property var guidedActionsController
+ property var guidedActionList
+ property var preFlightCheckList
+
+ property bool _anyActionAvailable: guidedActionsController.showStartMission || guidedActionsController.showResumeMission || guidedActionsController.showChangeAlt || guidedActionsController.showLandAbort
+ property var _actionModel: [
+ {
+ title: guidedActionsController.startMissionTitle,
+ text: guidedActionsController.startMissionMessage,
+ action: guidedActionsController.actionStartMission,
+ visible: guidedActionsController.showStartMission
+ },
+ {
+ title: guidedActionsController.continueMissionTitle,
+ text: guidedActionsController.continueMissionMessage,
+ action: guidedActionsController.actionContinueMission,
+ visible: guidedActionsController.showContinueMission
+ },
+ {
+ title: guidedActionsController.changeAltTitle,
+ text: guidedActionsController.changeAltMessage,
+ action: guidedActionsController.actionChangeAlt,
+ visible: guidedActionsController.showChangeAlt
+ },
+ {
+ title: guidedActionsController.landAbortTitle,
+ text: guidedActionsController.landAbortMessage,
+ action: guidedActionsController.actionLandAbort,
+ visible: guidedActionsController.showLandAbort
+ }
+ ]
+
+ model: [
+ {
+ name: "Checklist",
+ iconSource: "/qmlimages/check.svg",
+ buttonVisible: _useChecklist,
+ buttonEnabled: _useChecklist && activeVehicle && !activeVehicle.armed,
+ },
+ {
+ name: guidedActionsController.takeoffTitle,
+ iconSource: "/res/takeoff.svg",
+ buttonVisible: guidedActionsController.showTakeoff || !guidedActionsController.showLand,
+ buttonEnabled: guidedActionsController.showTakeoff,
+ action: guidedActionsController.actionTakeoff
+ },
+ {
+ name: guidedActionsController.landTitle,
+ iconSource: "/res/land.svg",
+ buttonVisible: guidedActionsController.showLand && !guidedActionsController.showTakeoff,
+ buttonEnabled: guidedActionsController.showLand,
+ action: guidedActionsController.actionLand
+ },
+ {
+ name: guidedActionsController.rtlTitle,
+ iconSource: "/res/rtl.svg",
+ buttonVisible: true,
+ buttonEnabled: guidedActionsController.showRTL,
+ action: guidedActionsController.actionRTL
+ },
+ {
+ name: guidedActionsController.pauseTitle,
+ iconSource: "/res/pause-mission.svg",
+ buttonVisible: guidedActionsController.showPause,
+ buttonEnabled: guidedActionsController.showPause,
+ action: guidedActionsController.actionPause
+ },
+ {
+ name: qsTr("Action"),
+ iconSource: "/res/action.svg",
+ buttonVisible: _anyActionAvailable,
+ buttonEnabled: true,
+ action: -1
+ }
+ ]
+
+ onClicked: {
+ if(index === 0) {
+ preFlightCheckList.open()
+ } else {
+ guidedActionsController.closeAll()
+ var action = model[index].action
+ if (action === -1) {
+ guidedActionList.model = _actionModel
+ guidedActionList.visible = true
+ } else {
+ guidedActionsController.confirmAction(action)
+ }
+ }
+
+ }
+}
diff --git a/src/FlightDisplay/GuidedActionConfirm.qml b/src/FlightDisplay/GuidedActionConfirm.qml
index 40745c9f29a6d84e9ee0cca694d3ab764e041363..edbe014882974c6331307a099d3c02aae1c6c89f 100644
--- a/src/FlightDisplay/GuidedActionConfirm.qml
+++ b/src/FlightDisplay/GuidedActionConfirm.qml
@@ -24,7 +24,6 @@ Rectangle {
color: qgcPal.window
border.color: _emergencyAction ? "red" : qgcPal.windowShade
border.width: _emergencyAction ? 4 : 1
- z: guidedController.z
visible: false
property var guidedController
diff --git a/src/FlightDisplay/GuidedActionList.qml b/src/FlightDisplay/GuidedActionList.qml
index 3bd16e9d89104d640759b154bf90eab0c56c9f97..c4a43e734db8e04f18fa061d0394cfdb597cdd97 100644
--- a/src/FlightDisplay/GuidedActionList.qml
+++ b/src/FlightDisplay/GuidedActionList.qml
@@ -24,7 +24,6 @@ Rectangle {
radius: _margins / 2
color: qgcPal.window
opacity: 0.9
- z: guidedController.z
visible: false
property var guidedController
diff --git a/src/FlightDisplay/GuidedActionsController.qml b/src/FlightDisplay/GuidedActionsController.qml
index 1507646aa06455cb5dc5d1749b24aba9a4ea028e..5e8e46b3c7e14893ec107ff3a7f33ee06c0457e9 100644
--- a/src/FlightDisplay/GuidedActionsController.qml
+++ b/src/FlightDisplay/GuidedActionsController.qml
@@ -190,12 +190,18 @@ Item {
console.log("showStartMission", showStartMission)
}
_outputState()
+ if (showStartMission) {
+ confirmAction(actionStartMission)
+ }
}
onShowContinueMissionChanged: {
if (_corePlugin.guidedActionsControllerLogging()) {
console.log("showContinueMission", showContinueMission)
}
_outputState()
+ if (showContinueMission) {
+ confirmAction(actionContinueMission)
+ }
}
onShowRTLChanged: {
if (_corePlugin.guidedActionsControllerLogging()) {
@@ -209,6 +215,11 @@ Item {
}
_outputState()
}
+ onShowLandAbortChanged: {
+ if (showLandAbort) {
+ confirmAction(actionLandAbort)
+ }
+ }
on_VehicleFlyingChanged: {
_outputState()
@@ -228,6 +239,12 @@ Item {
_vehicleInMissionMode = activeVehicle ? _flightMode === activeVehicle.missionFlightMode : false // Must be last to get correct signalling for showStartMission popups
}
+ function closeAll() {
+ confirmDialog.visible = false
+ actionList.visible = false
+ altitudeSlider.visible = false
+ }
+
// Called when an action is about to be executed in order to confirm
function confirmAction(actionCode, actionData, mapIndicator) {
var showImmediate = true
diff --git a/src/QmlControls/QGroundControl/FlightDisplay/qmldir b/src/QmlControls/QGroundControl/FlightDisplay/qmldir
index fbb1c6060ad81a0b45a6ffc764bbfa8b792fd565..d52aaeadfff7fe61c2c567b34d9e85f38ebf82c5 100644
--- a/src/QmlControls/QGroundControl/FlightDisplay/qmldir
+++ b/src/QmlControls/QGroundControl/FlightDisplay/qmldir
@@ -4,6 +4,7 @@ FlightDisplayView 1.0 FlightDisplayView.qml
FlightDisplayViewMap 1.0 FlightDisplayViewMap.qml
FlightDisplayViewVideo 1.0 FlightDisplayViewVideo.qml
FlightDisplayViewWidgets 1.0 FlightDisplayViewWidgets.qml
+FlyViewToolStrip 1.0 FlyViewToolStrip.qml
GuidedActionConfirm 1.0 GuidedActionConfirm.qml
GuidedActionList 1.0 GuidedActionList.qml
GuidedActionsController 1.0 GuidedActionsController.qml