Commit Graph
32 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 094d28d451 Misc portrait layout fixes, minor build.gradle.kts change 2026-09-18 14:08:08 -06:00
Henrik Rydgård 341e034f0b Handle savedata files better on the game browser tab 2026-02-18 11:54:13 +01:00
Henrik Rydgård b8fced5b41 Path code cleanup, move some UI code (#21037)
* Move a bunch of path logic into Core/Util/PathUtil.cpp/h

.

* Move GameImageView out from SaveDataScreen

* More cleanup, add a translation string
2025-11-25 00:44:24 +01:00
Henrik Rydgård 3116eba395 More UI work (#21035)
* Improve a couple of on-screen buttons (menu, fastforward)

* Fix the new continue button, oops

* Add some missing translations

* Split a translation string to make portrait look better

* More GameScreen redesign

* Don't accidentally go into game-specific mode

* Fix layout issue with popupscreens, fix context menu positioning

* One more icon
2025-11-24 20:33:13 +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 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 58456ae950 Remove the UI::EventReturn return values. Makes editing the UI nicer. 2025-09-15 11:09:00 -06:00
Henrik Rydgård 2e0ca023ae Build warning fixes 2025-04-17 11:05:52 +02: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 66993c8ff2 Android buildfix, warning fix 2024-09-26 12:04:29 +02:00
Henrik Rydgård 8186f14a57 Much more UI work on savedata import
fix
2024-09-07 15:28:57 +02:00
Henrik Rydgård 3a047369fd Add ability to install savedata from GameFAQs-style ZIP files 2024-09-05 17:12:10 +02: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 ec6d330ae4 Move AsyncImageFileView to Common, which required some more shuffling around of stuff. 2022-11-21 20:38:20 +01:00
Henrik Rydgård 9f3851678e Add tags to all our UI screens. Useful to debug UI problems. 2022-09-16 10:14:00 +02:00
Unknown W. Brackets 09ca16361c UI: Asynchronously update size and dates on sort.
This means items shift and jump into place, but it also means we don't
hang even for large savedata collections.
2021-09-23 22:31:43 -07:00
Unknown W. Brackets 8c937f45f7 UI: Cache save size on save buttons.
It was calculating the size and date for each permutation, which became
monstrously slow on Android with scoped storage.
2021-09-23 22:14:25 -07:00
Henrik Rydgård 025bcb1673 Introduce Path, start using it all over the place.
Still lots left to convert!

Convert GetSysDirectory to return Path.

More buildfixing

Remove unnecessary Path( constructors
2021-05-13 10:39:16 +02:00
Unknown W. Brackets b050a07c89 UI: Add search to savedata manager. 2021-03-03 00:08:03 -08:00
Henrik Rydgård 4f43cff5ca Move fileutil, net, image loaders, ui to Common. (#13506)
* Move and rename file_util/fd_util to Common/File/FileUtil and DirListing

Let's also move net while we're at it.

Move the ZIM/PNG loaders over to Common.

Move the UI framework into Common

iOS buildfix

* Buildfix

* Buildfixes

* Apple buildfix

* This typo again..

* UWP buildfix

* Fix build of PPSSPPQt, such as it is (it's not in good condition...)

* Guess what? Another buildfix.
2020-10-04 20:48:47 +02:00
Unknown W. Brackets 38461ed821 UI: Allow sorting saves by date too. 2018-11-25 08:21:31 -08:00
Unknown W. Brackets f0be2d5f88 UI: Quit sorting when done.
This will prevent keeping the gameInfo objects alive unnecessarily.
2018-06-06 18:39:21 +02:00
Unknown W. Brackets 4fb606839c UI: Add option to sort saves by size.
It may be slow with many saves, but it's also very useful.  It doesn't
seem too bad as an option.
2018-06-06 18:39:21 +02:00
Florent Castelli e0ff68b3f6 c++11: Remove compat header base/functional.h
We want a proper C++11, not tr1. We don't target those compilers anyway.
2016-10-12 11:32:45 +02:00
Unknown W. Brackets e55198f7e7 Correct some initialization order warnings.
Also, another missing init with IRBlocks.
2016-08-05 10:46:11 -07:00
Unknown W. Brackets 50083a3c0c Avoid reloading save info on move/resize.
We don't really need to do this all the time, we can just do it on exit of
the entire screen.  Also fixes a crash on close.  Fixes #8619.
2016-03-01 18:19:18 -08:00
Henrik Rydgard b56f21e4f0 More savedata UI polish 2015-06-12 14:46:34 +02:00
Henrik Rydgard 00094e0fcc More work on savedata UI. 2015-06-12 11:40:50 +02:00
Henrik Rydgard 381e0c0fe3 Implement basic savedata UI. Not much actual functionality yet but can browse saves and states. 2015-06-11 23:59:02 +02:00
Henrik Rydgard 084aad74c3 Make GameInfoCache understand PSP savedata as a "game" type. Use it to create a basic savedata listing screen. 2015-06-11 20:22:16 +02:00