From f27ae94d1a868a15647902f12cafb2e5b6b2314d Mon Sep 17 00:00:00 2001 From: inix Date: Thu, 16 Oct 2025 04:35:05 +0200 Subject: [PATCH] add option to disable update checker --- .../features/settings/model/BooleanSetting.kt | 2 ++ .../features/settings/model/view/SettingsItem.kt | 6 ++++++ .../settings/ui/SettingsFragmentPresenter.kt | 8 ++++++++ .../java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt | 12 ++++++++++-- src/android/app/src/main/jni/android_settings.h | 2 ++ src/android/app/src/main/res/values/strings.xml | 3 ++- 6 files changed, 30 insertions(+), 3 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 e9fe2be53c..5c21ea7dc1 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 @@ -35,6 +35,8 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { PICTURE_IN_PICTURE("picture_in_picture"), USE_CUSTOM_RTC("custom_rtc_enabled"), BLACK_BACKGROUNDS("black_backgrounds"), + + ENABLE_UPDATE_CHECKS("enable_update_checks"), JOYSTICK_REL_CENTER("joystick_rel_center"), DPAD_SLIDE("dpad_slide"), HAPTIC_FEEDBACK("haptic_feedback"), 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 8c35155e78..6dc5d66c7b 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 @@ -750,6 +750,12 @@ abstract class SettingsItem( valuesId = R.array.rendererApiValues ) ) + put( + SwitchSetting( + BooleanSetting.ENABLE_UPDATE_CHECKS, + titleId = R.string.enable_update_checks, + ) + ) put( SwitchSetting( BooleanSetting.RENDERER_DEBUG, 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 6ce6046d54..51f457c221 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 @@ -1030,6 +1030,14 @@ class SettingsFragmentPresenter( override fun reset() = IntSetting.THEME.setInt(defaultValue) } + if (NativeLibrary.isUpdateCheckerEnabled()) { + add(HeaderSetting(R.string.app_settings)) + add(BooleanSetting.ENABLE_UPDATE_CHECKS.key) + } + + add(HeaderSetting(R.string.theme_and_color)) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { add( SingleChoiceSetting( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt index 6b3876bd7b..126d85d715 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt @@ -52,6 +52,7 @@ import androidx.core.content.edit import org.yuzu.yuzu_emu.activities.EmulationActivity import kotlin.text.compareTo import androidx.core.net.toUri +import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting class MainActivity : AppCompatActivity(), ThemeProvider { private lateinit var binding: ActivityMainBinding @@ -157,7 +158,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { val firstTimeSetup = PreferenceManager.getDefaultSharedPreferences(applicationContext) .getBoolean(Settings.PREF_FIRST_APP_LAUNCH, true) - if (!firstTimeSetup && NativeLibrary.isUpdateCheckerEnabled()) { + if (!firstTimeSetup && NativeLibrary.isUpdateCheckerEnabled() && BooleanSetting.ENABLE_UPDATE_CHECKS.getBoolean()) { checkForUpdates() } setInsets() @@ -183,7 +184,14 @@ class MainActivity : AppCompatActivity(), ThemeProvider { val intent = Intent(Intent.ACTION_VIEW, url.toUri()) startActivity(intent) } - .setNegativeButton(android.R.string.cancel, null) + .setNeutralButton(R.string.cancel) { dialog, _ -> + dialog.dismiss() + } + .setNegativeButton(R.string.dont_show_again) { dialog, _ -> + BooleanSetting.ENABLE_UPDATE_CHECKS.setBoolean(false) + NativeConfig.saveGlobalConfig() + dialog.dismiss() + } .show() } diff --git a/src/android/app/src/main/jni/android_settings.h b/src/android/app/src/main/jni/android_settings.h index c9e59ce105..53fdab8b4a 100644 --- a/src/android/app/src/main/jni/android_settings.h +++ b/src/android/app/src/main/jni/android_settings.h @@ -62,6 +62,8 @@ namespace AndroidSettings { Settings::Setting theme_mode{linkage, -1, "theme_mode", Settings::Category::Android}; Settings::Setting black_backgrounds{linkage, false, "black_backgrounds", Settings::Category::Android}; + Settings::Setting enable_update_checks{linkage, true, "enable_update_checks", + Settings::Category::Android}; // Input/performance overlay settings std::vector overlay_control_data; diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index df2597efe1..b679e41362 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -268,7 +268,8 @@ Folder Don\'t Show Again New game directory added successfully - Update Available + "Check for updates on app startup. " + Update Available A new version is available: %1$s\n\nWould you like to download it? Search Settings