From 35603b4bdf09bb6412b4f992ed0f2f4dde3ed686 Mon Sep 17 00:00:00 2001
From: Don Gagne <don@thegagnes.com>
Date: Tue, 27 Dec 2016 12:30:29 -0800
Subject: [PATCH] Correct handling of no GeoFence support

---
 qgroundcontrol.qrc                                |  2 +-
 src/FirmwarePlugin/APM/APMGeoFenceManager.cc      | 15 ++++++++++-----
 .../{GeoFenceEditor.qml => NoGeoFenceEditor.qml}  |  0
 src/MissionManager/GeoFenceManager.h              |  2 +-
 4 files changed, 12 insertions(+), 7 deletions(-)
 rename src/FirmwarePlugin/{GeoFenceEditor.qml => NoGeoFenceEditor.qml} (100%)

diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc
index 67666880e0..5146043574 100644
--- a/qgroundcontrol.qrc
+++ b/qgroundcontrol.qrc
@@ -167,6 +167,6 @@
         <file alias="PX4MockLink.params">src/comm/PX4MockLink.params</file>
     </qresource>
     <qresource prefix="/FirmwarePlugin">
-        <file alias="GeoFenceEditor.qml">src/FirmwarePlugin/GeoFenceEditor.qml</file>
+        <file alias="NoGeoFenceEditor.qml">src/FirmwarePlugin/NoGeoFenceEditor.qml</file>
     </qresource>
 </RCC>
diff --git a/src/FirmwarePlugin/APM/APMGeoFenceManager.cc b/src/FirmwarePlugin/APM/APMGeoFenceManager.cc
index f65fb476ce..f707bc32da 100644
--- a/src/FirmwarePlugin/APM/APMGeoFenceManager.cc
+++ b/src/FirmwarePlugin/APM/APMGeoFenceManager.cc
@@ -251,8 +251,9 @@ void APMGeoFenceManager::_parametersReady(void)
     if (!_firstParamLoadComplete) {
         _firstParamLoadComplete = true;
 
-        _fenceSupported = _vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, QStringLiteral("FENCE_ACTION")) &&
-                            !qgcApp()->runningUnitTests();
+        _fenceSupported = _vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _fenceTotalParam) &&
+                _vehicle->parameterManager()->parameterExists(FactSystem::defaultComponentId, _fenceActionParam) &&
+                !qgcApp()->runningUnitTests();
 
         if (_fenceSupported) {
             QStringList paramNames;
@@ -319,7 +320,11 @@ void APMGeoFenceManager::_circleRadiusRawValueChanged(QVariant value)
 
 QString APMGeoFenceManager::editorQml(void) const
 {
-    return _vehicle->multiRotor() ?
-                QStringLiteral("qrc:/FirmwarePlugin/APM/CopterGeoFenceEditor.qml") :
-                QStringLiteral("qrc:/FirmwarePlugin/APM/PlaneGeoFenceEditor.qml");
+    if (_fenceSupported) {
+        return _vehicle->multiRotor() ?
+                    QStringLiteral("qrc:/FirmwarePlugin/APM/CopterGeoFenceEditor.qml") :
+                    QStringLiteral("qrc:/FirmwarePlugin/APM/PlaneGeoFenceEditor.qml");
+    } else {
+        return QStringLiteral("qrc:/FirmwarePlugin/NoGeoFenceEditor.qml");
+    }
 }
diff --git a/src/FirmwarePlugin/GeoFenceEditor.qml b/src/FirmwarePlugin/NoGeoFenceEditor.qml
similarity index 100%
rename from src/FirmwarePlugin/GeoFenceEditor.qml
rename to src/FirmwarePlugin/NoGeoFenceEditor.qml
diff --git a/src/MissionManager/GeoFenceManager.h b/src/MissionManager/GeoFenceManager.h
index c88de86dd6..f676e42010 100644
--- a/src/MissionManager/GeoFenceManager.h
+++ b/src/MissionManager/GeoFenceManager.h
@@ -49,7 +49,7 @@ public:
     virtual QVariantList    params      (void) const { return QVariantList(); }
     virtual QStringList     paramLabels (void) const { return QStringList(); }
 
-    virtual QString editorQml(void) const { return QStringLiteral("qrc:/FirmwarePlugin/GeoFenceEditor.qml"); }
+    virtual QString editorQml(void) const { return QStringLiteral("qrc:/FirmwarePlugin/NoGeoFenceEditor.qml"); }
 
     /// Error codes returned in error signal
     typedef enum {
-- 
GitLab