Commit Graph

314 Commits

Author SHA1 Message Date
lynxnb
3cbbdeda33 Improve OSC default position of sticks and buttons 2023-04-02 18:16:10 +02:00
lynxnb
a799cb63f1 Add separate L3 and R3 buttons to OSC
As part of this commit, a `defaultEnabled` property was added to `OnScreenButton` to determine the default visibility of buttons. This is required because L3 and R3 should be hidden by default and only enabled by the user on demand.
Additionally, the buttons' mask values were added to `ButtonId` members, as adding entries in the middle of the class conflicted with the `ordinal` enum property, making it unfit to use for our purposes.
Finally, the `ControllerType` class was extended with an array of optional buttons. Optional buttons represent buttons that are allowed to be displayed on screen, but shouldn't be included in the controller mapping activity.
2023-04-02 18:16:10 +02:00
lynxnb
acdf4e6823 Introduce constants for default OSC config values 2023-04-02 18:16:10 +02:00
lynxnb
83bc93601f Use EFFECT_TICK instead of CLICK as OSC vibration effect 2023-04-02 18:16:10 +02:00
lynxnb
88e6fc9888 Implement OSC snap to grid functionality 2023-04-02 18:16:10 +02:00
lynxnb
88084016a1 Implement OSC per-button scale functionality 2023-04-02 18:16:10 +02:00
lynxnb
2794af6d06 OSC: delegate config reset to individual buttons 2023-04-02 18:16:10 +02:00
lynxnb
3fc09f0953 Add OnScreenButton properties' missing comments 2023-04-02 18:16:10 +02:00
lynxnb
81eb8fd231 Rework OSC edit mode handling for better extensibility
Edit mode configuration parameters are now shared between the view and the buttons in a small `OnScreenEditInfo` object, avoiding variable duplication about edit state. The `editingTouchHandler` has also been simplified to only lookup the button if one wasn't being edited already.
2023-04-02 18:16:10 +02:00
lynxnb
c4d0d02509 Simplify OnScreenConfiguration
`ControllerConfigurationDummy` was removed as it isn't needed anymore, and the remaining classes simplified.
2023-04-02 18:16:10 +02:00
lynxnb
17f45c0366 Retrieve the vibrator service outside of OSC View
Retrieving the vibrator service inside the view crashes the layout editor. Fix by retrieving it in the activity and passing it to the view.
2023-04-02 18:16:10 +02:00
kikimanjaro
0eed72664d Add automatic refreshing games list 2023-04-02 16:52:37 +02:00
PabloG02
ef5456f939 Hide Debug preferences from search on release builds and remove settings that don't support per-game configuration instead of hiding them 2023-03-25 22:54:27 +00:00
PabloG02
44cbf26b72 Add search functionality to settings
Multiple terms search is also available by separating individual terms with commas.
2023-03-25 22:54:27 +00:00
lynxnb
ab553c9671 Use MD3 divider in ControllerActivity 2023-03-22 21:57:50 +01:00
lynxnb
236b754559 Implement Material You theming support
Material You is disabled by default, it can be toggled in settings.
2023-03-22 21:57:50 +01:00
lynxnb
d3d22670f9 Use MaterialAlertDialogBuilder in PreferenceDialogFragments
`PreferenceDialogFragment`s have been extended to use `MaterialAlertDialogBuilder`, which results in Material Design 3 dialogs. `DialogFragment` creation logic has been moved to `SettingsActivity` to reduce code duplication.
2023-03-22 21:57:50 +01:00
lynxnb
a4a5bedeea Remove icon padding from the left side of preferences
`ProfilePicturePreference` image preview has been moved to the right side as a result.
2023-03-22 21:57:50 +01:00
lynxnb
b12a2bdc3e Replace preference checkboxes with material switches 2023-03-22 21:57:50 +01:00
lynxnb
ee2716403e Update dialogs' drag handle to use BottomSheetDragHandleView 2023-03-22 21:57:50 +01:00
lynxnb
2bcf0e2abd Update themes and styles to Material Design 3
This commit transitions all layouts and views to the use the new stuff from MD3.
2023-03-22 21:57:50 +01:00
Billy Laws
c928084bb1 Show a toast when per-game settings are active 2023-03-19 13:52:15 +00:00
Abandoned Cart
0949d51871 Clear or suppress some easy lint warnings 2023-03-18 16:16:15 +01:00
Abandoned Cart
e68baf9088 Centralize missingIcon and condition for use in DataItem
`One missing Bitmap to rule them all and one condition to find them.` Also eliminates passing that condition between methods. The data class can simply return the same instance every time it's necessary.
2023-03-15 14:25:24 +01:00
Abandoned Cart
905c0a47fa Allow the options, even if they're useless
Since this is instantiated in `onCreate` and may be recycled with different settings, relying on the audio to be disabled to determine if a mute action is available seems like a risky gamble.
2023-03-14 23:22:32 +00:00
Abandoned Cart
39393ec310 Move picture-in-picture configuration to method
This will also make the transition to per-game settings less of a collision later.
2023-03-14 23:22:32 +00:00
Abandoned Cart
a906c6d689 Use BuildConfig package name to forgo Context
This should adapt to the package name, despite not actually relying on the value of it to function. Intents are one of the most analyzed items for vulnerabilities and exploits.
2023-03-14 23:22:32 +00:00
Abandoned Cart
bd9050f6c7 Add an emulator pause button to the OSC 2023-03-14 23:22:32 +00:00
Abandoned Cart
69e322b76b Pausing should mute audio for looped music
Also adds pausing the surface in onPause and restoring it in onResume to avoid wasting resources when the activity is legitimately in the background.
2023-03-14 23:22:32 +00:00
Abandoned Cart
df96d74ca1 No use assigning null surface if null already
This also prevents any possibility a null value is falsely assigned to a valid surface for whatever reason.
2023-03-14 23:22:32 +00:00
Abandoned Cart
95a679e5cd Add an action to pause the emulator process 2023-03-14 23:22:32 +00:00
Abandoned Cart
a1143ee5de Respect the existing "mute" user preference 2023-03-14 23:22:32 +00:00
Abandoned Cart
bdc368e039 Add a mute button as a PiP window action 2023-03-14 23:22:32 +00:00
Abandoned Cart
4298415134 Add picture in picture for emulation activity 2023-03-14 23:22:32 +00:00
Abandoned Cart
6703a875f0 Support deprecation of getSerializableExtra 2023-03-11 18:27:15 +00:00
lynxnb
b724bc2309 Adjust default OSC opacity and color 2023-03-05 12:45:07 +01:00
KikiManjaro
1282362fce Add color selection to OSC
* Add bold text and antialiasing for osc buttons
* Fix osc dpad and button position (widder than taller)
* Set default OSC color to white background with black text
2023-03-05 12:45:07 +01:00
KikiManjaro
66d2965c63 Fix resetControls for opacity of OSC 2023-03-05 12:45:07 +01:00
Abandoned Cart
1f608da8e0 Drop local app path in preview summary 2023-03-05 11:48:46 +01:00
Billy Laws
7150ce0d1d Allow disabling the freeing of texture guest memory
This helps to prevent issues that result from the overlapping of buffer and texture data, by only ever syncing back textures if they are actually used as RTs, which are much less likely to overlap buffers.
2023-03-04 18:55:44 +00:00
lynxnb
787f2bde02 Enable localization for app strings
A setting has been added to override the system default language, should a user want a different language for the app.
2023-02-27 22:19:53 +01:00
lynxnb
aa1da257f8 Add an option to copy global settings to per-game ones 2023-02-27 19:56:53 +01:00
lynxnb
485bd2031c Only hide validation_layer setting on release instead of debug category 2023-02-27 19:56:53 +01:00
lynxnb
b2228a93da Reorder settings pt.2 2023-02-27 19:56:53 +01:00
lynxnb
ddfa9013a9 Use a proper tag for AppItem in intent extras and arguments 2023-02-27 19:56:53 +01:00
lynxnb
2f4778247c Use per-game settings during emulation 2023-02-27 19:56:53 +01:00
lynxnb
1a11aaa651 Add per-game settings configuration functionality 2023-02-27 19:56:53 +01:00
lynxnb
0467614dc0 Add per-game support to EmulationSettings
Implements support for retrieving per-game emulation settings
2023-02-27 19:56:53 +01:00
lynxnb
cd426d9f18 Split PreferenceSettings into AppSettings and EmulationSettings
`PreferenceSettings` was removed in favor of:
* `AppSettings`: stores general purpose settings mostly used for UI configuration and state
* `EmulationSettings`: stores emulation-related settings, most of these are passed to native emulation code
2023-02-27 19:56:53 +01:00
lynxnb
854ea1a42d Make NativeSettings a serializable data class 2023-02-27 19:56:53 +01:00