diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml index f647c7a979e31f6da89dc9d581aa17564d5f298d..f3a5abd7ff7bc49a19459242383057727abe1b49 100644 --- a/src/FlightDisplay/FlightDisplayView.qml +++ b/src/FlightDisplay/FlightDisplayView.qml @@ -760,6 +760,7 @@ QGCView { GuidedActionsController { id: guidedActionsController wimaController: wimaController + wimaMenu: wimaMenu missionController: _missionController confirmDialog: guidedActionConfirm actionList: guidedActionList diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml index f4dd8dcf6b1981d7888dcf69496309f475ee16fc..452420ee6b4ac6386565191d743786436786987e 100644 --- a/src/FlightDisplay/FlightDisplayViewMap.qml +++ b/src/FlightDisplay/FlightDisplayViewMap.qml @@ -216,17 +216,18 @@ FlightMap { } // Add mission items generated by wima planer to the map + // all Items WimaPlanMapItems { map: flightMap largeMapView: _mainIsMap missionItems: wimaController.missionItems path: wimaController.waypointPath showItems: _wimaEnabled && _showAllWimaItems - zOrderWP: QGroundControl.zOrderWaypointIndicators-2 - zOrderLines: QGroundControl.zOrderWaypointLines-2 - color: "#B4808080" // gray with alpha 0.7 + zOrderWP: QGroundControl.zOrderWaypointIndicators-3 + zOrderLines: QGroundControl.zOrderWaypointLines-1 + color: "gray" } - + // current Items WimaPlanMapItems { map: flightMap largeMapView: _mainIsMap @@ -234,7 +235,7 @@ FlightMap { path: wimaController.currentWaypointPath showItems: _wimaEnabled && _showCurrentWimaItems zOrderWP: QGroundControl.zOrderWaypointIndicators-1 - zOrderLines: QGroundControl.zOrderWaypointLines-1 + zOrderLines: QGroundControl.zOrderWaypointIndicators-2 color: "green" // gray with alpha 0.7 } diff --git a/src/FlightDisplay/FlightDisplayWimaMenu.qml b/src/FlightDisplay/FlightDisplayWimaMenu.qml index 21578b41368b9ebdbfd1d8c00188f5ec1c6137ac..f28fa5c8886fe6b7488025f4aeab9297a4943270 100644 --- a/src/FlightDisplay/FlightDisplayWimaMenu.qml +++ b/src/FlightDisplay/FlightDisplayWimaMenu.qml @@ -27,6 +27,7 @@ Item { property var wimaController // must be provided by the user property var planMasterController // must be provided by the user + readonly property alias missionReadyForStart: _private.missionReadyForStart property bool _controllerValid: planMasterController !== undefined property real _controllerProgressPct: _controllerValid ? planMasterController.missionController.progressPct : 0 @@ -34,14 +35,21 @@ Item { signal initSmartRTL(); + Item { + id: _private + property bool missionReadyForStart: true + } + // Progress bar visibility on_ControllerProgressPctChanged: { if (_controllerProgressPct === 1) { - uploadCompleteText.visible = true - progressBar.visible = false + uploadCompleteText.visible = true + progressBar.visible = false + _private.missionReadyForStart = true } else if (_controllerProgressPct > 0) { - progressBar.visible = true - uploadCompleteText.visible = false + progressBar.visible = true + uploadCompleteText.visible = false + _private.missionReadyForStart = false } } @@ -225,7 +233,7 @@ Item { width: parent.width QGCLabel { - text: qsTr("Phase Speed") + text: qsTr("Mission Speed") Layout.fillWidth: true } FactTextField { @@ -234,7 +242,7 @@ Item { } QGCLabel { - text: qsTr("Arrival and Return Speed") + text: qsTr("AaR Speed") Layout.fillWidth: true } FactTextField { @@ -298,7 +306,11 @@ Item { QGCButton { id: buttonUpload text: qsTr("Upload") - onClicked: wimaController.uploadToVehicle() + onClicked: { + if (!planMasterController.offline) { + wimaController.uploadToVehicle() + } + } Layout.fillWidth: true } diff --git a/src/FlightDisplay/GuidedActionsController.qml b/src/FlightDisplay/GuidedActionsController.qml index a34ca998046346906bd08e83b7f5942970b76f2a..054b554e1156df05371c7a28fa5812761541222f 100644 --- a/src/FlightDisplay/GuidedActionsController.qml +++ b/src/FlightDisplay/GuidedActionsController.qml @@ -28,6 +28,7 @@ Item { id: _root property var wimaController + property var wimaMenu property var missionController property var confirmDialog property var actionList @@ -120,6 +121,7 @@ Item { property bool showOrbit: _guidedActionsEnabled && !_hideOrbit && _vehicleFlying && _activeVehicle.orbitModeSupported && !_missionActive property bool showLandAbort: _guidedActionsEnabled && _vehicleFlying && _activeVehicle.fixedWing && _vehicleLanding property bool showGotoLocation: _guidedActionsEnabled && _vehicleFlying + property bool wimaEnabled: wimaController.enableWimaController.value // Note: The '_missionItemCount - 2' is a hack to not trigger resume mission when a mission ends with an RTL item property bool showResumeMission: _activeVehicle && !_vehicleArmed && _vehicleWasFlying && _missionAvailable && _resumeMissionIndex > 0 && (_resumeMissionIndex < _missionItemCount - 2) @@ -130,7 +132,7 @@ Item { property bool _guidedActionsEnabled: (!ScreenTools.isDebug && QGroundControl.corePlugin.options.guidedActionsRequireRCRSSI && _activeVehicle) ? _rcRSSIAvailable : _activeVehicle property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle property string _flightMode: _activeVehicle ? _activeVehicle.flightMode : "" - property bool _missionAvailable: missionController.containsItems + property bool _missionAvailable: wimaEnabled ? wimaMenu.missionReadyForStart : missionController.containsItems property bool _missionActive: _activeVehicle ? _vehicleArmed && (_vehicleInLandMode || _vehicleInRTLMode || _vehicleInMissionMode) : false property bool _vehicleArmed: _activeVehicle ? _activeVehicle.armed : false property bool _vehicleFlying: _activeVehicle ? _activeVehicle.flying : false diff --git a/src/FlightMap/MapItems/PlanMapItems.qml b/src/FlightMap/MapItems/PlanMapItems.qml index 770b40e1303148c38b1ef552bed74c7cca6fbfa2..1c89244d4206adc4cc8cec3d6cf1b819827069e8 100644 --- a/src/FlightMap/MapItems/PlanMapItems.qml +++ b/src/FlightMap/MapItems/PlanMapItems.qml @@ -33,7 +33,9 @@ Item { // Add the mission item visuals to the map Repeater { - model: largeMapView ? _missionController.visualItems : 0 + property bool show: largeMapView + property var wimaController + model: show ? _missionController.visualItems : 0 delegate: MissionItemMapVisual { map: _map diff --git a/src/FlightMap/MapItems/WimaPlanMapItems.qml b/src/FlightMap/MapItems/WimaPlanMapItems.qml index 7237f32b038e185ded84b0b057c902455a7f08ce..ceb5a31f99d42f8e13c463a737daa8399667ecd7 100644 --- a/src/FlightMap/MapItems/WimaPlanMapItems.qml +++ b/src/FlightMap/MapItems/WimaPlanMapItems.qml @@ -30,8 +30,29 @@ Item { property var _map: map property var _missionLineViewComponent + property var zoom: map.zoomLevel property bool showItems: true +// onZoomChanged: { +// console.log('zoomLevel') +// console.log(zoom) +// } + + function hideNumber() { + if (zoom > 19.5) { + return 1 + } else if (zoom > 19) { + return 2 + } else if (zoom > 17) { + return 4 + } else if (zoom > 14) { + return 8 + } else { + return -1 + } + + } + Component { id: missionLineViewComponent @@ -51,6 +72,17 @@ Item { map: _map color: _root.color zOrder: _root.zOrderWP + visible: isVisible(index) && _root.visible + + + function isVisible(index) { + var num = hideNumber() + if (num > 0) { + return ((index+num) % num) == 0 ? true : false + } else { + return false + } + } } } diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index a0c7246d524b6366a673592afda288f42cbf01da..edc70d4629ee5e20ac4acbe295a469f1f81190d2 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -101,6 +101,7 @@ public: Q_PROPERTY(QString corridorScanComplexItemName READ corridorScanComplexItemName CONSTANT) Q_PROPERTY(QString structureScanComplexItemName READ structureScanComplexItemName CONSTANT) + Q_INVOKABLE void removeMissionItem(int index); /// Add a new simple mission item to the list diff --git a/src/PlanView/WimaMissionItemMapVisual.qml b/src/PlanView/WimaMissionItemMapVisual.qml index b70a0d6fc2cee2f458849412a3f9ec5ac13db80b..1dfb1b380e3a6f151903970503d0074271bff471 100644 --- a/src/PlanView/WimaMissionItemMapVisual.qml +++ b/src/PlanView/WimaMissionItemMapVisual.qml @@ -107,7 +107,7 @@ Item { MissionItemIndicator { coordinate: _missionItem.coordinate - visible: _missionItem.specifiesCoordinate + visible: _missionItem.specifiesCoordinate && _root.visible z: _root.zOrder missionItem: _missionItem sequenceNumber: _missionItem.sequenceNumber diff --git a/src/Wima/WimaController.cc b/src/Wima/WimaController.cc index 4a2eb82266682ce36f3cf76b00e539b750854252..2789098c0b7d69ee999fa654048121a971230486 100644 --- a/src/Wima/WimaController.cc +++ b/src/Wima/WimaController.cc @@ -970,10 +970,11 @@ void WimaController::checkBatteryLevel() Vehicle *managerVehicle = masterController()->managerVehicle(); WimaSettings* wimaSettings = qgcApp()->toolbox()->settingsManager()->wimaSettings(); int batteryThreshold = wimaSettings->lowBatteryThreshold()->rawValue().toInt(); + bool enabled = _enableWimaController.rawValue().toBool(); static long attemptCounter = 0; - if (managerVehicle != nullptr) { + if (managerVehicle != nullptr && enabled == true) { Fact *battery1percentRemaining = managerVehicle->battery1FactGroup()->getFact(VehicleBatteryFactGroup::_percentRemainingFactName); Fact *battery2percentRemaining = managerVehicle->battery2FactGroup()->getFact(VehicleBatteryFactGroup::_percentRemainingFactName); diff --git a/src/main.cc b/src/main.cc index 46b48f2492c0c1d8cbab10a67a52f49eb7d8711c..4f39344ca16022362b09f8a4b1c829f2fc586469 100644 --- a/src/main.cc +++ b/src/main.cc @@ -32,6 +32,14 @@ #include "RunGuard.h" #endif +#ifndef QML_PROFILE +#define QML_PROFILE 1 +#endif + +#if QML_PROFILE +#include +#endif + #ifdef UNITTEST_BUILD #include "UnitTest.h" #endif @@ -246,6 +254,11 @@ int main(int argc, char *argv[]) //-- Initialize Cache System getQGCMapEngine()->init(); + +#if QML_PROFILE + QQmlDebuggingEnabler enabler; +#endif + int exitCode = 0; #ifdef UNITTEST_BUILD diff --git a/src/ui/MainWindowInner.qml b/src/ui/MainWindowInner.qml index f2d487550187e2e25543e906935074a2019cfd75..4da272c8196b8891a084d819591507ccc26cbf8e 100644 --- a/src/ui/MainWindowInner.qml +++ b/src/ui/MainWindowInner.qml @@ -42,6 +42,8 @@ Item { readonly property string _wimaViewSource: "WimaView.qml" readonly property string _analyzeViewSource: "AnalyzeView.qml" + readonly property int _messageLifeTime: 10000 // ms, messages will be removed from the screen after this time + onHeightChanged: { //-- We only deal with the available height if within the Fly or Plan view if(!setupViewLoader.visible) { @@ -656,7 +658,7 @@ Item { // Message life-time timer Timer { id: lifetimeTimer - interval: 10000 // ms + interval: _messageLifeTime // ms repeat: false onTriggered: {