Reorder settings pt.2

This commit is contained in:
lynxnb 2023-02-23 13:01:04 +01:00 committed by Niccolò Betto
parent ddfa9013a9
commit b2228a93da
8 changed files with 114 additions and 119 deletions

View File

@ -269,7 +269,7 @@ class EmulationActivity : AppCompatActivity(), SurfaceHolder.Callback, View.OnTo
}
)
if (appSettings.perfStats) {
if (emulationSettings.perfStats) {
if (emulationSettings.disableFrameThrottling)
binding.perfStats.setTextColor(getColor(R.color.colorPerfStatsSecondary))

View File

@ -34,6 +34,6 @@ class DocumentsProviderPreference @JvmOverloads constructor(context : Context, a
override fun onClick() {
if (launchOpenIntent(Intent.ACTION_VIEW) or launchOpenIntent("android.provider.action.BROWSE"))
return
Snackbar.make((context as SettingsActivity).binding.root, SkylineR.string.failed_open_directory, Snackbar.LENGTH_SHORT).show()
Snackbar.make((context as SettingsActivity).binding.root, SkylineR.string.open_data_directory_failed, Snackbar.LENGTH_SHORT).show()
}
}

View File

@ -16,15 +16,15 @@ import javax.inject.Singleton
*/
@Singleton
class AppSettings @Inject constructor(@ApplicationContext private val context : Context) {
// Emulator
// Content
var searchLocation by sharedPreferences(context, "")
// Appearance
var appTheme by sharedPreferences(context, 2)
var layoutType by sharedPreferences(context, 1)
var groupByFormat by sharedPreferences(context, true)
var sortAppsBy by sharedPreferences(context, 0)
var groupByFormat by sharedPreferences(context, true)
var selectAction by sharedPreferences(context, false)
var perfStats by sharedPreferences(context, false)
var logLevel by sharedPreferences(context, 3)
// Input
var onScreenControl by sharedPreferences(context, true)
@ -34,4 +34,5 @@ class AppSettings @Inject constructor(@ApplicationContext private val context :
// Other
var romFormatFilter by sharedPreferences(context, 0)
var refreshRequired by sharedPreferences(context, false)
var logLevel by sharedPreferences(context, 3)
}

View File

@ -28,30 +28,31 @@ class EmulationSettings private constructor(context : Context, prefName : String
var systemLanguage by sharedPreferences(context, 1, prefName = prefName)
var systemRegion by sharedPreferences(context, -1, prefName = prefName)
// Audio
var isAudioOutputDisabled by sharedPreferences(context, false, prefName = prefName)
// Display
var forceTripleBuffering by sharedPreferences(context, true, prefName = prefName)
var disableFrameThrottling by sharedPreferences(context, false, prefName = prefName)
var perfStats by sharedPreferences(context, false, prefName = prefName)
var maxRefreshRate by sharedPreferences(context, false, prefName = prefName)
var aspectRatio by sharedPreferences(context, 0, prefName = prefName)
var orientation by sharedPreferences(context, ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE, prefName = prefName)
var aspectRatio by sharedPreferences(context, 0, prefName = prefName)
var respectDisplayCutout by sharedPreferences(context, false, prefName = prefName)
var disableShaderCache by sharedPreferences(context, false, prefName = prefName)
// GPU
var gpuDriver by sharedPreferences(context, SYSTEM_GPU_DRIVER, prefName = prefName)
var forceTripleBuffering by sharedPreferences(context, true, prefName = prefName)
var disableFrameThrottling by sharedPreferences(context, false, prefName = prefName)
var executorSlotCountScale by sharedPreferences(context, 6, prefName = prefName)
var executorFlushThreshold by sharedPreferences(context, 256, prefName = prefName)
var useDirectMemoryImport by sharedPreferences(context, false, prefName = prefName)
var forceMaxGpuClocks by sharedPreferences(context, false, prefName = prefName)
var disableShaderCache by sharedPreferences(context, false, prefName = prefName)
// Hacks
var enableFastGpuReadbackHack by sharedPreferences(context, false, prefName = prefName)
var enableFastReadbackWrites by sharedPreferences(context, false, prefName = prefName)
var disableSubgroupShuffle by sharedPreferences(context, false, prefName = prefName)
// Audio
var isAudioOutputDisabled by sharedPreferences(context, false, prefName = prefName)
// Debug
var validationLayer by sharedPreferences(context, false, prefName = prefName)

View File

@ -23,27 +23,25 @@ data class NativeSettings(
var systemLanguage : Int,
var systemRegion : Int,
// Display
var forceTripleBuffering : Boolean,
var disableFrameThrottling : Boolean,
var disableShaderCache : Boolean,
// Audio
var isAudioOutputDisabled : Boolean,
// GPU
var gpuDriver : String,
var gpuDriverLibraryName : String,
var forceTripleBuffering : Boolean,
var disableFrameThrottling : Boolean,
var executorSlotCountScale : Int,
var executorFlushThreshold : Int,
var useDirectMemoryImport : Boolean,
var forceMaxGpuClocks : Boolean,
var disableShaderCache : Boolean,
// Hacks
var enableFastGpuReadbackHack : Boolean,
var enableFastReadbackWrites : Boolean,
var disableSubgroupShuffle : Boolean,
// Audio
var isAudioOutputDisabled : Boolean,
// Debug
var validationLayer : Boolean
) {
@ -53,19 +51,19 @@ data class NativeSettings(
pref.profilePictureValue,
pref.systemLanguage,
pref.systemRegion,
pref.forceTripleBuffering,
pref.disableFrameThrottling,
pref.disableShaderCache,
pref.isAudioOutputDisabled,
if (pref.gpuDriver == EmulationSettings.SYSTEM_GPU_DRIVER) "" else pref.gpuDriver,
if (pref.gpuDriver == EmulationSettings.SYSTEM_GPU_DRIVER) "" else GpuDriverHelper.getLibraryName(context, pref.gpuDriver),
pref.forceTripleBuffering,
pref.disableFrameThrottling,
pref.executorSlotCountScale,
pref.executorFlushThreshold,
pref.useDirectMemoryImport,
pref.forceMaxGpuClocks,
pref.disableShaderCache,
pref.enableFastGpuReadbackHack,
pref.enableFastReadbackWrites,
pref.disableSubgroupShuffle,
pref.isAudioOutputDisabled,
BuildConfig.BUILD_TYPE != "release" && pref.validationLayer
)

View File

@ -4,6 +4,7 @@
<string name="search">Search</string>
<string name="error">An error has occurred</string>
<string name="copied_to_clipboard">Copied to clipboard</string>
<string name="emulator">Emulator</string>
<!-- Toolbar Main -->
<string name="settings">Settings</string>
<string name="share_logs">Share Logs</string>
@ -22,24 +23,29 @@
<string name="invalid_file">Invalid file</string>
<string name="missing_title_key">Missing title key</string>
<string name="incomplete_prod_keys">Incomplete production keys</string>
<!-- Settings - Emulator -->
<string name="emulator">Emulator</string>
<!-- Settings - Content -->
<string name="content">Content</string>
<string name="open_data_directory">View Internal Directory</string>
<string name="open_data_directory_summary">Opens Skyline\'s internal directory in a file manager</string>
<string name="failed_open_directory">Cannot find an external file manager to open Skyline\'s internal directory</string>
<string name="theme">Theme</string>
<string name="perf_stats">Show Performance Statistics</string>
<string name="perf_stats_desc_off">Performance Statistics will not be shown</string>
<string name="perf_stats_desc_on">Performance Statistics will be shown in the top-left corner</string>
<string name="log_level">Log Level</string>
<!-- Settings - App List -->
<string name="app_list">App List</string>
<string name="open_data_directory_failed">Cannot find an external file manager to open Skyline\'s internal directory</string>
<string name="search_location">Search Location</string>
<!-- Settings - Keys -->
<string name="keys">Keys</string>
<string name="prod_keys">Production Keys</string>
<string name="title_keys">Title Keys</string>
<string name="import_keys_success">Successfully imported keys</string>
<string name="import_keys_invalid_input_path">The path to the provided keys is invalid</string>
<string name="import_keys_invalid_keys">The keys you tried to import are invalid</string>
<string name="import_keys_delete_previous_failed">Failed to delete the currently installed keys</string>
<string name="import_keys_move_failed">Failed to move the keys to the internal directory</string>
<!-- Settings - Appearance -->
<string name="appearance">Appearance</string>
<string name="theme">Theme</string>
<string name="layout_type">Game Display Layout</string>
<string name="sort_apps_by">Games Sorting Order</string>
<string name="group_by_format">Group Games By Format</string>
<string name="group_by_format_desc_off">Games will be shown as a single list</string>
<string name="group_by_format_desc_on">Games will be shown grouped by format</string>
<string name="sort_apps_by">Games Sorting Order</string>
<string name="select_action">Always Show Game Information</string>
<string name="select_action_desc_on">Game information will be shown on clicking a game</string>
<string name="select_action_desc_off">Game information will only be shown on long-clicking a game</string>
@ -61,36 +67,35 @@
<string name="profile_picture">Profile picture</string>
<string name="system_language">System language</string>
<string name="system_region">System region</string>
<!-- Settings - Keys -->
<string name="keys">Keys</string>
<string name="prod_keys">Production Keys</string>
<string name="title_keys">Title Keys</string>
<string name="import_keys_success">Successfully imported keys</string>
<string name="import_keys_invalid_input_path">The path to the provided keys is invalid</string>
<string name="import_keys_invalid_keys">The keys you tried to import are invalid</string>
<string name="import_keys_delete_previous_failed">Failed to delete the currently installed keys</string>
<string name="import_keys_move_failed">Failed to move the keys to the internal directory</string>
<!-- Settings - Display -->
<string name="display">Display</string>
<string name="perf_stats">Show Performance Statistics</string>
<string name="perf_stats_desc_off">Performance Statistics will not be shown</string>
<string name="perf_stats_desc_on">Performance Statistics will be shown in the top-left corner</string>
<string name="max_refresh_rate">Use Maximum Display Refresh Rate</string>
<string name="max_refresh_rate_enabled">Sets the display refresh rate as high as possible (Will break most games)</string>
<string name="max_refresh_rate_disabled">Sets the display refresh rate to 60Hz</string>
<string name="screen_orientation">Screen orientation</string>
<string name="aspect_ratio">Aspect Ratio</string>
<string name="respect_display_cutout">Respect Display Cutout</string>
<string name="respect_display_cutout_enabled">Do not draw UI elements in the cutout area</string>
<string name="respect_display_cutout_disabled">Allow UI elements to be drawn in the cutout area</string>
<!-- Settings - Audio -->
<string name="audio">Audio</string>
<string name="disable_audio_output">Disable Audio Output</string>
<string name="disable_audio_output_enabled">Audio output is disabled</string>
<string name="disable_audio_output_disabled">Audio output is enabled</string>
<!-- Settings - GPU -->
<string name="gpu">GPU</string>
<string name="gpu_driver_config">GPU Driver Configuration</string>
<string name="gpu_driver_config_desc">Active driver: %1$s</string>
<string name="gpu_driver_config_desc_unsupported">Your device doesn\'t support custom drivers</string>
<string name="force_triple_buffering">Force Triple Buffering</string>
<string name="triple_buffering_enabled">Utilize at least three swapchain buffers (Higher FPS but more input lag)</string>
<string name="triple_buffering_disabled">Utilize at least two swapchain buffers (Lower FPS but less input lag)</string>
<string name="disable_frame_throttling">Disable Frame Throttling</string>
<string name="disable_frame_throttling_enabled">Game is allowed to submit frames as fast as possible (Only for benchmarking)\n\n<b>Note:</b> An alternative method is utilized to measure the FPS with this enabled, the figures must not be compared to throttled FPS figures</string>
<string name="disable_frame_throttling_disabled">Only allow the game to submit frames at the display refresh rate</string>
<string name="max_refresh_rate">Use Maximum Display Refresh Rate</string>
<string name="max_refresh_rate_enabled">Sets the display refresh rate as high as possible (Will break most games)</string>
<string name="max_refresh_rate_disabled">Sets the display refresh rate to 60Hz</string>
<string name="aspect_ratio">Aspect Ratio</string>
<string name="respect_display_cutout">Respect Display Cutout</string>
<string name="respect_display_cutout_enabled">Do not draw UI elements in the cutout area</string>
<string name="respect_display_cutout_disabled">Allow UI elements to be drawn in the cutout area</string>
<!-- Settings - GPU -->
<string name="gpu">GPU</string>
<string name="gpu_driver_config">GPU Driver Configuration</string>
<string name="gpu_driver_config_desc">Active driver: %1$s</string>
<string name="gpu_driver_config_desc_unsupported">Your device doesn\'t support custom drivers</string>
<string name="executor_slot_count_scale">Executor Slot Count Scale</string>
<string name="executor_slot_count_scale_desc">Scale controlling the maximum number of simultaneous GPU executions (Higher may sometimes perform better but will use more RAM)</string>
<string name="executor_flush_threshold">Executor Flush Threshold</string>
@ -114,13 +119,9 @@
<string name="disable_subgroup_shuffle">Disable GPU subgroup shuffle</string>
<string name="disable_subgroup_shuffle_enabled">Shader subgroup shuffle operations are disabled, may cause severe graphical issues</string>
<string name="disable_subgroup_shuffle_disabled">Shader subgroup shuffle operations are enabled, ensures maximum accuracy</string>
<!-- Settings - Audio -->
<string name="audio">Audio</string>
<string name="disable_audio_output">Disable Audio Output</string>
<string name="disable_audio_output_enabled">Audio output is disabled</string>
<string name="disable_audio_output_disabled">Audio output is enabled</string>
<!-- Settings - Debug -->
<string name="debug">Debug</string>
<string name="log_level">Log Level</string>
<string name="validation_layer">Enable validation layer</string>
<string name="validation_layer_enabled">The Vulkan validation layer is enabled, major slowdowns are to be expected</string>
<string name="validation_layer_disabled">The Vulkan validation layer is disabled</string>

View File

@ -1,38 +1,33 @@
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<PreferenceCategory
android:key="category_emulator"
android:title="@string/emulator">
android:key="category_content"
android:title="@string/content">
<emu.skyline.preference.DocumentsProviderPreference
app:key="document_provider"
app:summary="@string/open_data_directory_summary"
app:title="@string/open_data_directory" />
<emu.skyline.preference.FolderPickerPreference
app:key="search_location"
app:title="@string/search_location" />
<emu.skyline.preference.KeyPickerPreference
app:key="prod_keys"
app:title="@string/prod_keys"
app:useSimpleSummaryProvider="true" />
<emu.skyline.preference.KeyPickerPreference
app:key="title_keys"
app:title="@string/title_keys"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_appearance"
android:title="@string/appearance">
<emu.skyline.preference.ThemePreference
android:defaultValue="2"
android:entries="@array/app_theme"
app:key="app_theme"
app:title="@string/theme"
app:useSimpleSummaryProvider="true" />
<CheckBoxPreference
android:defaultValue="false"
android:summaryOff="@string/perf_stats_desc_off"
android:summaryOn="@string/perf_stats_desc_on"
app:key="perf_stats"
app:title="@string/perf_stats" />
<emu.skyline.preference.LogLevelPreference
android:defaultValue="2"
android:entries="@array/log_level"
app:key="log_level"
app:title="@string/log_level"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_applist"
android:title="@string/app_list"
app:initialExpandedChildrenCount="3">
<emu.skyline.preference.FolderPickerPreference
app:key="search_location"
app:title="@string/search_location" />
<emu.skyline.preference.IntegerListPreference
android:defaultValue="1"
android:entries="@array/layout_type"
@ -60,16 +55,4 @@
app:key="select_action"
app:title="@string/select_action" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_keys"
android:title="@string/keys">
<emu.skyline.preference.KeyPickerPreference
app:key="prod_keys"
app:title="@string/prod_keys"
app:useSimpleSummaryProvider="true" />
<emu.skyline.preference.KeyPickerPreference
app:key="title_keys"
app:title="@string/title_keys"
app:useSimpleSummaryProvider="true" />
</PreferenceCategory>
</androidx.preference.PreferenceScreen>

View File

@ -36,6 +36,18 @@
<PreferenceCategory
android:key="category_presentation"
android:title="@string/display">
<CheckBoxPreference
android:defaultValue="false"
android:summaryOff="@string/perf_stats_desc_off"
android:summaryOn="@string/perf_stats_desc_on"
app:key="perf_stats"
app:title="@string/perf_stats" />
<CheckBoxPreference
android:defaultValue="false"
android:summaryOff="@string/max_refresh_rate_disabled"
android:summaryOn="@string/max_refresh_rate_enabled"
app:key="max_refresh_rate"
app:title="@string/max_refresh_rate" />
<emu.skyline.preference.IntegerListPreference
android:defaultValue="6"
android:entries="@array/orientation_entries"
@ -55,6 +67,23 @@
android:summaryOn="@string/respect_display_cutout_enabled"
app:key="respect_display_cutout"
app:title="@string/respect_display_cutout" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_audio"
android:title="@string/audio">
<CheckBoxPreference
android:defaultValue="false"
android:summaryOff="@string/disable_audio_output_disabled"
android:summaryOn="@string/disable_audio_output_enabled"
app:key="is_audio_output_disabled"
app:title="@string/disable_audio_output" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_gpu"
android:title="@string/gpu">
<emu.skyline.preference.GpuDriverPreference
app:key="gpu_driver"
app:title="@string/gpu_driver_config" />
<CheckBoxPreference
android:defaultValue="true"
android:summaryOff="@string/triple_buffering_disabled"
@ -68,19 +97,6 @@
android:summaryOn="@string/disable_frame_throttling_enabled"
app:key="disable_frame_throttling"
app:title="@string/disable_frame_throttling" />
<CheckBoxPreference
android:defaultValue="false"
android:summaryOff="@string/max_refresh_rate_disabled"
android:summaryOn="@string/max_refresh_rate_enabled"
app:key="max_refresh_rate"
app:title="@string/max_refresh_rate" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_gpu"
android:title="@string/gpu">
<emu.skyline.preference.GpuDriverPreference
app:key="gpu_driver"
app:title="@string/gpu_driver_config" />
<SeekBarPreference
android:defaultValue="4"
android:max="6"
@ -137,21 +153,16 @@
app:key="disable_subgroup_shuffle"
app:title="@string/disable_subgroup_shuffle" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_audio"
android:title="@string/audio"
app:isPreferenceVisible="true">
<CheckBoxPreference
android:defaultValue="false"
android:summaryOff="@string/disable_audio_output_disabled"
android:summaryOn="@string/disable_audio_output_enabled"
app:key="is_audio_output_disabled"
app:title="@string/disable_audio_output" />
</PreferenceCategory>
<PreferenceCategory
android:key="category_debug"
android:title="@string/debug"
app:isPreferenceVisible="false">
<emu.skyline.preference.LogLevelPreference
android:defaultValue="2"
android:entries="@array/log_level"
app:key="log_level"
app:title="@string/log_level"
app:useSimpleSummaryProvider="true" />
<CheckBoxPreference
android:defaultValue="false"
android:summaryOff="@string/validation_layer_disabled"