diff options
| author | 2023-05-14 13:54:13 -0400 | |
|---|---|---|
| committer | 2023-06-03 00:06:02 -0700 | |
| commit | ee57aa83a4124f4530580b7cddbfe847ffaf7cb0 (patch) | |
| tree | 6cabf2bc01379a0053eaff693e15d71604300d14 /src/android | |
| parent | android: Use proguard file in relWithDebInfo (diff) | |
| download | yuzu-ee57aa83a4124f4530580b7cddbfe847ffaf7cb0.tar.gz yuzu-ee57aa83a4124f4530580b7cddbfe847ffaf7cb0.tar.xz yuzu-ee57aa83a4124f4530580b7cddbfe847ffaf7cb0.zip | |
android: Button to reset all settings
Diffstat (limited to 'src/android')
21 files changed, 138 insertions, 23 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt index 7c0ca08c7..3dfd66779 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt | |||
| @@ -32,5 +32,7 @@ enum class BooleanSetting( | |||
| 32 | 32 | ||
| 33 | fun from(key: String): BooleanSetting? = | 33 | fun from(key: String): BooleanSetting? = |
| 34 | BooleanSetting.values().firstOrNull { it.key == key } | 34 | BooleanSetting.values().firstOrNull { it.key == key } |
| 35 | |||
| 36 | fun clear() = BooleanSetting.values().forEach { it.boolean = it.defaultValue } | ||
| 35 | } | 37 | } |
| 36 | } | 38 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.kt index 96537782a..e5545a916 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.kt | |||
| @@ -30,5 +30,7 @@ enum class FloatSetting( | |||
| 30 | private val NOT_RUNTIME_EDITABLE = emptyList<FloatSetting>() | 30 | private val NOT_RUNTIME_EDITABLE = emptyList<FloatSetting>() |
| 31 | 31 | ||
| 32 | fun from(key: String): FloatSetting? = FloatSetting.values().firstOrNull { it.key == key } | 32 | fun from(key: String): FloatSetting? = FloatSetting.values().firstOrNull { it.key == key } |
| 33 | |||
| 34 | fun clear() = FloatSetting.values().forEach { it.float = it.defaultValue } | ||
| 33 | } | 35 | } |
| 34 | } | 36 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt index 39f62cab7..c07e566fe 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.kt | |||
| @@ -119,5 +119,7 @@ enum class IntSetting( | |||
| 119 | ) | 119 | ) |
| 120 | 120 | ||
| 121 | fun from(key: String): IntSetting? = IntSetting.values().firstOrNull { it.key == key } | 121 | fun from(key: String): IntSetting? = IntSetting.values().firstOrNull { it.key == key } |
| 122 | |||
| 123 | fun clear() = IntSetting.values().forEach { it.int = it.defaultValue } | ||
| 122 | } | 124 | } |
| 123 | } | 125 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt index 7141604d5..bd9233d62 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingsViewModel.kt | |||
| @@ -1,3 +1,6 @@ | |||
| 1 | // SPDX-FileCopyrightText: 2023 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 1 | package org.yuzu.yuzu_emu.features.settings.model | 4 | package org.yuzu.yuzu_emu.features.settings.model |
| 2 | 5 | ||
| 3 | import androidx.lifecycle.ViewModel | 6 | import androidx.lifecycle.ViewModel |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt index d16ff17df..63f95690c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.kt | |||
| @@ -31,5 +31,7 @@ enum class StringSetting( | |||
| 31 | ) | 31 | ) |
| 32 | 32 | ||
| 33 | fun from(key: String): StringSetting? = StringSetting.values().firstOrNull { it.key == key } | 33 | fun from(key: String): StringSetting? = StringSetting.values().firstOrNull { it.key == key } |
| 34 | |||
| 35 | fun clear() = StringSetting.values().forEach { it.string = it.defaultValue } | ||
| 34 | } | 36 | } |
| 35 | } | 37 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt index abba64e93..0f8edbfb0 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.kt | |||
| @@ -8,7 +8,7 @@ import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | |||
| 8 | class HeaderSetting( | 8 | class HeaderSetting( |
| 9 | setting: AbstractSetting?, | 9 | setting: AbstractSetting?, |
| 10 | titleId: Int, | 10 | titleId: Int, |
| 11 | descriptionId: Int? | 11 | descriptionId: Int |
| 12 | ) : SettingsItem(setting, titleId, descriptionId) { | 12 | ) : SettingsItem(setting, titleId, descriptionId) { |
| 13 | override val type = TYPE_HEADER | 13 | override val type = TYPE_HEADER |
| 14 | } | 14 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/RunnableSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/RunnableSetting.kt new file mode 100644 index 000000000..dc89b5774 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/RunnableSetting.kt | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | // SPDX-FileCopyrightText: 2023 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.model.view | ||
| 5 | |||
| 6 | class RunnableSetting( | ||
| 7 | titleId: Int, | ||
| 8 | descriptionId: Int, | ||
| 9 | val runnable: () -> Unit | ||
| 10 | ) : SettingsItem(null, titleId, descriptionId) { | ||
| 11 | override val type = TYPE_RUNNABLE | ||
| 12 | } | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt index c02848403..07520849e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt | |||
| @@ -16,7 +16,7 @@ import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | |||
| 16 | abstract class SettingsItem( | 16 | abstract class SettingsItem( |
| 17 | var setting: AbstractSetting?, | 17 | var setting: AbstractSetting?, |
| 18 | val nameId: Int, | 18 | val nameId: Int, |
| 19 | val descriptionId: Int? | 19 | val descriptionId: Int |
| 20 | ) { | 20 | ) { |
| 21 | abstract val type: Int | 21 | abstract val type: Int |
| 22 | 22 | ||
| @@ -34,5 +34,6 @@ abstract class SettingsItem( | |||
| 34 | const val TYPE_SUBMENU = 4 | 34 | const val TYPE_SUBMENU = 4 |
| 35 | const val TYPE_STRING_SINGLE_CHOICE = 5 | 35 | const val TYPE_STRING_SINGLE_CHOICE = 5 |
| 36 | const val TYPE_DATETIME_SETTING = 6 | 36 | const val TYPE_DATETIME_SETTING = 6 |
| 37 | const val TYPE_RUNNABLE = 7 | ||
| 37 | } | 38 | } |
| 38 | } | 39 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt index 9f3c7e9d5..90b198718 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SwitchSetting.kt | |||
| @@ -6,9 +6,6 @@ package org.yuzu.yuzu_emu.features.settings.model.view | |||
| 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractBooleanSetting | 6 | import org.yuzu.yuzu_emu.features.settings.model.AbstractBooleanSetting |
| 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting | 7 | import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting |
| 8 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting | 8 | import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting |
| 9 | import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting | ||
| 10 | import org.yuzu.yuzu_emu.features.settings.model.IntSetting | ||
| 11 | import org.yuzu.yuzu_emu.utils.Log | ||
| 12 | 9 | ||
| 13 | class SwitchSetting( | 10 | class SwitchSetting( |
| 14 | setting: AbstractSetting, | 11 | setting: AbstractSetting, |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt index b28750eee..691fad44e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt | |||
| @@ -8,7 +8,6 @@ import android.content.Intent | |||
| 8 | import android.os.Bundle | 8 | import android.os.Bundle |
| 9 | import android.view.Menu | 9 | import android.view.Menu |
| 10 | import android.view.View | 10 | import android.view.View |
| 11 | import android.view.ViewGroup | ||
| 12 | import android.widget.Toast | 11 | import android.widget.Toast |
| 13 | import androidx.activity.viewModels | 12 | import androidx.activity.viewModels |
| 14 | import androidx.appcompat.app.AppCompatActivity | 13 | import androidx.appcompat.app.AppCompatActivity |
| @@ -21,9 +20,15 @@ import com.google.android.material.color.MaterialColors | |||
| 21 | import org.yuzu.yuzu_emu.NativeLibrary | 20 | import org.yuzu.yuzu_emu.NativeLibrary |
| 22 | import org.yuzu.yuzu_emu.R | 21 | import org.yuzu.yuzu_emu.R |
| 23 | import org.yuzu.yuzu_emu.databinding.ActivitySettingsBinding | 22 | import org.yuzu.yuzu_emu.databinding.ActivitySettingsBinding |
| 23 | import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting | ||
| 24 | import org.yuzu.yuzu_emu.features.settings.model.FloatSetting | ||
| 25 | import org.yuzu.yuzu_emu.features.settings.model.IntSetting | ||
| 24 | import org.yuzu.yuzu_emu.features.settings.model.Settings | 26 | import org.yuzu.yuzu_emu.features.settings.model.Settings |
| 25 | import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel | 27 | import org.yuzu.yuzu_emu.features.settings.model.SettingsViewModel |
| 28 | import org.yuzu.yuzu_emu.features.settings.model.StringSetting | ||
| 29 | import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile | ||
| 26 | import org.yuzu.yuzu_emu.utils.* | 30 | import org.yuzu.yuzu_emu.utils.* |
| 31 | import java.io.IOException | ||
| 27 | 32 | ||
| 28 | class SettingsActivity : AppCompatActivity(), SettingsActivityView { | 33 | class SettingsActivity : AppCompatActivity(), SettingsActivityView { |
| 29 | private val presenter = SettingsActivityPresenter(this) | 34 | private val presenter = SettingsActivityPresenter(this) |
| @@ -165,6 +170,26 @@ class SettingsActivity : AppCompatActivity(), SettingsActivityView { | |||
| 165 | presenter.onSettingChanged() | 170 | presenter.onSettingChanged() |
| 166 | } | 171 | } |
| 167 | 172 | ||
| 173 | fun onSettingsReset() { | ||
| 174 | // Prevents saving to a non-existent settings file | ||
| 175 | presenter.onSettingsReset() | ||
| 176 | |||
| 177 | // Reset the static memory representation of each setting | ||
| 178 | BooleanSetting.clear() | ||
| 179 | FloatSetting.clear() | ||
| 180 | IntSetting.clear() | ||
| 181 | StringSetting.clear() | ||
| 182 | |||
| 183 | // Delete settings file because the user may have changed values that do not exist in the UI | ||
| 184 | val settingsFile = SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_CONFIG) | ||
| 185 | if (!settingsFile.delete()) { | ||
| 186 | throw IOException("Failed to delete $settingsFile") | ||
| 187 | } | ||
| 188 | |||
| 189 | showToastMessage(getString(R.string.settings_reset), true) | ||
| 190 | finish() | ||
| 191 | } | ||
| 192 | |||
| 168 | private val settingsFragment: SettingsFragment? | 193 | private val settingsFragment: SettingsFragment? |
| 169 | get() = supportFragmentManager.findFragmentByTag(FRAGMENT_TAG) as SettingsFragment? | 194 | get() = supportFragmentManager.findFragmentByTag(FRAGMENT_TAG) as SettingsFragment? |
| 170 | 195 | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt index e435c6d58..4361d95fb 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.kt | |||
| @@ -70,6 +70,10 @@ class SettingsActivityPresenter(private val activityView: SettingsActivityView) | |||
| 70 | shouldSave = true | 70 | shouldSave = true |
| 71 | } | 71 | } |
| 72 | 72 | ||
| 73 | fun onSettingsReset() { | ||
| 74 | shouldSave = false | ||
| 75 | } | ||
| 76 | |||
| 73 | fun saveState(outState: Bundle) { | 77 | fun saveState(outState: Bundle) { |
| 74 | outState.putBoolean(KEY_SHOULD_SAVE, shouldSave) | 78 | outState.putBoolean(KEY_SHOULD_SAVE, shouldSave) |
| 75 | } | 79 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt index 943905482..1eb4899fc 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt | |||
| @@ -79,6 +79,10 @@ class SettingsAdapter( | |||
| 79 | DateTimeViewHolder(ListItemSettingBinding.inflate(inflater), this) | 79 | DateTimeViewHolder(ListItemSettingBinding.inflate(inflater), this) |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | SettingsItem.TYPE_RUNNABLE -> { | ||
| 83 | RunnableViewHolder(ListItemSettingBinding.inflate(inflater), this) | ||
| 84 | } | ||
| 85 | |||
| 82 | else -> { | 86 | else -> { |
| 83 | // TODO: Create an error view since we can't return null now | 87 | // TODO: Create an error view since we can't return null now |
| 84 | HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this) | 88 | HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this) |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt index d36afa932..dda44376c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt | |||
| @@ -6,8 +6,8 @@ package org.yuzu.yuzu_emu.features.settings.ui | |||
| 6 | import android.content.SharedPreferences | 6 | import android.content.SharedPreferences |
| 7 | import android.os.Build | 7 | import android.os.Build |
| 8 | import android.text.TextUtils | 8 | import android.text.TextUtils |
| 9 | import androidx.appcompat.app.AppCompatActivity | ||
| 10 | import androidx.preference.PreferenceManager | 9 | import androidx.preference.PreferenceManager |
| 10 | import com.google.android.material.dialog.MaterialAlertDialogBuilder | ||
| 11 | import org.yuzu.yuzu_emu.R | 11 | import org.yuzu.yuzu_emu.R |
| 12 | import org.yuzu.yuzu_emu.YuzuApplication | 12 | import org.yuzu.yuzu_emu.YuzuApplication |
| 13 | import org.yuzu.yuzu_emu.features.settings.model.AbstractBooleanSetting | 13 | import org.yuzu.yuzu_emu.features.settings.model.AbstractBooleanSetting |
| @@ -26,7 +26,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 26 | private lateinit var gameId: String | 26 | private lateinit var gameId: String |
| 27 | private var settingsList: ArrayList<SettingsItem>? = null | 27 | private var settingsList: ArrayList<SettingsItem>? = null |
| 28 | 28 | ||
| 29 | private val settingsActivity get() = fragmentView.activityView as AppCompatActivity | 29 | private val settingsActivity get() = fragmentView.activityView as SettingsActivity |
| 30 | private val settings get() = fragmentView.activityView!!.settings | 30 | private val settings get() = fragmentView.activityView!!.settings |
| 31 | 31 | ||
| 32 | private lateinit var preferences: SharedPreferences | 32 | private lateinit var preferences: SharedPreferences |
| @@ -111,6 +111,12 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 111 | Settings.SECTION_AUDIO | 111 | Settings.SECTION_AUDIO |
| 112 | ) | 112 | ) |
| 113 | ) | 113 | ) |
| 114 | add( | ||
| 115 | RunnableSetting( | ||
| 116 | R.string.reset_to_default, | ||
| 117 | 0 | ||
| 118 | ) { resetSettings() } | ||
| 119 | ) | ||
| 114 | } | 120 | } |
| 115 | } | 121 | } |
| 116 | 122 | ||
| @@ -338,7 +344,9 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 338 | override var int: Int | 344 | override var int: Int |
| 339 | get() = preferences.getInt(Settings.PREF_THEME, 0) | 345 | get() = preferences.getInt(Settings.PREF_THEME, 0) |
| 340 | set(value) { | 346 | set(value) { |
| 341 | preferences.edit().putInt(Settings.PREF_THEME, value).apply() | 347 | preferences.edit() |
| 348 | .putInt(Settings.PREF_THEME, value) | ||
| 349 | .apply() | ||
| 342 | settingsActivity.recreate() | 350 | settingsActivity.recreate() |
| 343 | } | 351 | } |
| 344 | override val key: String? = null | 352 | override val key: String? = null |
| @@ -375,7 +383,9 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 375 | override var int: Int | 383 | override var int: Int |
| 376 | get() = preferences.getInt(Settings.PREF_THEME_MODE, -1) | 384 | get() = preferences.getInt(Settings.PREF_THEME_MODE, -1) |
| 377 | set(value) { | 385 | set(value) { |
| 378 | preferences.edit().putInt(Settings.PREF_THEME_MODE, value).apply() | 386 | preferences.edit() |
| 387 | .putInt(Settings.PREF_THEME_MODE, value) | ||
| 388 | .apply() | ||
| 379 | ThemeHelper.setThemeMode(settingsActivity) | 389 | ThemeHelper.setThemeMode(settingsActivity) |
| 380 | } | 390 | } |
| 381 | override val key: String? = null | 391 | override val key: String? = null |
| @@ -400,14 +410,17 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 400 | override var boolean: Boolean | 410 | override var boolean: Boolean |
| 401 | get() = preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false) | 411 | get() = preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false) |
| 402 | set(value) { | 412 | set(value) { |
| 403 | preferences.edit().putBoolean(Settings.PREF_BLACK_BACKGROUNDS, value).apply() | 413 | preferences.edit() |
| 414 | .putBoolean(Settings.PREF_BLACK_BACKGROUNDS, value) | ||
| 415 | .apply() | ||
| 404 | settingsActivity.recreate() | 416 | settingsActivity.recreate() |
| 405 | } | 417 | } |
| 406 | override val key: String? = null | 418 | override val key: String? = null |
| 407 | override val section: String? = null | 419 | override val section: String? = null |
| 408 | override val isRuntimeEditable: Boolean = false | 420 | override val isRuntimeEditable: Boolean = false |
| 409 | override val valueAsString: String | 421 | override val valueAsString: String |
| 410 | get() = preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false).toString() | 422 | get() = preferences.getBoolean(Settings.PREF_BLACK_BACKGROUNDS, false) |
| 423 | .toString() | ||
| 411 | override val defaultValue: Any = false | 424 | override val defaultValue: Any = false |
| 412 | } | 425 | } |
| 413 | 426 | ||
| @@ -420,4 +433,15 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) | |||
| 420 | ) | 433 | ) |
| 421 | } | 434 | } |
| 422 | } | 435 | } |
| 436 | |||
| 437 | private fun resetSettings() { | ||
| 438 | MaterialAlertDialogBuilder(settingsActivity) | ||
| 439 | .setTitle(R.string.reset_all_settings) | ||
| 440 | .setMessage(R.string.reset_all_settings_description) | ||
| 441 | .setPositiveButton(android.R.string.ok) { _, _ -> | ||
| 442 | settingsActivity.onSettingsReset() | ||
| 443 | } | ||
| 444 | .setNegativeButton(android.R.string.cancel, null) | ||
| 445 | .show() | ||
| 446 | } | ||
| 423 | } | 447 | } |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt index b101a790d..04c045e77 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt | |||
| @@ -21,7 +21,7 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA | |||
| 21 | override fun bind(item: SettingsItem) { | 21 | override fun bind(item: SettingsItem) { |
| 22 | setting = item as DateTimeSetting | 22 | setting = item as DateTimeSetting |
| 23 | binding.textSettingName.setText(item.nameId) | 23 | binding.textSettingName.setText(item.nameId) |
| 24 | if (item.descriptionId!! > 0) { | 24 | if (item.descriptionId != 0) { |
| 25 | binding.textSettingDescription.setText(item.descriptionId) | 25 | binding.textSettingDescription.setText(item.descriptionId) |
| 26 | binding.textSettingDescription.visibility = View.VISIBLE | 26 | binding.textSettingDescription.visibility = View.VISIBLE |
| 27 | } else { | 27 | } else { |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt new file mode 100644 index 000000000..0c0bb93fc --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/RunnableViewHolder.kt | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | // SPDX-FileCopyrightText: 2023 yuzu Emulator Project | ||
| 2 | // SPDX-License-Identifier: GPL-2.0-or-later | ||
| 3 | |||
| 4 | package org.yuzu.yuzu_emu.features.settings.ui.viewholder | ||
| 5 | |||
| 6 | import android.view.View | ||
| 7 | import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding | ||
| 8 | import org.yuzu.yuzu_emu.features.settings.model.view.RunnableSetting | ||
| 9 | import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem | ||
| 10 | import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter | ||
| 11 | |||
| 12 | class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : | ||
| 13 | SettingViewHolder(binding.root, adapter) { | ||
| 14 | private lateinit var setting: RunnableSetting | ||
| 15 | |||
| 16 | override fun bind(item: SettingsItem) { | ||
| 17 | setting = item as RunnableSetting | ||
| 18 | binding.textSettingName.setText(item.nameId) | ||
| 19 | if (item.descriptionId != 0) { | ||
| 20 | binding.textSettingDescription.setText(item.descriptionId) | ||
| 21 | binding.textSettingDescription.visibility = View.VISIBLE | ||
| 22 | } else { | ||
| 23 | binding.textSettingDescription.visibility = View.GONE | ||
| 24 | } | ||
| 25 | } | ||
| 26 | |||
| 27 | override fun onClick(clicked: View) { | ||
| 28 | setting.runnable.invoke() | ||
| 29 | } | ||
| 30 | |||
| 31 | override fun onLongClick(clicked: View): Boolean { | ||
| 32 | // no-op | ||
| 33 | return true | ||
| 34 | } | ||
| 35 | } | ||
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt index 487e2e141..de764a27f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt | |||
| @@ -18,7 +18,7 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti | |||
| 18 | setting = item | 18 | setting = item |
| 19 | binding.textSettingName.setText(item.nameId) | 19 | binding.textSettingName.setText(item.nameId) |
| 20 | binding.textSettingDescription.visibility = View.VISIBLE | 20 | binding.textSettingDescription.visibility = View.VISIBLE |
| 21 | if (item.descriptionId!! > 0) { | 21 | if (item.descriptionId != 0) { |
| 22 | binding.textSettingDescription.setText(item.descriptionId) | 22 | binding.textSettingDescription.setText(item.descriptionId) |
| 23 | } else if (item is SingleChoiceSetting) { | 23 | } else if (item is SingleChoiceSetting) { |
| 24 | val resMgr = binding.textSettingDescription.context.resources | 24 | val resMgr = binding.textSettingDescription.context.resources |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt index 930bdd152..cc3f39aa5 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.kt | |||
| @@ -16,7 +16,7 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda | |||
| 16 | override fun bind(item: SettingsItem) { | 16 | override fun bind(item: SettingsItem) { |
| 17 | setting = item as SliderSetting | 17 | setting = item as SliderSetting |
| 18 | binding.textSettingName.setText(item.nameId) | 18 | binding.textSettingName.setText(item.nameId) |
| 19 | if (item.descriptionId!! > 0) { | 19 | if (item.descriptionId != 0) { |
| 20 | binding.textSettingDescription.setText(item.descriptionId) | 20 | binding.textSettingDescription.setText(item.descriptionId) |
| 21 | binding.textSettingDescription.visibility = View.VISIBLE | 21 | binding.textSettingDescription.visibility = View.VISIBLE |
| 22 | } else { | 22 | } else { |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt index 8bd36e9d5..c545b4174 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt | |||
| @@ -16,7 +16,7 @@ class SubmenuViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAd | |||
| 16 | override fun bind(item: SettingsItem) { | 16 | override fun bind(item: SettingsItem) { |
| 17 | this.item = item as SubmenuSetting | 17 | this.item = item as SubmenuSetting |
| 18 | binding.textSettingName.setText(item.nameId) | 18 | binding.textSettingName.setText(item.nameId) |
| 19 | if (item.descriptionId!! > 0) { | 19 | if (item.descriptionId != 0) { |
| 20 | binding.textSettingDescription.setText(item.descriptionId) | 20 | binding.textSettingDescription.setText(item.descriptionId) |
| 21 | binding.textSettingDescription.visibility = View.VISIBLE | 21 | binding.textSettingDescription.visibility = View.VISIBLE |
| 22 | } else { | 22 | } else { |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt index c24992e21..b163bd6ca 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt | |||
| @@ -18,7 +18,7 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter | |||
| 18 | override fun bind(item: SettingsItem) { | 18 | override fun bind(item: SettingsItem) { |
| 19 | setting = item as SwitchSetting | 19 | setting = item as SwitchSetting |
| 20 | binding.textSettingName.setText(item.nameId) | 20 | binding.textSettingName.setText(item.nameId) |
| 21 | if (item.descriptionId!! > 0) { | 21 | if (item.descriptionId != 0) { |
| 22 | binding.textSettingDescription.setText(item.descriptionId) | 22 | binding.textSettingDescription.setText(item.descriptionId) |
| 23 | binding.textSettingDescription.visibility = View.VISIBLE | 23 | binding.textSettingDescription.visibility = View.VISIBLE |
| 24 | } else { | 24 | } else { |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt index 4027df838..c502fdca0 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.kt | |||
| @@ -22,7 +22,7 @@ import java.util.* | |||
| 22 | object SettingsFile { | 22 | object SettingsFile { |
| 23 | const val FILE_NAME_CONFIG = "config" | 23 | const val FILE_NAME_CONFIG = "config" |
| 24 | 24 | ||
| 25 | private val sectionsMap = BiMap<String?, String?>() | 25 | private var sectionsMap = BiMap<String?, String?>() |
| 26 | 26 | ||
| 27 | /** | 27 | /** |
| 28 | * Reads a given .ini file from disk and returns it as a HashMap of Settings, themselves | 28 | * Reads a given .ini file from disk and returns it as a HashMap of Settings, themselves |
| @@ -154,7 +154,7 @@ object SettingsFile { | |||
| 154 | } else generalSectionName | 154 | } else generalSectionName |
| 155 | } | 155 | } |
| 156 | 156 | ||
| 157 | private fun getSettingsFile(fileName: String): File { | 157 | fun getSettingsFile(fileName: String): File { |
| 158 | return File( | 158 | return File( |
| 159 | DirectoryInitialization.userDirectory + "/config/" + fileName + ".ini" | 159 | DirectoryInitialization.userDirectory + "/config/" + fileName + ".ini" |
| 160 | ) | 160 | ) |
| @@ -182,13 +182,11 @@ object SettingsFile { | |||
| 182 | private fun settingFromLine(line: String): AbstractSetting? { | 182 | private fun settingFromLine(line: String): AbstractSetting? { |
| 183 | val splitLine = line.split("=".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() | 183 | val splitLine = line.split("=".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() |
| 184 | if (splitLine.size != 2) { | 184 | if (splitLine.size != 2) { |
| 185 | Log.warning("Skipping invalid config line \"$line\"") | ||
| 186 | return null | 185 | return null |
| 187 | } | 186 | } |
| 188 | val key = splitLine[0].trim { it <= ' ' } | 187 | val key = splitLine[0].trim { it <= ' ' } |
| 189 | val value = splitLine[1].trim { it <= ' ' } | 188 | val value = splitLine[1].trim { it <= ' ' } |
| 190 | if (value.isEmpty()) { | 189 | if (value.isEmpty()) { |
| 191 | Log.warning("Skipping null value in config line \"$line\"") | ||
| 192 | return null | 190 | return null |
| 193 | } | 191 | } |
| 194 | 192 | ||
| @@ -216,7 +214,7 @@ object SettingsFile { | |||
| 216 | return stringSetting | 214 | return stringSetting |
| 217 | } | 215 | } |
| 218 | 216 | ||
| 219 | return StringSetting.from(key) | 217 | return null |
| 220 | } | 218 | } |
| 221 | 219 | ||
| 222 | /** | 220 | /** |
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index cd93bfc38..ed72e571b 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml | |||
| @@ -143,8 +143,12 @@ | |||
| 143 | <string name="ini_saved">Saved settings</string> | 143 | <string name="ini_saved">Saved settings</string> |
| 144 | <string name="gameid_saved">Saved settings for %1$s</string> | 144 | <string name="gameid_saved">Saved settings for %1$s</string> |
| 145 | <string name="error_saving">Error saving %1$s.ini: %2$s</string> | 145 | <string name="error_saving">Error saving %1$s.ini: %2$s</string> |
| 146 | <string name="loading">Loading...</string> | 146 | <string name="loading">Loading…</string> |
| 147 | <string name="reset_setting_confirmation">Do you want to reset this setting back to its default value?</string> | 147 | <string name="reset_setting_confirmation">Do you want to reset this setting back to its default value?</string> |
| 148 | <string name="reset_to_default">Reset to default</string> | ||
| 149 | <string name="reset_all_settings">Reset all settings?</string> | ||
| 150 | <string name="reset_all_settings_description">All Advanced Settings will be reset to their default configuration. This can not be undone.</string> | ||
| 151 | <string name="settings_reset">Settings reset</string> | ||
| 148 | 152 | ||
| 149 | <!-- GPU driver installation --> | 153 | <!-- GPU driver installation --> |
| 150 | <string name="select_gpu_driver">Select GPU driver</string> | 154 | <string name="select_gpu_driver">Select GPU driver</string> |