void UpdateInfoBoxNextDistance(InfoBoxData &data) { const Waypoint* way_point = protected_task_manager != NULL ? protected_task_manager->GetActiveWaypoint() : NULL; // Set title if (!way_point) data.SetTitle(_("WP Dist")); else data.SetTitle(way_point->name.c_str()); // use proper non-terminal next task stats const NMEAInfo &basic = CommonInterface::Basic(); const TaskStats &task_stats = CommonInterface::Calculated().task_stats; const GeoVector &vector_remaining = task_stats.current_leg.vector_remaining; if (!task_stats.task_valid || !vector_remaining.IsValid()) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(vector_remaining.distance); data.SetValueColor(task_stats.inside_oz ? 3 : 0); if (basic.track_available) { Angle bd = vector_remaining.bearing - basic.track; data.SetCommentFromBearingDifference(bd); } else data.SetCommentInvalid(); }
void UpdateInfoBoxNextDistanceNominal(InfoBoxData &data) { const Waypoint* way_point = protected_task_manager != NULL ? protected_task_manager->GetActiveWaypoint() : NULL; if (!way_point) { data.SetInvalid(); return; } const NMEAInfo &basic = CommonInterface::Basic(); const TaskStats &task_stats = CommonInterface::Calculated().task_stats; if (!task_stats.task_valid || !basic.location_available) { data.SetInvalid(); return; } const GeoVector vector(basic.location, way_point->location); if (!vector.IsValid()) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(vector.distance); data.SetValueColor(task_stats.inside_oz ? 3 : 0); data.SetComment(vector.bearing); }
void InfoBoxContentOLC::Update(InfoBoxData &data) { const ComputerSettings &settings_computer = CommonInterface::GetComputerSettings(); if (!settings_computer.contest.enable || !protected_task_manager) { data.SetInvalid(); return; } int result_index = (settings_computer.contest.contest == Contest::OLC_LEAGUE) ? 0 : -1; const ContestResult& result_olc = CommonInterface::Calculated().contest_stats.GetResult(result_index); if (result_olc.score < fixed(1)) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(result_olc.distance); data.UnsafeFormatComment(_T("%.1f pts"), (double)result_olc.score); }
void InfoBoxContentNearestAirspaceHorizontal::Update(InfoBoxData &data) { NearestAirspace nearest = FindNearestHorizontalAirspace(); if (!nearest.IsDefined()) { data.SetInvalid(); return; } data.SetValueFromDistance(nearest.distance); data.SetComment(nearest.airspace->GetName()); }
void UpdateInfoBoxTaskAADistanceMin(InfoBoxData &data) { const auto &calculated = CommonInterface::Calculated(); const TaskStats &task_stats = calculated.ordered_task_stats; if (!task_stats.has_targets) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(task_stats.distance_min); }
void UpdateInfoBoxTerrainCollision(InfoBoxData &data) { const NMEAInfo &basic = CommonInterface::Basic(); const TerrainInfo &calculated = CommonInterface::Calculated(); if (!basic.location_available || !calculated.terrain_warning) { data.SetInvalid(); return; } fixed distance = basic.location.Distance(calculated.terrain_warning_location); data.SetValueFromDistance(distance); }
void UpdateInfoBoxTaskAADistance(InfoBoxData &data) { const auto &calculated = CommonInterface::Calculated(); const TaskStats &task_stats = calculated.ordered_task_stats; if (!task_stats.has_targets || !task_stats.total.planned.IsDefined()) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(task_stats.total.planned.GetDistance()); }
void InfoBoxContentTaskAADistanceMin::Update(InfoBoxData &data) { const TaskStats &task_stats = XCSoarInterface::Calculated().task_stats; const CommonStats &common_stats = XCSoarInterface::Calculated().common_stats; if (!common_stats.ordered_has_targets || !task_stats.task_valid) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(task_stats.distance_min); }
void UpdateInfoBoxFinalDistance(InfoBoxData &data) { const auto &calculated = CommonInterface::Calculated(); const TaskStats &task_stats = calculated.task_stats; if (!task_stats.task_valid || !task_stats.current_leg.vector_remaining.IsValid() || !task_stats.total.remaining.IsDefined()) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(task_stats.task_finished ? task_stats.current_leg.vector_remaining.distance : task_stats.total.remaining.GetDistance()); }
void InfoBoxContentFinalDistance::Update(InfoBoxData &data) { const TaskStats &task_stats = XCSoarInterface::Calculated().task_stats; if (!task_stats.task_valid || !task_stats.current_leg.vector_remaining.IsValid() || !task_stats.total.remaining.IsDefined()) { data.SetInvalid(); return; } const CommonStats &common_stats = XCSoarInterface::Calculated().common_stats; // Set Value data.SetValueFromDistance(common_stats.task_finished ? task_stats.current_leg.vector_remaining.distance : task_stats.total.remaining.get_distance()); }
void UpdateInfoBoxTakeoffDistance(InfoBoxData &data) { const NMEAInfo &basic = CommonInterface::Basic(); const FlyingState &flight = CommonInterface::Calculated().flight; if (!basic.location_available || !flight.flying || !flight.takeoff_location.IsValid()) { data.SetInvalid(); return; } const GeoVector vector(basic.location, flight.takeoff_location); data.SetValueFromDistance(vector.distance); if (basic.track_available) data.SetCommentFromBearingDifference(vector.bearing - basic.track); else data.SetCommentInvalid(); }
void UpdateInfoBoxHomeDistance(InfoBoxData &data) { const NMEAInfo &basic = CommonInterface::Basic(); const CommonStats &common_stats = CommonInterface::Calculated().common_stats; if (!common_stats.vector_home.IsValid()) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(common_stats.vector_home.distance); if (basic.track_available) { Angle bd = common_stats.vector_home.bearing - basic.track; data.SetCommentFromBearingDifference(bd); } else data.SetCommentInvalid(); }
void InfoBoxContentOLC::Update(InfoBoxData &data) { if (!XCSoarInterface::GetComputerSettings().task.enable_olc || !protected_task_manager) { data.SetInvalid(); return; } const ContestResult& result_olc = XCSoarInterface::Calculated().contest_stats.GetResult(); if (result_olc.score < fixed_one) { data.SetInvalid(); return; } // Set Value data.SetValueFromDistance(result_olc.distance); data.UnsafeFormatComment(_T("%.1f pts"), (double)result_olc.score); }
void UpdateInfoBoxTeamDistance(InfoBoxData &data) { const TeamCodeSettings &settings = CommonInterface::GetComputerSettings().team_code; const TeamInfo &teamcode_info = CommonInterface::Calculated(); // Set Value if (teamcode_info.teammate_available) data.SetValueFromDistance(teamcode_info.teammate_vector.distance); else data.SetValueInvalid(); // Set Comment if (!settings.team_flarm_id.IsDefined()) data.SetCommentInvalid(); else if (!StringIsEmpty(settings.team_flarm_callsign)) data.SetComment(settings.team_flarm_callsign); else data.SetComment(_T("???")); data.SetCommentColor(teamcode_info.flarm_teammate_code_current ? 2 : 1); }