diff --git a/src/PlanView/SurveyItemEditor.qml b/src/PlanView/SurveyItemEditor.qml index 0b22b12922e3f08aff900b5f53a8adbf6bac480a..d0072b0cf9f2a52a6530c6aa888c7b3af0fd1b9e 100644 --- a/src/PlanView/SurveyItemEditor.qml +++ b/src/PlanView/SurveyItemEditor.qml @@ -9,6 +9,7 @@ import QGroundControl 1.0 import QGroundControl.ScreenTools 1.0 import QGroundControl.Vehicle 1.0 import QGroundControl.Controls 1.0 +import QGroundControl.FactSystem 1.0 import QGroundControl.FactControls 1.0 import QGroundControl.Palette 1.0 import QGroundControl.FlightMap 1.0 @@ -119,6 +120,13 @@ Rectangle { onClicked: missionItem.rotateEntryPoint(); } + FactCheckBox { + text: qsTr("Split concave polygons") + fact: _splitConcave + visible: _splitConcave.visible + property Fact _splitConcave: QGroundControl.settingsManager.appSettings.splitConcavePolygons + } + FactCheckBox { text: qsTr("Hover and capture image") fact: missionItem.hoverAndCapture diff --git a/src/Settings/App.SettingsGroup.json b/src/Settings/App.SettingsGroup.json index d8fc6973f006198fcb93b448303c6eddc263b792..f083d93b3026f6323da1f655613a4d54e278a93e 100644 --- a/src/Settings/App.SettingsGroup.json +++ b/src/Settings/App.SettingsGroup.json @@ -199,5 +199,12 @@ "enumStrings": "Never,Always,When in Follow Me Flight Mode", "enumValues": "0,1,2", "defaultValue": 0 +}, +{ + "name": "SplitConcavePolygons", + "shortDescription": "Split mission concave polygons", + "longDescription": "Split mission concave polygons into separate regular, convex polygons", + "type": "bool", + "defaultValue": false } ] diff --git a/src/Settings/AppSettings.cc b/src/Settings/AppSettings.cc index b9f341c7d62cc8a9e582c1bd4eb316af43269faf..af485f56379a28eddcd76659269b6306062a0e8b 100644 --- a/src/Settings/AppSettings.cc +++ b/src/Settings/AppSettings.cc @@ -41,6 +41,7 @@ const char* AppSettings::esriTokenName = "EsriTok const char* AppSettings::defaultFirmwareTypeName = "DefaultFirmwareType"; const char* AppSettings::gstDebugName = "GstreamerDebugLevel"; const char* AppSettings::followTargetName = "FollowTarget"; +const char* AppSettings::splitConcavePolygonsName = "SplitConcavePolygons"; const char* AppSettings::parameterFileExtension = "params"; const char* AppSettings::planFileExtension = "plan"; @@ -84,6 +85,7 @@ AppSettings::AppSettings(QObject* parent) , _defaultFirmwareTypeFact (NULL) , _gstDebugFact (NULL) , _followTargetFact (NULL) + , _splitConcavePolygonsFact (NULL) { QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); qmlRegisterUncreatableType("QGroundControl.SettingsManager", 1, 0, "AppSettings", "Reference only"); @@ -428,3 +430,12 @@ Fact* AppSettings::followTarget(void) return _followTargetFact; } +Fact* AppSettings::splitConcavePolygons(void) +{ + if (!_splitConcavePolygonsFact) { + _splitConcavePolygonsFact = _createSettingsFact(splitConcavePolygonsName); + } + + return _splitConcavePolygonsFact; +} + diff --git a/src/Settings/AppSettings.h b/src/Settings/AppSettings.h index 327ce30950dcb013741cfa63c7dbdd4db8d4d1b6..b12bdf5ba51d42dc0ee3e9c790076f125e7f626c 100644 --- a/src/Settings/AppSettings.h +++ b/src/Settings/AppSettings.h @@ -43,6 +43,7 @@ public: Q_PROPERTY(Fact* defaultFirmwareType READ defaultFirmwareType CONSTANT) Q_PROPERTY(Fact* gstDebug READ gstDebug CONSTANT) Q_PROPERTY(Fact* followTarget READ followTarget CONSTANT) + Q_PROPERTY(Fact* splitConcavePolygons READ splitConcavePolygons CONSTANT) Q_PROPERTY(QString missionSavePath READ missionSavePath NOTIFY savePathsChanged) Q_PROPERTY(QString parameterSavePath READ parameterSavePath NOTIFY savePathsChanged) @@ -82,13 +83,14 @@ public: Fact* defaultFirmwareType (void); Fact* gstDebug (void); Fact* followTarget (void); + Fact* splitConcavePolygons (void); QString missionSavePath (void); QString parameterSavePath (void); QString telemetrySavePath (void); QString logSavePath (void); - QString videoSavePath (void); - QString crashSavePath (void); + QString videoSavePath (void); + QString crashSavePath (void); static MAV_AUTOPILOT offlineEditingFirmwareTypeFromFirmwareType(MAV_AUTOPILOT firmwareType); static MAV_TYPE offlineEditingVehicleTypeFromVehicleType(MAV_TYPE vehicleType); @@ -119,6 +121,7 @@ public: static const char* defaultFirmwareTypeName; static const char* gstDebugName; static const char* followTargetName; + static const char* splitConcavePolygonsName; // Application wide file extensions static const char* parameterFileExtension; @@ -170,6 +173,7 @@ private: SettingsFact* _defaultFirmwareTypeFact; SettingsFact* _gstDebugFact; SettingsFact* _followTargetFact; + SettingsFact* _splitConcavePolygonsFact; }; #endif