void InterfaceConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { const UISettings &settings = CommonInterface::GetUISettings(); RowFormWidget::Prepare(parent, rc); buttonFonts = ConfigPanel::GetExtraButton(1); assert(buttonFonts); #ifdef HAVE_BLANK AddBoolean(_("Auto. blank"), _("This determines whether to blank the display after a long period of inactivity " "when operating on internal battery power."), settings.display.enable_auto_blank); #endif AddFileReader(_("Events"), _("The Input Events file defines the menu system and how XCSoar responds to " "button presses and events from external devices."), szProfileInputFile, _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 != NULL) { DataFieldEnum &df = *(DataFieldEnum *)wp->GetDataField(); df.addEnumText(_("Automatic")); df.addEnumText(_("English")); #ifdef HAVE_BUILTIN_LANGUAGES for (const struct builtin_language *l = language_table; l->resource != NULL; ++l) df.addEnumText(l->resource); #endif LanguageFileVisitor lfv(df); VisitDataFiles(_T("*.mo"), lfv); df.Sort(2); TCHAR value[MAX_PATH]; if (!Profile::GetPath(szProfileLanguageFile, value)) value[0] = _T('\0'); if (_tcscmp(value, _T("none")) == 0) df.Set(1); else if (!StringIsEmpty(value) && _tcscmp(value, _T("auto")) != 0) { const TCHAR *base = BaseName(value); if (base != NULL) df.SetAsString(base); } wp->RefreshDisplay(); } #endif /* !HAVE_NATIVE_GETTEXT */ AddFileReader(_("Status message"), _("The status file can be used to define sounds to be played when certain " "events occur, and how long various status messages will appear on screen."), szProfileStatusFile, _T("*.xcs\0")); SetExpertRow(StatusFile); 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 gcc_constexpr_data 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), hide the option on Altair */ SetRowVisible(TextInput, HasPointer()); #ifdef HAVE_VIBRATOR static gcc_constexpr_data 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 */ }
void InterfaceConfigPanel::Prepare(ContainerWindow &parent, const PixelRect &rc) { const UISettings &settings = CommonInterface::GetUISettings(); RowFormWidget::Prepare(parent, rc); buttonFonts = ConfigPanel::GetExtraButton(1); assert(buttonFonts); #ifdef HAVE_BLANK AddBoolean(_("Auto. blank"), _("This determines whether to blank the display after a long period of inactivity " "when operating on internal battery power."), settings.display.enable_auto_blank); #endif AddFileReader(_("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 != NULL) { DataFieldEnum &df = *(DataFieldEnum *)wp->GetDataField(); df.addEnumText(_("Automatic")); df.addEnumText(_T("English")); #ifdef HAVE_BUILTIN_LANGUAGES for (const BuiltinLanguage *l = language_table; l->resource != NULL; ++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); TCHAR value[MAX_PATH]; if (!Profile::GetPath(ProfileKeys::LanguageFile, value)) value[0] = _T('\0'); if (StringIsEqual(value, _T("none"))) df.Set(1); else if (!StringIsEmpty(value) && !StringIsEqual(value, _T("auto"))) { const TCHAR *base = BaseName(value); if (base != NULL) df.Set(base); } wp->RefreshDisplay(); } #endif /* !HAVE_NATIVE_GETTEXT */ AddFileReader(_("Status message"), _("The status file can be used to define sounds to be played when certain " "events occur, and how long various status messages will appear on screen."), ProfileKeys::StatusFile, _T("*.xcs\0")); SetExpertRow(StatusFile); 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); #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 */ }
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 */ }