void WeatherMapOverlayListWidget::UseClicked(unsigned i) { if (int(i) == active_index) { DisableClicked(); return; } auto *map = UIGlobals::GetMap(); if (map == nullptr) return; const Path path = items[i].path; std::unique_ptr<MapOverlayBitmap> bmp; try { bmp.reset(new MapOverlayBitmap(items[i].path)); } catch (const std::exception &e) { ShowError(e, _("Weather")); return; } SetupOverlay(*bmp, path.GetBase().c_str()); map->SetOverlay(std::move(bmp)); UpdateActiveIndex(); }
void ManagedFileListWidget::OnDownloadComplete(Path path_relative, bool success) { const auto name = path_relative.GetBase(); if (name == nullptr) return; const WideToUTF8Converter name2(name.c_str()); if (!name2.IsValid()) return; const std::string name3(name2); mutex.Lock(); downloads.erase(name3); if (StringIsEqual(name2, "repository")) { repository_failed = !success; if (success) repository_modified = true; } else if (!success) failures.insert(name3); mutex.Unlock(); SendNotification(); }
void ManagedFileListWidget::OnDownloadAdded(Path path_relative, int64_t size, int64_t position) { const auto name = path_relative.GetBase(); if (name == nullptr) return; const WideToUTF8Converter name2(name.c_str()); if (!name2.IsValid()) return; const std::string name3(name2); mutex.Lock(); downloads[name3] = DownloadStatus{size, position}; failures.erase(name3); mutex.Unlock(); SendNotification(); }
MapOverlayBitmap::MapOverlayBitmap(Path path) :label((path.GetBase() != nullptr ? path.GetBase() : path).c_str()) { bounds = bitmap.LoadGeoFile(path); simple_bounds = bounds.GetBounds(); }
void InterfaceConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { const UISettings &settings = CommonInterface::GetUISettings(); RowFormWidget::Prepare(parent, rc); AddInteger(_("Text size"), nullptr, _T("%d %%"), _T("%d"), 75, 200, 5, settings.scale); AddFile(_("Events"), _("The Input Events file defines the menu system and how XCSoar responds to " "button presses and events from external devices."), ProfileKeys::InputFile, _T("*.xci\0")); SetExpertRow(InputFile); #ifndef HAVE_NATIVE_GETTEXT WndProperty *wp; wp = AddEnum(_("Language"), _("The language options selects translations for English texts to other " "languages. Select English for a native interface or Automatic to localise " "XCSoar according to the system settings.")); if (wp != nullptr) { DataFieldEnum &df = *(DataFieldEnum *)wp->GetDataField(); df.addEnumText(_("Automatic")); df.addEnumText(_T("English")); #ifdef HAVE_BUILTIN_LANGUAGES for (const BuiltinLanguage *l = language_table; l->resource != nullptr; ++l) { StaticString<100> display_string; display_string.Format(_T("%s (%s)"), l->name, l->resource); df.addEnumText(l->resource, display_string); } #endif LanguageFileVisitor lfv(df); VisitDataFiles(_T("*.mo"), lfv); df.Sort(2); auto value_buffer = Profile::GetPath(ProfileKeys::LanguageFile); Path value = value_buffer; if (value.IsNull()) value = Path(_T("")); if (value == Path(_T("none"))) df.Set(1); else if (!value.IsEmpty() && value != Path(_T("auto"))) { const Path base = value.GetBase(); if (base != nullptr) df.Set(base.c_str()); } wp->RefreshDisplay(); } #endif /* !HAVE_NATIVE_GETTEXT */ AddTime(_("Menu timeout"), _("This determines how long menus will appear on screen if the user does not make any button " "presses or interacts with the computer."), 1, 60, 1, settings.menu_timeout / 2); SetExpertRow(MenuTimeout); static constexpr StaticEnumChoice text_input_list[] = { { (unsigned)DialogSettings::TextInputStyle::Default, N_("Default") }, { (unsigned)DialogSettings::TextInputStyle::Keyboard, N_("Keyboard") }, { (unsigned)DialogSettings::TextInputStyle::HighScore, N_("HighScore Style") }, { 0 } }; AddEnum(_("Text input style"), _("Determines how the user is prompted for text input (filename, teamcode etc.)"), text_input_list, (unsigned)settings.dialog.text_input_style); SetExpertRow(TextInput); /* on-screen keyboard doesn't work without a pointing device (mouse or touch screen) */ SetRowVisible(TextInput, HasPointer()); #ifdef HAVE_VIBRATOR static constexpr StaticEnumChoice haptic_feedback_list[] = { { (unsigned)UISettings::HapticFeedback::DEFAULT, N_("OS settings") }, { (unsigned)UISettings::HapticFeedback::OFF, N_("Off") }, { (unsigned)UISettings::HapticFeedback::ON, N_("On") }, { 0 } }; wp = AddEnum(_("Haptic feedback"), _("Determines if haptic feedback like vibration is used."), haptic_feedback_list, (unsigned)settings.haptic_feedback); SetExpertRow(HapticFeedback); #endif /* HAVE_VIBRATOR */ }