Commit Graph
28 Commits
Author SHA1 Message Date
Henrik RydgårdandClaude Opus 5.5 b91bd6af86 Settings: Build the settings screen from pages described as data
Each tab is now a SettingsPage: a list of items (headers, settings, buttons,
hints, links to other pages) that a function builds and views are created
from. Settings are added with page->Setting(&g_Config.x), which takes
the label, the kind of view, the range or choices, units, labels for special
values and the default from the config. The pages keep what depends on the
UI (which settings to show and when, enable rules, and behavior that needs the
screen), and reach the screen through the page's SettingsPageHost.

A page can link to other pages, which open on top of it in the same tab,
under a bar showing where you are, like Tools > Developer tools > Graphics,
where the earlier pages can be clicked to go back to them. The bar has back,
search and help buttons, and the back key also goes back a page (or out of a
search) before leaving the screen. Each page remembers its scroll position.
In portrait there's no tab strip: a page links to the tabs, and the bar shows
just the current page's title. Rotating keeps showing the same page. Moving
between pages only focuses an item when navigating with a keyboard or
controller.

The developer tools are now pages linked from the Tools tab, instead of a
screen of their own. The in-game developer menu and
--start-screen=developertools open the settings on that page. The toggles of
live state (the remote debugger and the MIPS tracer) show and change it
through functions, and pretending to be in-game for the notification tests is
a flag on the OSD. The memory map and memstick tests, only reachable from
commented-out code, are removed.

Search lists the matching settings from all tabs and the pages they link to,
grouped by where they are. Each result goes to the setting on its page,
scrolled to and highlighted (outlined, when picked with a mouse or touch), or
for a page, opens it. This replaces the search tab and the old filter that
hid the views that didn't match, and with them ShowSearchControls. Changing
tabs leaves the search.

The pages, the bar and search are in SettingsPagesDialogScreen, between the
tabbed dialog screen and the settings screen, so the other tabbed screens
keep plain tabs.

Other visible changes:
- Reset buttons that went to the wrong value now go to the real default: the
  touch control auto-hide delay (was 20 seconds instead of 8), the mouse
  wheel delay (1 ms, below its own range, instead of 80) and the UI size (0
  instead of -1 on desktop). The alternative speeds get a reset button.
- Units are shown on more sliders (frames, MHz, seconds, Hz), and popups no
  longer spell out what 0 means in the units, since the zero label does.
  Units of up to three characters (%, x, ms, MHz) aren't translated.
- The Android HW scaler hides the scales the display is too small for,
  instead of cutting the list short.
- Choices are translated in the setting's own section.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 15:26:58 +01:00
Henrik Rydgård 59f545e804 Fix issue with the current tab not being saved through screen recreation 2026-05-12 10:13:00 +02:00
Henrik Rydgård 49d3d3dc37 Settings and dev settings: Preserve the current tab. Minor UI tweaks. 2026-04-06 12:09:40 -06:00
Henrik Rydgård 75453632f9 Handle inset adjustements on the C++ side, handle them better in the UI. 2026-03-14 18:13:37 +01:00
Henrik Rydgård 22b3ad2372 Get rid of the SettingInfoMessage popups 2025-11-23 13:56:34 +01:00
Henrik Rydgård 0d309a5db1 Add titles on developer tools tabs 2025-11-22 10:37:43 +01:00
Henrik Rydgård 8b52cf67af Add a way to put the "ExtraButtons" in a popup menu, use on control mapping screen 2025-11-15 20:44:14 +01:00
Henrik Rydgård 6d1973edfb Add banners on the top of settings pages, if editing game-specific settings show the icon. 2025-11-09 08:51:41 +01:00
Henrik Rydgård 48ba3d99d3 GameSettingsScreen: Add tab icons. In portrait mode, use only icons on the tabs. 2025-11-05 15:29:34 +01:00
Henrik Rydgård 75020e2ed7 Add ability to put icons on tabs 2025-11-05 14:42:49 +01:00
Henrik Rydgård 2b9f2672bb UI screens header cleanup 2025-10-29 00:15:41 +01:00
Henrik Rydgård 7ffd72b32e Rename some screen classes 2025-10-29 00:02:43 +01:00
Henrik Rydgård 42a44e4243 Improve inset handling 2025-10-28 14:54:28 +01:00
Henrik Rydgård 28b9bc2fb3 Make more dev screens usable in portrait by converting them to TabbedDialogScreen 2025-10-23 15:33:09 +02:00
Henrik Rydgård b45d07d6cb Break out TabHolder from Common/UI/ViewGroup.cpp. A few new atlas images 2025-10-23 11:19:20 +02:00
Henrik Rydgård ae7586e313 Fix regression in save data manager search 2025-03-27 14:46:08 +01:00
Henrik Rydgård ad260fa6a8 Implement lazy loading of tabs 2025-03-23 22:48:57 +01:00
Henrik Rydgård 6efb758893 CHange the TabbedDialog create-tab API to allow for future lazy-loading 2025-03-23 22:48:57 +01:00
Henrik Rydgård 76ce11ad2c Remove a vector while keeping settings search working. 2025-03-23 22:48:57 +01:00
Henrik Rydgård 4d43ee5f59 Use the banner support for the search filter notice. 2025-03-23 22:48:57 +01:00
Henrik Rydgård 88b4991753 UI fixes: Rework savedata manager a bit, default keyboard focus to Cancel in confirmation dialogs (#19771)
* Savedata manager screen: Use TabbedUIDialogScreenWithGameBackground

This fixes some minor UI issues on this screen.

* PromptScreen (used for "Are you sure?"): Default keyboard focus to Cancel

Fixes #19770
2024-12-28 10:36:05 +01:00
Henrik Rydgård c5791764d8 Make the i18n T function use std::string_view
Buildfixes, crashfixes

One more

Android buildfix

Buildfix Qt
2024-02-12 18:44:39 +01:00
Henrik Rydgård 19e4de5088 Change global UI messages to use an enum instead of strings.
Makes it easier to add new ones and delete outdated ones without missing
any uses.
2023-09-30 11:37:02 +02:00
Henrik Rydgård c442d1de86 Implement rendering of unlocked achievements. Not final design. 2023-06-26 10:01:42 +02:00
Henrik Rydgård b84a6f83e1 You can now log into RetroAchievements with hardcoded user/pass 2023-06-26 10:01:40 +02:00
Henrik Rydgård cf587d2ccc More cleanup after making PopupTextInputChoice choose method automatically 2023-06-22 09:01:14 +02:00
Henrik Rydgård 90085522ef System information screen: Re-use the TabbedDialogScreen logic
Want to do this before adding any more tabs here.
2023-06-18 12:22:36 +02:00
Henrik Rydgård fffaa41091 Extract the class TabbedUIDialogScreen from GameSettingsScreen. 2023-06-16 13:56:26 +02:00