void InfoBoxContentTeamBearingDiff::Update(InfoBoxWindow &infobox) { #ifndef OLD_TASK infobox.SetInvalid(); return; #else if (!way_points.verify_index(XCSoarInterface::SettingsComputer(). TeamCodeRefWaypoint) || !XCSoarInterface::SettingsComputer().TeammateCodeValid) { infobox.SetInvalid(); return; } // Set Value Angle Value = XCSoarInterface::Calculated().TeammateBearing - XCSoarInterface::Basic().TrackBearing; SetValueBearingDifference(infobox, Value); #endif // Set Comment if (!XCSoarInterface::SettingsComputer().TeamFlarmIdTarget.defined()) infobox.SetCommentInvalid(); else if (!string_is_empty(XCSoarInterface::SettingsComputer().TeamFlarmCNTarget)) infobox.SetComment(XCSoarInterface::SettingsComputer().TeamFlarmCNTarget); else infobox.SetComment(_T("???")); if (XCSoarInterface::Basic().flarm.FindTraffic( XCSoarInterface::SettingsComputer().TeamFlarmIdTarget) != NULL) infobox.SetColorBottom(2); else infobox.SetColorBottom(1); }
void InfoBoxContentBearingDiff::Update(InfoBoxData &data) { const NMEAInfo &basic = CommonInterface::Basic(); const TaskStats &task_stats = CommonInterface::Calculated().task_stats; const GeoVector &vector_remaining = task_stats.current_leg.vector_remaining; if (!basic.track_available || !task_stats.task_valid || !vector_remaining.IsValid() || vector_remaining.distance <= fixed(10)) { data.SetInvalid(); return; } Angle Value = vector_remaining.bearing - basic.track; SetValueBearingDifference(data, Value); }
void InfoBoxContentNextWaypoint::Update(InfoBoxWindow &infobox) { // use proper non-terminal next task stats const Waypoint* way_point = protected_task_manager != NULL ? protected_task_manager->getActiveWaypoint() : NULL; if (!way_point) { infobox.SetTitle(_("Next")); infobox.SetInvalid(); return; } SetTitleFromWaypointName(infobox, way_point); // Set Comment if (way_point->radio_frequency.IsDefined()) { StaticString<128> comment; const unsigned freq = way_point->radio_frequency.GetKiloHertz(); _sntprintf(comment.buffer(), comment.MAX_SIZE, _T("%u.%03u %s"), freq / 1000, freq % 1000, way_point->Comment.c_str()); infobox.SetComment(comment); } else infobox.SetComment(way_point->Comment.c_str()); const GlideResult &solution_remaining = XCSoarInterface::Calculated().task_stats.current_leg.solution_remaining; if (!XCSoarInterface::Basic().track_available || !XCSoarInterface::Calculated().task_stats.task_valid || !solution_remaining.defined() || solution_remaining.Vector.Distance <= fixed(10)) { infobox.SetValueInvalid(); return; } // Set Value Angle Value = solution_remaining.Vector.Bearing - XCSoarInterface::Basic().track; SetValueBearingDifference(infobox, Value); // Set Color (blue/black) infobox.SetColor(solution_remaining.is_final_glide() ? 2 : 0); }
void InfoBoxContentBearingDiff::Update(InfoBoxWindow &infobox) { if (!XCSoarInterface::Calculated().task_stats.task_valid || XCSoarInterface::Calculated().task_stats.current_leg.solution_remaining. Vector.Distance <= fixed(10)) { infobox.SetInvalid(); return; } // Set Value Angle Value = (XCSoarInterface::Calculated().task_stats.current_leg. solution_remaining.Vector.Bearing - XCSoarInterface::Basic(). TrackBearing); SetValueBearingDifference(infobox, Value); }
void InfoBoxContentBearingDiff::Update(InfoBoxWindow &infobox) { const GlideResult &solution_remaining = XCSoarInterface::Calculated().task_stats.current_leg.solution_remaining; if (!XCSoarInterface::Basic().track_available || !XCSoarInterface::Calculated().task_stats.task_valid || !solution_remaining.defined() || solution_remaining. Vector.Distance <= fixed(10)) { infobox.SetInvalid(); return; } // Set Value Angle Value = solution_remaining.Vector.Bearing - XCSoarInterface::Basic().track; SetValueBearingDifference(infobox, Value); }
void InfoBoxContentNextWaypoint::Update(InfoBoxData &data) { // use proper non-terminal next task stats const Waypoint* way_point = protected_task_manager != NULL ? protected_task_manager->GetActiveWaypoint() : NULL; if (!way_point) { data.SetTitle(_("Next")); data.SetInvalid(); return; } SetTitleFromWaypointName(data, way_point); // Set Comment if (way_point->radio_frequency.IsDefined()) { const unsigned freq = way_point->radio_frequency.GetKiloHertz(); data.FormatComment(_T("%u.%03u %s"), freq / 1000, freq % 1000, way_point->comment.c_str()); } else data.SetComment(way_point->comment.c_str()); const NMEAInfo &basic = CommonInterface::Basic(); const TaskStats &task_stats = CommonInterface::Calculated().task_stats; const GlideResult &solution_remaining = task_stats.current_leg.solution_remaining; const GeoVector &vector_remaining = task_stats.current_leg.vector_remaining; if (!basic.track_available || !task_stats.task_valid || !vector_remaining.IsValid()) { data.SetValueInvalid(); return; } // Set Value Angle Value = vector_remaining.bearing - basic.track; SetValueBearingDifference(data, Value); // Set Color (blue/black) data.SetValueColor(solution_remaining.IsFinalGlide() ? 2 : 0); }
void InfoBoxContentNextWaypoint::Update(InfoBoxWindow &infobox) { // use proper non-terminal next task stats const Waypoint* way_point = protected_task_manager.getActiveWaypoint(); if (!way_point) { infobox.SetTitle(_("Next")); infobox.SetInvalid(); return; } SetTitleFromWaypointName(infobox, way_point); if (!XCSoarInterface::Calculated().task_stats.task_valid || XCSoarInterface::Calculated().task_stats.current_leg.solution_remaining. Vector.Distance <= fixed(10)) { infobox.SetInvalid(); return; } // Set Value Angle Value = (XCSoarInterface::Calculated().task_stats.current_leg. solution_remaining.Vector.Bearing - XCSoarInterface::Basic(). TrackBearing); SetValueBearingDifference(infobox, Value); // Set Comment infobox.SetComment(way_point->Comment.c_str()); // Set Color if (XCSoarInterface::Calculated().task_stats.current_leg. solution_remaining.is_final_glide()) // blue infobox.SetColor(2); else // black infobox.SetColor(0); }
void InfoBoxContentAlternateName::Update(InfoBoxWindow &infobox) { if (protected_task_manager == NULL) { infobox.SetInvalid(); return; } const AbortTask::AlternateVector alternates = protected_task_manager->getAlternates(); if (alternates.size() > 0 && index >= alternates.size()) index = alternates.size() - 1; TCHAR tmp[32]; _stprintf(tmp, _T("Altrn %d"), index+1); infobox.SetTitle(tmp); const Waypoint* way_point = (alternates.size()>index) ? &alternates[index].first : NULL; SetCommentFromWaypointName(infobox, way_point); if (!way_point) { infobox.SetInvalid(); return; } const GlideResult& solution = alternates[index].second; // Set Value Angle Value = solution.Vector.Bearing - XCSoarInterface::Basic().track; SetValueBearingDifference(infobox, Value); // Set Color (blue/black) infobox.SetColor(solution.glide_reachable(true) ? 2 : 0); }