From c2a5337211d51e3e5537433a59a1a685d2455f87 Mon Sep 17 00:00:00 2001
From: Gus Grubba <gus@auterion.com>
Date: Sat, 27 Apr 2019 12:44:16 -0400
Subject: [PATCH] Use a root based global variable
 (mainWindow.flightDisplayMap) instead of relying on child scoped names
 (_flightMap)

---
 src/FlightDisplay/FlightDisplayView.qml        | 26 +++++++++++++++++---------
 src/FlightDisplay/FlightDisplayViewMap.qml     |  3 +--
 src/FlightDisplay/FlightDisplayViewWidgets.qml |  2 +-
 src/ui/MainRootWindow.qml                      |  1 +
 4 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/FlightDisplay/FlightDisplayView.qml b/src/FlightDisplay/FlightDisplayView.qml
index 5667060..5c9312e 100644
--- a/src/FlightDisplay/FlightDisplayView.qml
+++ b/src/FlightDisplay/FlightDisplayView.qml
@@ -57,7 +57,7 @@ Item {
 
     readonly property var       _dynamicCameras:        activeVehicle ? activeVehicle.dynamicCameras : null
     readonly property bool      _isCamera:              _dynamicCameras ? _dynamicCameras.cameras.count > 0 : false
-    readonly property bool      isBackgroundDark:       _mainIsMap ? (_flightMap ? _flightMap.isSatelliteMap : true) : true
+    readonly property bool      isBackgroundDark:       _mainIsMap ? (mainWindow.flightDisplayMap ? mainWindow.flightDisplayMap.isSatelliteMap : true) : true
     readonly property real      _defaultRoll:           0
     readonly property real      _defaultPitch:          0
     readonly property real      _defaultHeading:        0
@@ -76,17 +76,22 @@ Item {
             _flightMapContainer.state   = "fullMode"
             _flightVideo.state          = "pipMode"
             //-- Save/Restore Map Zoom Level
-            if(_savedZoomLevel != 0)
-                _flightMap.zoomLevel = _savedZoomLevel
-            else
-                _savedZoomLevel = _flightMap.zoomLevel
+            if(_savedZoomLevel != 0) {
+                if(mainWindow.flightDisplayMap) {
+                    mainWindow.flightDisplayMap.zoomLevel = _savedZoomLevel
+                }
+            } else {
+                if(mainWindow.flightDisplayMap) {
+                    _savedZoomLevel = mainWindow.flightDisplayMap.zoomLevel
+                }
+            }
         } else {
             //-- Adjust Margins
             _flightMapContainer.state   = "pipMode"
             _flightVideo.state          = "fullMode"
             //-- Set Map Zoom Level
-            _savedZoomLevel = _flightMap.zoomLevel
-            _flightMap.zoomLevel = _savedZoomLevel - 3
+            _savedZoomLevel = mainWindow.flightDisplayMap.zoomLevel
+            mainWindow.flightDisplayMap.zoomLevel = _savedZoomLevel - 3
         }
     }
 
@@ -302,7 +307,7 @@ Item {
       }
     }
 
-    QGCMapPalette { id: mapPal; lightColors: _mainIsMap ? _flightMap.isSatelliteMap : true }
+    QGCMapPalette { id: mapPal; lightColors: _mainIsMap ? mainWindow.flightDisplayMap.isSatelliteMap : true }
 
     Item {
         id:             _mapAndVideo
@@ -334,7 +339,7 @@ Item {
                 }
             ]
             FlightDisplayViewMap {
-                id:                         _flightMap
+                id:                         _fMap
                 anchors.fill:               parent
                 guidedActionsController:    _guidedController
                 missionController:          _planController
@@ -342,6 +347,9 @@ Item {
                 rightPanelWidth:            ScreenTools.defaultFontPixelHeight * 9
                 multiVehicleView:           !singleVehicleView.checked
                 scaleState:                 (_mainIsMap && flyViewOverlay.item) ? (flyViewOverlay.item.scaleState ? flyViewOverlay.item.scaleState : "bottomMode") : "bottomMode"
+                Component.onCompleted: {
+                    mainWindow.flightDisplayMap = _fMap
+                }
             }
         }
 
diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml
index 0eebe93..c720b15 100644
--- a/src/FlightDisplay/FlightDisplayViewMap.qml
+++ b/src/FlightDisplay/FlightDisplayViewMap.qml
@@ -158,7 +158,6 @@ FlightMap {
         onTriggered:    updateMapToVehiclePosition()
     }
 
-    QGCPalette { id: qgcPal; colorGroupEnabled: true }
     QGCMapPalette { id: mapPal; lightColors: isSatelliteMap }
 
     Connections {
@@ -178,7 +177,7 @@ FlightMap {
 
     MapFitFunctions {
         id:                         mapFitFunctions // The name for this id cannot be changed without breaking references outside of this code. Beware!
-        map:                        _flightMap
+        map:                        mainWindow.flightDisplayMap
         usePlannedHomePosition:     false
         planMasterController:       missionController
         property real leftToolWidth: toolStrip.x + toolStrip.width
diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml
index 3395a9d..b58bd4d 100644
--- a/src/FlightDisplay/FlightDisplayViewWidgets.qml
+++ b/src/FlightDisplay/FlightDisplayViewWidgets.qml
@@ -31,7 +31,7 @@ Item {
     property var    missionController
     property bool   showValues:             !QGroundControl.airspaceManager.airspaceVisible
 
-    property bool   _isSatellite:           _mainIsMap ? (_flightMap ? _flightMap.isSatelliteMap : true) : true
+    property bool   _isSatellite:           _mainIsMap ? (mainWindow.flightDisplayMap ? mainWindow.flightDisplayMap.isSatelliteMap : true) : true
     property bool   _lightWidgetBorders:    _isSatellite
     property bool   _airspaceEnabled:       QGroundControl.airmapSupported ? QGroundControl.settingsManager.airMapSettings.enableAirMap.rawValue : false
 
diff --git a/src/ui/MainRootWindow.qml b/src/ui/MainRootWindow.qml
index c1ef799..e294fa2 100644
--- a/src/ui/MainRootWindow.qml
+++ b/src/ui/MainRootWindow.qml
@@ -47,6 +47,7 @@ ApplicationWindow {
     property var                currentPlanMissionItem:     planMasterControllerPlan ? planMasterControllerPlan.missionController.currentPlanViewItem : null
     property var                planMasterControllerPlan:   null
     property var                planMasterControllerView:   null
+    property var                flightDisplayMap:           null
 
     readonly property string    navButtonWidth:             ScreenTools.defaultFontPixelWidth * 24
     readonly property real      defaultTextHeight:          ScreenTools.defaultFontPixelHeight