void InfoBoxContentAlternateGR::Update(InfoBoxData &data) { if (protected_task_manager == NULL) { data.SetInvalid(); return; } ProtectedTaskManager::Lease lease(*protected_task_manager); const AlternateList &alternates = lease->GetAlternates(); const AlternatePoint *alternate; if (!alternates.empty()) { if (index >= alternates.size()) index = alternates.size() - 1; alternate = &alternates[index]; } else { alternate = NULL; } data.FormatTitle(_T("Altn %d GR"), index + 1); if (alternate == NULL) { data.SetInvalid(); return; } data.SetComment(alternate->waypoint.name.c_str()); fixed gradient = ::AngleToGradient(alternate->solution.DestinationAngleGround()); if (negative(gradient)) { data.SetValueColor(0); data.SetValue(_T("+++")); return; } if (::GradientValid(gradient)) { data.SetValueFromGlideRatio(gradient); } else { data.SetInvalid(); } // Set Color (blue/black) data.SetValueColor(alternate->solution.IsFinalGlide() ? 2 : 0); }
void InfoBoxContentAlternateName::Update(InfoBoxData &data) { if (protected_task_manager == NULL) { data.SetInvalid(); return; } ProtectedTaskManager::Lease lease(*protected_task_manager); const AlternateList &alternates = lease->GetAlternates(); const AlternatePoint *alternate; if (!alternates.empty()) { if (index >= alternates.size()) index = alternates.size() - 1; alternate = &alternates[index]; } else { alternate = NULL; } data.FormatTitle(_("Altn %d"), index + 1); if (alternate == NULL || !CommonInterface::Basic().track_available) { data.SetInvalid(); return; } data.SetComment(alternate->waypoint.name.c_str()); // Set Value Angle Value = alternate->solution.vector.bearing - CommonInterface::Basic().track; data.SetValueFromBearingDifference(Value); // Set Color (blue/black) data.SetValueColor(alternate->solution.IsFinalGlide() ? 2 : 0); }