Example #1
0
void
InfoBoxContentHomeDistance::Update(InfoBoxWindow &infobox)
{
  const CommonStats &common_stats = XCSoarInterface::Calculated().common_stats;

  // Set Value
  SetValueFromDistance(infobox, common_stats.vector_home.Distance);

  if (XCSoarInterface::Basic().track_available) {
    Angle bd = common_stats.vector_home.Bearing - XCSoarInterface::Basic().track;
    SetCommentBearingDifference(infobox, bd);
  } else
    infobox.SetCommentInvalid();
}
Example #2
0
void
InfoBoxContentHomeDistance::Update(InfoBoxData &data)
{
  const NMEAInfo &basic = CommonInterface::Basic();
  const CommonStats &common_stats = XCSoarInterface::Calculated().common_stats;

  if (!common_stats.vector_home.IsValid()) {
    data.SetInvalid();
    return;
  }

  // Set Value
  SetValueFromDistance(data, common_stats.vector_home.distance);

  if (basic.track_available) {
    Angle bd = common_stats.vector_home.bearing - basic.track;
    SetCommentBearingDifference(data, bd);
  } else
    data.SetCommentInvalid();
}
Example #3
0
void
InfoBoxContentNextDistance::Update(InfoBoxData &data)
{
  // use proper non-terminal next task stats

  const NMEAInfo &basic = CommonInterface::Basic();
  const TaskStats &task_stats = XCSoarInterface::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
  SetValueFromDistance(data, vector_remaining.distance);

  if (basic.track_available) {
    Angle bd = vector_remaining.bearing - basic.track;
    SetCommentBearingDifference(data, bd);
  } else
    data.SetCommentInvalid();
}
Example #4
0
void
InfoBoxContentNextDistance::Update(InfoBoxWindow &infobox)
{
  // use proper non-terminal next task stats

  const TaskStats &task_stats = XCSoarInterface::Calculated().task_stats;
  const GlideResult &solution_remaining =
    XCSoarInterface::Calculated().task_stats.current_leg.solution_remaining;
  if (!task_stats.task_valid ||
      !solution_remaining.defined()) {
    infobox.SetInvalid();
    return;
  }

  // Set Value
  SetValueFromDistance(infobox, solution_remaining.Vector.Distance);

  if (XCSoarInterface::Basic().track_available) {
    Angle bd = solution_remaining.Vector.Bearing - XCSoarInterface::Basic().track;
    SetCommentBearingDifference(infobox, bd);
  } else
    infobox.SetCommentInvalid();
}