You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
229 lines
11 KiB
229 lines
11 KiB
8 years ago
|
/****************************************************************************
|
||
|
*
|
||
|
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
|
||
|
*
|
||
|
* QGroundControl is licensed according to the terms in the file
|
||
|
* COPYING.md in the root of the source code directory.
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
|
||
|
import QtQuick 2.3
|
||
|
import QtQuick.Controls 1.2
|
||
|
import QtQuick.Controls.Styles 1.4
|
||
|
import QtQuick.Dialogs 1.2
|
||
|
import QtLocation 5.3
|
||
|
import QtPositioning 5.3
|
||
|
import QtQuick.Layouts 1.2
|
||
|
|
||
|
import QGroundControl 1.0
|
||
|
import QGroundControl.ScreenTools 1.0
|
||
|
import QGroundControl.Controls 1.0
|
||
|
import QGroundControl.Palette 1.0
|
||
|
import QGroundControl.Vehicle 1.0
|
||
|
import QGroundControl.FlightMap 1.0
|
||
|
|
||
|
/// This provides the smarts behind the guided mode commands, minus the user interface. This way you can change UI
|
||
|
/// without affecting the underlying functionality.
|
||
|
Item {
|
||
|
id: _root
|
||
|
|
||
|
property var missionController
|
||
|
|
||
|
signal showConfirmAction(string title, string message, int action, var actionData)
|
||
|
|
||
|
readonly property string emergencyStopTitle: qsTr("Emergency Stop")
|
||
|
readonly property string armTitle: qsTr("Arm")
|
||
|
readonly property string disarmTitle: qsTr("Disarm")
|
||
|
readonly property string rtlTitle: qsTr("RTL")
|
||
|
readonly property string takeoffTitle: qsTr("Takeoff")
|
||
|
readonly property string landTitle: qsTr("Land")
|
||
|
readonly property string startMissionTitle: qsTr("Start Mission")
|
||
|
readonly property string resumeMissionTitle: qsTr("Resume Mission")
|
||
|
readonly property string pauseTitle: qsTr("Pause")
|
||
|
readonly property string changeAltTitle: qsTr("Change Altitude")
|
||
|
readonly property string orbitTitle: qsTr("Orbit")
|
||
|
readonly property string landAbortTitle: qsTr("Land Abort")
|
||
|
readonly property string setWaypointTitle: qsTr("Set Waypoint")
|
||
|
readonly property string gotoTitle: qsTr("Goto Location")
|
||
|
|
||
|
readonly property string armMessage: qsTr("arm")
|
||
|
readonly property string disarmMessage: qsTr("disarm")
|
||
|
readonly property string emergencyStopMessage: qsTr("WARNING: This still stop all motors. If vehicle is currently in air it will crash.")
|
||
|
readonly property string takeoffMessage: qsTr("Takeoff from ground and hold position.")
|
||
|
readonly property string startMissionMessage: qsTr("Start the mission which is currently displayed above. If the vehicle is on the ground it will takeoff.")
|
||
|
property string resumeMissionMessage: qsTr("Resume the mission which is displayed above. This will re-generate the mission from waypoint %1, takeoff and continue the mission.").arg(_resumeMissionItem)
|
||
|
readonly property string resumeMissionReadyMessage: qsTr("Review the modified mission above. Confirm if you want to takeoff and begin mission.")
|
||
|
readonly property string landMessage: qsTr("Land the vehicle at the current position.")
|
||
|
readonly property string rtlMessage: qsTr("Return to the home position of the vehicle.")
|
||
|
readonly property string changeAltMessage: qsTr("Change the altitude of the vehicle up or down.")
|
||
|
readonly property string gotoMessage: qsTr("Move the vehicle to the location clicked on the map.")
|
||
|
property string setWaypointMessage: qsTr("Adjust current waypoint to %1.").arg(_actionData)
|
||
|
readonly property string orbitMessage: qsTr("Orbit the vehicle around the current location.")
|
||
|
readonly property string landAbortMessage: qsTr("Abort the landing sequence.")
|
||
|
readonly property string pauseMessage: qsTr("Pause the vehicle at it's current position.")
|
||
|
|
||
|
readonly property int actionRTL: 1
|
||
|
readonly property int actionLand: 2
|
||
|
readonly property int actionTakeoff: 3
|
||
|
readonly property int actionArm: 4
|
||
|
readonly property int actionDisarm: 5
|
||
|
readonly property int actionEmergencyStop: 6
|
||
|
readonly property int actionChangeAlt: 7
|
||
|
readonly property int actionGoto: 8
|
||
|
readonly property int actionSetWaypoint: 9
|
||
|
readonly property int actionOrbit: 10
|
||
|
readonly property int actionLandAbort: 11
|
||
|
readonly property int actionStartMission: 12
|
||
|
readonly property int actionResumeMission: 13
|
||
|
readonly property int actionResumeMissionReady: 14
|
||
|
readonly property int actionPause: 15
|
||
|
|
||
|
property bool showEmergenyStop: !_hideEmergenyStop && _activeVehicle && _activeVehicle.armed && _activeVehicle.flying
|
||
|
property bool showDisarm: _activeVehicle && _activeVehicle.armed && !_activeVehicle.flying
|
||
|
property bool showRTL: _activeVehicle && _activeVehicle.armed && _activeVehicle.guidedModeSupported && _activeVehicle.flying && !_vehicleInRTLMode
|
||
|
property bool showTakeoff: _activeVehicle && _activeVehicle.guidedModeSupported && !_activeVehicle.flying && !_activeVehicle.fixedWing
|
||
|
property bool showLand: _activeVehicle && _activeVehicle.guidedModeSupported && _activeVehicle.armed && !_activeVehicle.fixedWing && !_vehicleInLandMode
|
||
|
property bool showStartMission: _activeVehicle && _missionAvailable && !_missionActive
|
||
|
property bool showResumeMission: _activeVehicle && !_activeVehicle.flying && _missionAvailable && _resumeMissionItem > 1
|
||
|
property bool showPause: _activeVehicle && _activeVehicle.armed && _activeVehicle.pauseVehicleSupported && _activeVehicle.flying && !_vehiclePaused
|
||
|
property bool showChangeAlt: (_activeVehicle && _activeVehicle.flying) && _activeVehicle.guidedModeSupported && _activeVehicle.armed && !_missionActive
|
||
|
property bool showOrbit: !_hideOrbit && _activeVehicle && _activeVehicle.flying && _activeVehicle.orbitModeSupported && _activeVehicle.armed && !_missionActive
|
||
|
property bool showLandAbort: _activeVehicle && _activeVehicle.flying && _activeVehicle.fixedWing
|
||
|
property bool showGotoLocation: _activeVehicle && _activeVehicle.guidedMode && _activeVehicle.flying
|
||
|
|
||
|
property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle
|
||
|
property bool _missionAvailable: missionController.containsItems
|
||
|
property bool _missionActive: _activeVehicle ? _activeVehicle.flightMode === _activeVehicle.missionFlightMode : false
|
||
|
property bool _vehiclePaused: _activeVehicle ? _activeVehicle.flightMode === _activeVehicle.pauseFlightMode : false
|
||
|
property bool _vehicleInRTLMode: _activeVehicle ? _activeVehicle.flightMode === _activeVehicle.rtlFlightMode : false
|
||
|
property bool _vehicleInLandMode: _activeVehicle ? _activeVehicle.flightMode === _activeVehicle.landFlightMode : false
|
||
|
property int _resumeMissionItem: missionController.resumeMissionItem
|
||
|
property bool _hideEmergenyStop: !QGroundControl.corePlugin.options.guidedBarShowEmergencyStop
|
||
|
property bool _hideOrbit: !QGroundControl.corePlugin.options.guidedBarShowOrbit
|
||
|
property var _actionData
|
||
|
|
||
|
// Called when an action is about to be executed in order to confirm
|
||
|
function confirmAction(actionCode, actionData) {
|
||
|
var title
|
||
|
var message
|
||
|
_actionData = actionData
|
||
|
switch (actionCode) {
|
||
|
case actionArm:
|
||
|
title = armTitle
|
||
|
message = armMessage
|
||
|
break;
|
||
|
case actionDisarm:
|
||
|
title = disarmTitle
|
||
|
message = disarmMessage
|
||
|
break;
|
||
|
case actionEmergencyStop:
|
||
|
title = emergencyStopTitle
|
||
|
message = emergencyStopMessage
|
||
|
break;
|
||
|
case actionTakeoff:
|
||
|
title = takeoffTitle
|
||
|
message = takeoffMessage
|
||
|
break;
|
||
|
case actionStartMission:
|
||
|
title = startMissionTitle
|
||
|
message = startMissionMessage
|
||
|
break;
|
||
|
case actionResumeMission:
|
||
|
title = resumeMissionTitle
|
||
|
message = resumeMissionMessage
|
||
|
break;
|
||
|
case actionResumeMissionReady:
|
||
|
title = resumeMissionTitle
|
||
|
message = resumeMissionReadyMessage
|
||
|
break;
|
||
|
case actionLand:
|
||
|
title = landTitle
|
||
|
message = landMessage
|
||
|
break;
|
||
|
case actionRTL:
|
||
|
title = rtlTitle
|
||
|
message = rtlMessage
|
||
|
break;
|
||
|
case actionChangeAlt:
|
||
|
title = changeAltTitle
|
||
|
message = changeAltMessage
|
||
|
break;
|
||
|
case actionGoto:
|
||
|
title = gotoTitle
|
||
|
message = gotoMessage
|
||
|
break;
|
||
|
case actionSetWaypoint:
|
||
|
title = setWaypointTitle
|
||
|
message = setWaypointMessage
|
||
|
break;
|
||
|
case actionOrbit:
|
||
|
title = orbitTitle
|
||
|
message = orbitMessage
|
||
|
break;
|
||
|
case actionLandAbort:
|
||
|
title = landAbortTitle
|
||
|
message = landAbortMessage
|
||
|
break;
|
||
|
case actionPause:
|
||
|
title = pauseTitle
|
||
|
message = pauseMessage
|
||
|
break;
|
||
|
}
|
||
|
showConfirmAction(title, message, actionCode, actionData)
|
||
|
}
|
||
|
|
||
|
// Executes the specified action
|
||
|
function executeAction(actionCode, actionData) {
|
||
|
switch (actionCode) {
|
||
|
case actionRTL:
|
||
|
_activeVehicle.guidedModeRTL()
|
||
|
break
|
||
|
case actionLand:
|
||
|
_activeVehicle.guidedModeLand()
|
||
|
break
|
||
|
case actionTakeoff:
|
||
|
_activeVehicle.guidedModeTakeoff()
|
||
|
break
|
||
|
case actionResumeMission:
|
||
|
missionController.resumeMission(missionController.resumeMissionItem)
|
||
|
break
|
||
|
case actionResumeMissionReady:
|
||
|
_activeVehicle.startMission()
|
||
|
break
|
||
|
case actionStartMission:
|
||
|
_activeVehicle.startMission()
|
||
|
break
|
||
|
case actionArm:
|
||
|
_activeVehicle.armed = true
|
||
|
break
|
||
|
case actionDisarm:
|
||
|
_activeVehicle.armed = false
|
||
|
break
|
||
|
case actionEmergencyStop:
|
||
|
_activeVehicle.emergencyStop()
|
||
|
break
|
||
|
case actionChangeAlt:
|
||
|
_activeVehicle.guidedModeChangeAltitude(actionData)
|
||
|
break
|
||
|
case actionGoto:
|
||
|
_activeVehicle.guidedModeGotoLocation(actionData)
|
||
|
break
|
||
|
case actionSetWaypoint:
|
||
|
_activeVehicle.setCurrentMissionSequence(actionData)
|
||
|
break
|
||
|
case actionOrbit:
|
||
|
_activeVehicle.guidedModeOrbit()
|
||
|
break
|
||
|
case actionLandAbort:
|
||
|
_activeVehicle.abortLanding(50) // hardcoded value for climbOutAltitude that is currently ignored
|
||
|
break
|
||
|
case actionPause:
|
||
|
_activeVehicle.pauseVehicle()
|
||
|
break
|
||
|
default:
|
||
|
console.warn(qsTr("Internal error: unknown actionCode"), actionCode)
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
}
|