void AirspaceDetailsWidget::Prepare(ContainerWindow &parent, const PixelRect &rc) { const NMEAInfo &basic = CommonInterface::Basic(); TCHAR buffer[64]; AddMultiLine(airspace.GetName()); if (!airspace.GetRadioText().empty()) AddReadOnly(_("Radio"), nullptr, airspace.GetRadioText().c_str()); AddReadOnly(_("Type"), nullptr, AirspaceFormatter::GetClass(airspace)); AirspaceFormatter::FormatAltitude(buffer, airspace.GetTop()); AddReadOnly(_("Top"), nullptr, buffer); AirspaceFormatter::FormatAltitude(buffer, airspace.GetBase()); AddReadOnly(_("Base"), nullptr, buffer); if (warnings != nullptr) { const GeoPoint closest = airspace.ClosestPoint(basic.location, warnings->GetProjection()); const auto distance = closest.Distance(basic.location); FormatUserDistance(distance, buffer); AddReadOnly(_("Distance"), nullptr, buffer); } }
static DataField * CreateDistanceDataField(DataFieldListener *listener) { DataFieldEnum *df = new DataFieldEnum(listener); df->addEnumText(_T("*")); TCHAR buffer[15]; for (unsigned i = 1; i < ARRAY_SIZE(distance_filter_items); i++) { FormatUserDistance(Units::ToSysDistance(fixed(distance_filter_items[i])), buffer); df->addEnumText(buffer); } df->Set(dialog_state.distance_index); return df; }
static void PrepareData() { dialog_state.name.clear(); UpdateNameButtonCaption(); // initialize datafieldenum for Distance DataFieldEnum* data_field = (DataFieldEnum*)distance_filter->GetDataField(); data_field->addEnumText(_T("*")); TCHAR buffer[15]; for (unsigned i = 1; i < ARRAY_SIZE(distance_filter_items); i++) { FormatUserDistance(Units::ToSysDistance(fixed(distance_filter_items[i])), buffer); data_field->addEnumText(buffer); } data_field->SetAsInteger(dialog_state.distance_index); distance_filter->RefreshDisplay(); InitializeDirection(false); // initialize datafieldenum for Type data_field = (DataFieldEnum*)type_filter->GetDataField(); data_field->addEnumTexts(type_filter_items); const TCHAR *p = Profile::GetPathBase(ProfileKeys::WaypointFile); if (p != NULL) data_field->replaceEnumText((unsigned)TypeFilter::FILE_1, p); p = Profile::GetPathBase(ProfileKeys::AdditionalWaypointFile); if (p != NULL) data_field->replaceEnumText((unsigned)TypeFilter::FILE_2, p); data_field->SetAsInteger((int)dialog_state.type_index); type_filter->RefreshDisplay(); }