From 65ec484a11c93cd3d7bc87b9703b5df04cf246b9 Mon Sep 17 00:00:00 2001
From: DonLakeFlyer <don@thegagnes.com>
Date: Mon, 30 Apr 2018 01:14:44 -0700
Subject: [PATCH] Different visuals for Planne Home in Plan View

---
 src/MissionManager/MissionController.cc   |  6 +++---
 src/MissionManager/MissionSettingsItem.cc |  8 +++++++-
 src/MissionManager/MissionSettingsItem.h  | 10 +++++-----
 src/MissionManager/MissionSettingsTest.cc |  2 +-
 src/PlanView/MissionItemEditor.qml        |  2 +-
 src/QmlControls/MissionItemIndexLabel.qml |  2 +-
 6 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc
index bc774f7f43..d8fd6782fa 100644
--- a/src/MissionManager/MissionController.cc
+++ b/src/MissionManager/MissionController.cc
@@ -640,7 +640,7 @@ bool MissionController::_loadJsonMissionFileV2(const QJsonObject& json, QmlObjec
     if (!JsonHelper::loadGeoCoordinate(json[_jsonPlannedHomePositionKey], true /* altitudeRequired */, homeCoordinate, errorString)) {
         return false;
     }
-    MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, visualItems);
+    MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, _editMode, visualItems);
     settingsItem->setCoordinate(homeCoordinate);
     visualItems->insert(0, settingsItem);
     qCDebug(MissionControllerLog) << "plannedHomePosition" << homeCoordinate;
@@ -724,7 +724,7 @@ bool MissionController::_loadJsonMissionFileV2(const QJsonObject& json, QmlObjec
                 visualItems->append(corridorItem);
             } else if (complexItemType == MissionSettingsItem::jsonComplexItemTypeValue) {
                 qCDebug(MissionControllerLog) << "Loading Mission Settings: nextSequenceNumber" << nextSequenceNumber;
-                MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, visualItems);
+                MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, _editMode, visualItems);
                 if (!settingsItem->load(itemObject, nextSequenceNumber++, errorString)) {
                     return false;
                 }
@@ -1717,7 +1717,7 @@ double MissionController::_normalizeLon(double lon)
 /// Add the Mission Settings complex item to the front of the items
 void MissionController::_addMissionSettings(QmlObjectListModel* visualItems, bool addToCenter)
 {
-    MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, visualItems);
+    MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, _editMode, visualItems);
 
     qCDebug(MissionControllerLog) << "_addMissionSettings addToCenter" << addToCenter;
 
diff --git a/src/MissionManager/MissionSettingsItem.cc b/src/MissionManager/MissionSettingsItem.cc
index abe14a452a..c0c482c616 100644
--- a/src/MissionManager/MissionSettingsItem.cc
+++ b/src/MissionManager/MissionSettingsItem.cc
@@ -27,8 +27,9 @@ const char* MissionSettingsItem::_plannedHomePositionAltitudeName = "PlannedHome
 
 QMap<QString, FactMetaData*> MissionSettingsItem::_metaDataMap;
 
-MissionSettingsItem::MissionSettingsItem(Vehicle* vehicle, QObject* parent)
+MissionSettingsItem::MissionSettingsItem(Vehicle* vehicle, bool planView, QObject* parent)
     : ComplexMissionItem                (vehicle, parent)
+    , _planView                         (planView)
     , _plannedHomePositionAltitudeFact  (0, _plannedHomePositionAltitudeName,   FactMetaData::valueTypeDouble)
     , _plannedHomePositionFromVehicle   (false)
     , _missionEndRTL                    (false)
@@ -299,3 +300,8 @@ void MissionSettingsItem::_setHomeAltFromTerrain(double terrainAltitude)
         _plannedHomePositionAltitudeFact.setRawValue(terrainAltitude);
     }
 }
+
+QString MissionSettingsItem::abbreviation(void) const
+{
+    return _planView ? tr("Planned Home") : tr("H");
+}
diff --git a/src/MissionManager/MissionSettingsItem.h b/src/MissionManager/MissionSettingsItem.h
index d20410917d..d4935d1db9 100644
--- a/src/MissionManager/MissionSettingsItem.h
+++ b/src/MissionManager/MissionSettingsItem.h
@@ -24,7 +24,7 @@ class MissionSettingsItem : public ComplexMissionItem
     Q_OBJECT
 
 public:
-    MissionSettingsItem(Vehicle* vehicle, QObject* parent = NULL);
+    MissionSettingsItem(Vehicle* vehicle, bool planView, QObject* parent = NULL);
 
     Q_PROPERTY(Fact*    plannedHomePositionAltitude READ plannedHomePositionAltitude                            CONSTANT)
     Q_PROPERTY(bool     missionEndRTL               READ missionEndRTL                  WRITE setMissionEndRTL  NOTIFY missionEndRTLChanged)
@@ -68,7 +68,7 @@ public:
     bool            specifiesAltitudeOnly   (void) const final { return false; }
     QString         commandDescription      (void) const final { return "Mission Start"; }
     QString         commandName             (void) const final { return "Mission Start"; }
-    QString         abbreviation            (void) const final { return "H"; }
+    QString         abbreviation            (void) const final;
     QGeoCoordinate  coordinate              (void) const final { return _plannedHomePositionCoordinate; }
     QGeoCoordinate  exitCoordinate          (void) const final { return _plannedHomePositionCoordinate; }
     int             sequenceNumber          (void) const final { return _sequenceNumber; }
@@ -101,15 +101,15 @@ private slots:
     void _setHomeAltFromTerrain                 (double terrainAltitude);
 
 private:
+    bool            _planView;
     QGeoCoordinate  _plannedHomePositionCoordinate;     // Does not include altitude
     Fact            _plannedHomePositionAltitudeFact;
     bool            _plannedHomePositionFromVehicle;
     bool            _missionEndRTL;
     CameraSection   _cameraSection;
     SpeedSection    _speedSection;
-
-    int     _sequenceNumber;
-    bool    _dirty;
+    int             _sequenceNumber;
+    bool            _dirty;
 
     static QMap<QString, FactMetaData*> _metaDataMap;
 
diff --git a/src/MissionManager/MissionSettingsTest.cc b/src/MissionManager/MissionSettingsTest.cc
index 26b3a342e6..df6cd8f5ec 100644
--- a/src/MissionManager/MissionSettingsTest.cc
+++ b/src/MissionManager/MissionSettingsTest.cc
@@ -22,7 +22,7 @@ void MissionSettingsTest::init(void)
 {
     VisualMissionItemTest::init();
 
-    _settingsItem = new MissionSettingsItem(_offlineVehicle, this);
+    _settingsItem = new MissionSettingsItem(_offlineVehicle, true /* planView */, this);
 }
 
 void MissionSettingsTest::cleanup(void)
diff --git a/src/PlanView/MissionItemEditor.qml b/src/PlanView/MissionItemEditor.qml
index 18083de522..26dee4bede 100644
--- a/src/PlanView/MissionItemEditor.qml
+++ b/src/PlanView/MissionItemEditor.qml
@@ -76,7 +76,7 @@ Rectangle {
         anchors.verticalCenter: commandPicker.verticalCenter
         anchors.leftMargin:     _margin
         anchors.left:           parent.left
-        text:                   missionItem.homePosition ? "H" : missionItem.sequenceNumber
+        text:                   missionItem.homePosition ? "P" : missionItem.sequenceNumber
         color:                  _outerTextColor
     }
 
diff --git a/src/QmlControls/MissionItemIndexLabel.qml b/src/QmlControls/MissionItemIndexLabel.qml
index 5b0e662f59..ff88b1f560 100644
--- a/src/QmlControls/MissionItemIndexLabel.qml
+++ b/src/QmlControls/MissionItemIndexLabel.qml
@@ -33,7 +33,7 @@ Canvas {
     property real   _gimbalRadians:     degreesToRadians(vehicleYaw + gimbalYaw - 90)
     property real   _labelMargin:       2
     property real   _labelRadius:       _indicatorRadius + _labelMargin
-    property string _label:             index === 0 ? "" : label
+    property string _label:             label.length > 1 ? label : ""
     property string _index:             index === 0 || index === -1 ? label.charAt(0) : index
 
     onColorChanged:         requestPaint()
-- 
GitLab