Commit 81f914d9 authored by DonLakeFlyer's avatar DonLakeFlyer

parent 72acf81e
......@@ -29,14 +29,15 @@ MapQuickItem {
sourceItem:
MissionItemIndexLabel {
id: _label
checked: _isCurrentItem
label: missionItem ? missionItem.abbreviation : ""
gimbalYaw: missionItem.missionGimbalYaw
vehicleYaw: missionItem.missionVehicleYaw
showGimbalYaw: !isNaN(missionItem.missionGimbalYaw)
highlightSelected: true
onClicked: _item.clicked()
property bool _isCurrentItem: missionItem ? missionItem.isCurrentItem : false
id: _label
checked: _isCurrentItem
label: missionItem ? missionItem.abbreviation : ""
gimbalYaw: missionItem.missionGimbalYaw
vehicleYaw: missionItem.missionVehicleYaw
showGimbalYaw: !isNaN(missionItem.missionGimbalYaw)
highlightSelected: true
onClicked: _item.clicked()
property bool _isCurrentItem: missionItem ? missionItem.isCurrentItem || missionItem.hasCurrentChildItem : false
}
}
......@@ -1707,14 +1707,21 @@ void MissionController::_recalcChildItems(void)
currentParentItem->childItems()->clear();
for (int i=1; i<_visualItems->count(); i++) {
VisualMissionItem* item = qobject_cast<VisualMissionItem*>(_visualItems->get(i));
VisualMissionItem* item = _visualItems->value<VisualMissionItem*>(i);
item->setParentItem(nullptr);
item->setHasCurrentChildItem(false);
// Set up non-coordinate item child hierarchy
if (item->specifiesCoordinate()) {
item->childItems()->clear();
currentParentItem = item;
} else if (item->isSimpleItem()) {
item->setParentItem(currentParentItem);
currentParentItem->childItems()->append(item);
if (item->isCurrentItem()) {
currentParentItem->setHasCurrentChildItem(true);
}
}
}
}
......@@ -2308,21 +2315,27 @@ void MissionController::setCurrentPlanViewSeqNum(int sequenceNumber, bool force)
if (pVI->sequenceNumber() == sequenceNumber) {
pVI->setIsCurrentItem(true);
pVI->setHasCurrentChildItem(false);
_currentPlanViewItem = pVI;
_currentPlanViewSeqNum = sequenceNumber;
_currentPlanViewVIIndex = viIndex;
if (pVI->specifiesCoordinate() && !pVI->isStandaloneCoordinate()) {
// Determine split segment used to display line split editing ui.
for (int j=viIndex-1; j>0; j--) {
VisualMissionItem* pPrev = qobject_cast<VisualMissionItem*>(_visualItems->get(j));
if (pPrev->specifiesCoordinate() && !pPrev->isStandaloneCoordinate()) {
VisualItemPair splitPair(pPrev, pVI);
if (_linesTable.contains(splitPair)) {
_splitSegment = _linesTable[splitPair];
if (pVI->specifiesCoordinate()) {
if (!pVI->isStandaloneCoordinate()) {
// Determine split segment used to display line split editing ui.
for (int j=viIndex-1; j>0; j--) {
VisualMissionItem* pPrev = qobject_cast<VisualMissionItem*>(_visualItems->get(j));
if (pPrev->specifiesCoordinate() && !pPrev->isStandaloneCoordinate()) {
VisualItemPair splitPair(pPrev, pVI);
if (_linesTable.contains(splitPair)) {
_splitSegment = _linesTable[splitPair];
}
}
}
}
} else if (pVI->parentItem()) {
pVI->parentItem()->setHasCurrentChildItem(true);
}
} else {
pVI->setIsCurrentItem(false);
......
......@@ -26,21 +26,6 @@ VisualMissionItem::VisualMissionItem(Vehicle* vehicle, bool flyView, QObject* pa
: QObject (parent)
, _vehicle (vehicle)
, _flyView (flyView)
, _isCurrentItem (false)
, _dirty (false)
, _homePositionSpecialCase (false)
, _terrainAltitude (qQNaN())
, _altDifference (0.0)
, _altPercent (0.0)
, _terrainPercent (qQNaN())
, _terrainCollision (false)
, _azimuth (0.0)
, _distance (0.0)
, _missionGimbalYaw (qQNaN())
, _missionVehicleYaw (qQNaN())
, _wizardMode (false)
, _lastLatTerrainQuery (0)
, _lastLonTerrainQuery (0)
{
_commonInit();
}
......@@ -49,16 +34,6 @@ VisualMissionItem::VisualMissionItem(const VisualMissionItem& other, bool flyVie
: QObject (parent)
, _vehicle (nullptr)
, _flyView (flyView)
, _isCurrentItem (false)
, _dirty (false)
, _homePositionSpecialCase (false)
, _altDifference (0.0)
, _altPercent (0.0)
, _terrainPercent (qQNaN())
, _terrainCollision (false)
, _azimuth (0.0)
, _distance (0.0)
, _wizardMode (false)
{
*this = other;
......@@ -106,6 +81,14 @@ void VisualMissionItem::setIsCurrentItem(bool isCurrentItem)
}
}
void VisualMissionItem::setHasCurrentChildItem(bool hasCurrentChildItem)
{
if (_hasCurrentChildItem != hasCurrentChildItem) {
_hasCurrentChildItem = hasCurrentChildItem;
emit hasCurrentChildItemChanged(hasCurrentChildItem);
}
}
void VisualMissionItem::setDistance(double distance)
{
if (!qFuzzyCompare(_distance, distance)) {
......@@ -228,3 +211,11 @@ void VisualMissionItem::setWizardMode(bool wizardMode)
emit wizardModeChanged(_wizardMode);
}
}
void VisualMissionItem::setParentItem(VisualMissionItem* parentItem)
{
if (_parentItem != parentItem) {
_parentItem = parentItem;
emit parentItemChanged(parentItem);
}
}
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment