diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index f03b8fa837c947d70dd6cab72f7c2a71e1e1419a..0ec0ccb4961f770659d97c635a1fc1f2b7c2cfa3 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -29,6 +29,7 @@ #include "QGCQGeoCoordinate.h" #include "PlanMasterController.h" #include "KML.h" +#include "QGCCorePlugin.h" #ifndef __mobile__ #include "MainWindow.h" @@ -56,22 +57,22 @@ const char* MissionController::_jsonMavAutopilotKey = "MAV_AUTOPILOT"; const int MissionController::_missionFileVersion = 2; MissionController::MissionController(PlanMasterController* masterController, QObject *parent) - : PlanElementController (masterController, parent) - , _missionManager (_managerVehicle->missionManager()) - , _missionItemCount (0) - , _visualItems (nullptr) - , _settingsItem (nullptr) - , _firstItemsFromVehicle (false) - , _itemsRequested (false) - , _inRecalcSequence (false) - , _surveyMissionItemName (tr("Survey")) - , _fwLandingMissionItemName (tr("Fixed Wing Landing")) - , _structureScanMissionItemName (tr("Structure Scan")) - , _corridorScanMissionItemName (tr("Corridor Scan")) - , _appSettings (qgcApp()->toolbox()->settingsManager()->appSettings()) - , _progressPct (0) - , _currentPlanViewIndex (-1) - , _currentPlanViewItem (nullptr) + : PlanElementController (masterController, parent) + , patternFWLandingName (tr("Fixed Wing Landing")) + , patternStructureScanName (tr("Structure Scan")) + , patternCorridorScanName (tr("Corridor Scan")) + , _missionManager (_managerVehicle->missionManager()) + , _missionItemCount (0) + , _visualItems (nullptr) + , _settingsItem (nullptr) + , _firstItemsFromVehicle (false) + , _itemsRequested (false) + , _inRecalcSequence (false) + , _surveyMissionItemName (tr("Survey")) + , _appSettings (qgcApp()->toolbox()->settingsManager()->appSettings()) + , _progressPct (0) + , _currentPlanViewIndex (-1) + , _currentPlanViewItem (nullptr) { _resetMissionFlightStatus(); managerVehicleChanged(_managerVehicle); @@ -414,11 +415,11 @@ int MissionController::insertComplexMissionItem(QString itemName, QGeoCoordinate if (itemName == _surveyMissionItemName) { newItem = new SurveyComplexItem(_controllerVehicle, _flyView, QString() /* kmlFile */, _visualItems /* parent */); newItem->setCoordinate(mapCenterCoordinate); - } else if (itemName == _fwLandingMissionItemName) { + } else if (itemName == patternFWLandingName) { newItem = new FixedWingLandingComplexItem(_controllerVehicle, _flyView, _visualItems /* parent */); - } else if (itemName == _structureScanMissionItemName) { + } else if (itemName == patternStructureScanName) { newItem = new StructureScanComplexItem(_controllerVehicle, _flyView, QString() /* kmlFile */, _visualItems /* parent */); - } else if (itemName == _corridorScanMissionItemName) { + } else if (itemName == patternCorridorScanName) { newItem = new CorridorScanComplexItem(_controllerVehicle, _flyView, QString() /* kmlFile */, _visualItems /* parent */); } else { qWarning() << "Internal error: Unknown complex item:" << itemName; @@ -434,9 +435,9 @@ int MissionController::insertComplexMissionItemFromKMLOrSHP(QString itemName, QS if (itemName == _surveyMissionItemName) { newItem = new SurveyComplexItem(_controllerVehicle, _flyView, file, _visualItems); - } else if (itemName == _structureScanMissionItemName) { + } else if (itemName == patternStructureScanName) { newItem = new StructureScanComplexItem(_controllerVehicle, _flyView, file, _visualItems); - } else if (itemName == _corridorScanMissionItemName) { + } else if (itemName == patternCorridorScanName) { newItem = new CorridorScanComplexItem(_controllerVehicle, _flyView, file, _visualItems); } else { qWarning() << "Internal error: Unknown complex item:" << itemName; @@ -1951,15 +1952,15 @@ QStringList MissionController::complexMissionItemNames(void) const QStringList complexItems; complexItems.append(_surveyMissionItemName); - complexItems.append(_corridorScanMissionItemName); + complexItems.append(patternCorridorScanName); if (_controllerVehicle->fixedWing()) { - complexItems.append(_fwLandingMissionItemName); + complexItems.append(patternFWLandingName); } if (_controllerVehicle->multiRotor() || _controllerVehicle->vtol()) { - complexItems.append(_structureScanMissionItemName); + complexItems.append(patternStructureScanName); } - return complexItems; + return qgcApp()->toolbox()->corePlugin()->complexMissionItemNames(_controllerVehicle, complexItems); } void MissionController::resumeMission(int resumeIndex) diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index 02747b6c9341eafd67a1d15083e1161ce0d580f1..2d4d269b8ea8e6b37f3a14a6ea8e7efd6f6aaf5c 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -175,8 +175,8 @@ public: VisualMissionItem* currentPlanViewItem (void) const; double progressPct (void) const { return _progressPct; } QString surveyComplexItemName (void) const { return _surveyMissionItemName; } - QString corridorScanComplexItemName (void) const { return _corridorScanMissionItemName; } - QString structureScanComplexItemName(void) const { return _structureScanMissionItemName; } + QString corridorScanComplexItemName (void) const { return patternCorridorScanName; } + QString structureScanComplexItemName(void) const { return patternStructureScanName; } int missionItemCount (void) const { return _missionItemCount; } int currentMissionIndex (void) const; @@ -194,6 +194,12 @@ public: int batteryChangePoint (void) const { return _missionFlightStatus.batteryChangePoint; } ///< -1 for not supported, 0 for not needed int batteriesRequired (void) const { return _missionFlightStatus.batteriesRequired; } ///< -1 for not supported + // These are the names shown in the UI for the pattern items. They are public so custom builds can remove the ones + // they don't want through the QGCCorePlugin:: + QString patternFWLandingName; + QString patternStructureScanName; + QString patternCorridorScanName; + signals: void visualItemsChanged (void); void waypointLinesChanged (void); @@ -285,9 +291,6 @@ private: bool _inRecalcSequence; MissionFlightStatus_t _missionFlightStatus; QString _surveyMissionItemName; - QString _fwLandingMissionItemName; - QString _structureScanMissionItemName; - QString _corridorScanMissionItemName; AppSettings* _appSettings; double _progressPct; int _currentPlanViewIndex; diff --git a/src/api/QGCCorePlugin.h b/src/api/QGCCorePlugin.h index 13deb754b36299775f9001bf4a08d3d2f348fb2c..a4812577ec933c2593e3647e866efb722b113ad0 100644 --- a/src/api/QGCCorePlugin.h +++ b/src/api/QGCCorePlugin.h @@ -139,6 +139,11 @@ public: /// Custom builds must override to provide their own location. virtual QString stableDownloadLocation(void) const { return QString("qgroundcontrol.com"); } + /// Returns the complex mission items to display in the Plan UI + /// @param complexMissionItemNames Default set of complex items + /// @return Complex items to be made available to user + virtual QStringList complexMissionItemNames(Vehicle* vehicle, const QStringList& complexMissionItemNames) { Q_UNUSED(vehicle); return complexMissionItemNames; } + bool showTouchAreas(void) const { return _showTouchAreas; } bool showAdvancedUI(void) const { return _showAdvancedUI; } void setShowTouchAreas(bool show);