diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt index 8598b23c18..630335be43 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt @@ -19,6 +19,7 @@ import eu.kanade.tachiyomi.ui.library.setting.SortModeSetting import eu.kanade.tachiyomi.ui.reader.setting.OrientationType import eu.kanade.tachiyomi.util.preference.minusAssign import eu.kanade.tachiyomi.util.preference.plusAssign +import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.widget.ExtendedNavigationView import uy.kohesive.injekt.Injekt @@ -251,6 +252,9 @@ object Migrations { if (oldSecureScreen) { preferences.secureScreen().set(PreferenceValues.SecureScreenMode.ALWAYS) } + if (DeviceUtil.isMiui && preferences.extensionInstaller().get() == PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER) { + preferences.extensionInstaller().set(PreferenceValues.ExtensionInstaller.LEGACY) + } } return true diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt index 3e5c8d0f1b..d49eebc34d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt @@ -55,22 +55,22 @@ object PreferenceValues { LOWEST(47), } - enum class TabletUiMode { - AUTOMATIC, - ALWAYS, - LANDSCAPE, - NEVER, + enum class TabletUiMode(val titleResId: Int) { + AUTOMATIC(R.string.automatic_background), + ALWAYS(R.string.lock_always), + LANDSCAPE(R.string.landscape), + NEVER(R.string.lock_never), } - enum class ExtensionInstaller { - LEGACY, - PACKAGEINSTALLER, - SHIZUKU, + enum class ExtensionInstaller(val titleResId: Int) { + LEGACY(R.string.ext_installer_legacy), + PACKAGEINSTALLER(R.string.ext_installer_packageinstaller), + SHIZUKU(R.string.ext_installer_shizuku), } - enum class SecureScreenMode { - ALWAYS, - INCOGNITO, - NEVER, + enum class SecureScreenMode(val titleResId: Int) { + ALWAYS(R.string.lock_always), + INCOGNITO(R.string.pref_incognito_mode), + NEVER(R.string.lock_never), } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt index f6b8cea9aa..86930a1010 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt @@ -36,6 +36,7 @@ import eu.kanade.tachiyomi.util.preference.preferenceCategory import eu.kanade.tachiyomi.util.preference.summaryRes import eu.kanade.tachiyomi.util.preference.switchPreference import eu.kanade.tachiyomi.util.preference.titleRes +import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.isPackageInstalled import eu.kanade.tachiyomi.util.system.powerManager import eu.kanade.tachiyomi.util.system.toast @@ -209,12 +210,17 @@ class SettingsAdvancedController : SettingsController() { bindTo(preferences.extensionInstaller()) titleRes = R.string.ext_installer_pref summary = "%s" - entriesRes = arrayOf( - R.string.ext_installer_legacy, - R.string.ext_installer_packageinstaller, - R.string.ext_installer_shizuku, - ) - entryValues = PreferenceValues.ExtensionInstaller.values().map { it.name }.toTypedArray() + + // PackageInstaller doesn't work on MIUI properly for non-allowlisted apps + val values = if (DeviceUtil.isMiui) { + PreferenceValues.ExtensionInstaller.values() + .filter { it != PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER } + } else { + PreferenceValues.ExtensionInstaller.values().toList() + } + + entriesRes = values.map { it.titleResId }.toTypedArray() + entryValues = values.map { it.name }.toTypedArray() onChange { if (it == PreferenceValues.ExtensionInstaller.SHIZUKU.name && @@ -243,7 +249,7 @@ class SettingsAdvancedController : SettingsController() { bindTo(preferences.tabletUiMode()) titleRes = R.string.pref_tablet_ui_mode summary = "%s" - entriesRes = arrayOf(R.string.automatic_background, R.string.lock_always, R.string.landscape, R.string.lock_never) + entriesRes = PreferenceValues.TabletUiMode.values().map { it.titleResId }.toTypedArray() entryValues = PreferenceValues.TabletUiMode.values().map { it.name }.toTypedArray() onChange { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt index b132f5ba8f..3ef5a17958 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt @@ -73,7 +73,7 @@ class SettingsLibraryController : SettingsController() { } } - preferences.portraitColumns().asFlow().combine(preferences.landscapeColumns().asFlow()) { portraitCols, landscapeCols -> Pair(portraitCols, landscapeCols) } + combine(preferences.portraitColumns().asFlow(), preferences.landscapeColumns().asFlow()) { portraitCols, landscapeCols -> Pair(portraitCols, landscapeCols) } .onEach { (portraitCols, landscapeCols) -> val portrait = getColumnValue(portraitCols) val landscape = getColumnValue(landscapeCols) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt index 4e74facce3..16ffb63374 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt @@ -93,11 +93,7 @@ class SettingsSecurityController : SettingsController() { bindTo(preferences.secureScreen()) titleRes = R.string.secure_screen summary = "%s" - entriesRes = arrayOf( - R.string.lock_always, - R.string.pref_incognito_mode, - R.string.lock_never, - ) + entriesRes = PreferenceValues.SecureScreenMode.values().map { it.titleResId }.toTypedArray() entryValues = PreferenceValues.SecureScreenMode.values().map { it.name }.toTypedArray() }