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 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(); }