11 changed files with 646 additions and 519 deletions
@ -0,0 +1,228 @@ |
|||||||
|
/**************************************************************************** |
||||||
|
* |
||||||
|
* (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 |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue