diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt b/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt index 3a01eb339..c1d28ca09 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/Preference.kt @@ -20,7 +20,7 @@ sealed class Preference { // SY <-- abstract val icon: ImageVector? - abstract val onValueChanged: suspend (newValue: T) -> Boolean + abstract val onValueChanged: suspend (value: T) -> Boolean /** * A basic [PreferenceItem] that only displays texts. @@ -28,24 +28,25 @@ sealed class Preference { data class TextPreference( override val title: String, override val subtitle: CharSequence? = null, - override val icon: ImageVector? = null, override val enabled: Boolean = true, - override val onValueChanged: suspend (newValue: String) -> Boolean = { true }, - val onClick: (() -> Unit)? = null, - ) : PreferenceItem() + ) : PreferenceItem() { + override val icon: ImageVector? = null + override val onValueChanged: suspend (value: String) -> Boolean = { true } + } /** * A [PreferenceItem] that provides a two-state toggleable option. */ data class SwitchPreference( - val pref: PreferenceData, + val preference: PreferenceData, override val title: String, override val subtitle: CharSequence? = null, - override val icon: ImageVector? = null, override val enabled: Boolean = true, - override val onValueChanged: suspend (newValue: Boolean) -> Boolean = { true }, - ) : PreferenceItem() + override val onValueChanged: suspend (value: Boolean) -> Boolean = { true }, + ) : PreferenceItem() { + override val icon: ImageVector? = null + } /** * A [PreferenceItem] that provides a slider to select an integer number. @@ -55,31 +56,31 @@ sealed class Preference { val max: Int, val min: Int = 0, val steps: Int = 0, - override val title: String = "", + override val title: String, override val subtitle: String? = null, - override val icon: ImageVector? = null, override val enabled: Boolean = true, - override val onValueChanged: suspend (newValue: Int) -> Boolean = { true }, - ) : PreferenceItem() + override val onValueChanged: suspend (value: Int) -> Boolean = { true }, + ) : PreferenceItem() { + override val icon: ImageVector? = null + } /** * A [PreferenceItem] that displays a list of entries as a dialog. */ @Suppress("UNCHECKED_CAST") data class ListPreference( - val pref: PreferenceData, + val preference: PreferenceData, + val entries: ImmutableMap, override val title: String, override val subtitle: String? = "%s", val subtitleProvider: @Composable (value: T, entries: ImmutableMap) -> String? = { v, e -> subtitle?.format(e[v]) }, override val icon: ImageVector? = null, override val enabled: Boolean = true, - override val onValueChanged: suspend (newValue: T) -> Boolean = { true }, - - val entries: ImmutableMap, + override val onValueChanged: suspend (value: T) -> Boolean = { true }, ) : PreferenceItem() { - internal fun internalSet(newValue: Any) = pref.set(newValue as T) - internal suspend fun internalOnValueChanged(newValue: Any) = onValueChanged(newValue as T) + internal fun internalSet(value: Any) = preference.set(value as T) + internal suspend fun internalOnValueChanged(value: Any) = onValueChanged(value as T) @Composable internal fun internalSubtitleProvider(value: Any?, entries: ImmutableMap) = @@ -91,15 +92,14 @@ sealed class Preference { */ data class BasicListPreference( val value: String, + val entries: ImmutableMap, override val title: String, override val subtitle: String? = "%s", val subtitleProvider: @Composable (value: String, entries: ImmutableMap) -> String? = { v, e -> subtitle?.format(e[v]) }, override val icon: ImageVector? = null, override val enabled: Boolean = true, - override val onValueChanged: suspend (newValue: String) -> Boolean = { true }, - - val entries: ImmutableMap, + override val onValueChanged: suspend (value: String) -> Boolean = { true }, ) : PreferenceItem() /** @@ -107,61 +107,60 @@ sealed class Preference { * Multiple entries can be selected at the same time. */ data class MultiSelectListPreference( - val pref: PreferenceData>, + val preference: PreferenceData>, + val entries: ImmutableMap, override val title: String, override val subtitle: String? = "%s", - val subtitleProvider: @Composable ( - value: Set, - entries: ImmutableMap, - ) -> String? = { v, e -> - val combined = remember(v) { - v.map { e[it] } - .takeIf { it.isNotEmpty() } - ?.joinToString() - } ?: stringResource(MR.strings.none) - subtitle?.format(combined) - }, + val subtitleProvider: @Composable (value: Set, entries: ImmutableMap) -> String? = + { v, e -> + val combined = remember(v, e) { + v.mapNotNull { e[it] } + .joinToString() + .takeUnless { it.isBlank() } + } + ?: stringResource(MR.strings.none) + subtitle?.format(combined) + }, override val icon: ImageVector? = null, override val enabled: Boolean = true, - override val onValueChanged: suspend (newValue: Set) -> Boolean = { true }, - - val entries: ImmutableMap, + override val onValueChanged: suspend (value: Set) -> Boolean = { true }, ) : PreferenceItem>() /** * A [PreferenceItem] that shows a EditText in the dialog. */ data class EditTextPreference( - val pref: PreferenceData, + val preference: PreferenceData, override val title: String, override val subtitle: String? = "%s", - override val icon: ImageVector? = null, override val enabled: Boolean = true, - override val onValueChanged: suspend (newValue: String) -> Boolean = { true }, - ) : PreferenceItem() + override val onValueChanged: suspend (value: String) -> Boolean = { true }, + ) : PreferenceItem() { + override val icon: ImageVector? = null + } /** * A [PreferenceItem] for individual tracker. */ data class TrackerPreference( val tracker: Tracker, - override val title: String, val login: () -> Unit, val logout: () -> Unit, ) : PreferenceItem() { + override val title: String = "" override val enabled: Boolean = true override val subtitle: String? = null override val icon: ImageVector? = null - override val onValueChanged: suspend (newValue: String) -> Boolean = { true } + override val onValueChanged: suspend (value: String) -> Boolean = { true } } data class InfoPreference( override val title: String, ) : PreferenceItem() { - override val enabled: Boolean = true override val subtitle: String? = null + override val enabled: Boolean = true override val icon: ImageVector? = null - override val onValueChanged: suspend (newValue: String) -> Boolean = { true } + override val onValueChanged: suspend (value: String) -> Boolean = { true } } data class CustomPreference( @@ -171,7 +170,7 @@ sealed class Preference { override val enabled: Boolean = true override val subtitle: String? = null override val icon: ImageVector? = null - override val onValueChanged: suspend (newValue: Unit) -> Boolean = { true } + override val onValueChanged: suspend (value: Unit) -> Boolean = { true } } } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt b/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt index 45ab258b0..9f97d3a83 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/PreferenceItem.kt @@ -61,7 +61,7 @@ internal fun PreferenceItem( ) { when (item) { is Preference.PreferenceItem.SwitchPreference -> { - val value by item.pref.collectAsState() + val value by item.preference.collectAsState() SwitchPreferenceWidget( title = item.title, subtitle = item.subtitle, @@ -70,7 +70,7 @@ internal fun PreferenceItem( onCheckedChanged = { newValue -> scope.launch { if (item.onValueChanged(newValue)) { - item.pref.set(newValue) + item.preference.set(newValue) } } }, @@ -93,7 +93,7 @@ internal fun PreferenceItem( ) } is Preference.PreferenceItem.ListPreference<*> -> { - val value by item.pref.collectAsState() + val value by item.preference.collectAsState() ListPreferenceWidget( value = value, title = item.title, @@ -120,14 +120,14 @@ internal fun PreferenceItem( ) } is Preference.PreferenceItem.MultiSelectListPreference -> { - val values by item.pref.collectAsState() + val values by item.preference.collectAsState() MultiSelectListPreferenceWidget( preference = item, values = values, onValuesChange = { newValues -> scope.launch { if (item.onValueChanged(newValues)) { - item.pref.set(newValues.toMutableSet()) + item.preference.set(newValues.toMutableSet()) } } }, @@ -142,7 +142,7 @@ internal fun PreferenceItem( ) } is Preference.PreferenceItem.EditTextPreference -> { - val values by item.pref.collectAsState() + val values by item.preference.collectAsState() EditTextPreferenceWidget( title = item.title, subtitle = item.subtitle, @@ -150,7 +150,7 @@ internal fun PreferenceItem( value = values, onConfirm = { val accepted = item.onValueChanged(it) - if (accepted) item.pref.set(it) + if (accepted) item.preference.set(it) accepted }, ) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt index 5a159a325..0631e241b 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAdvancedScreen.kt @@ -129,15 +129,15 @@ object SettingsAdvancedScreen : SearchableSettings { } }, ), - /* SY --> Preference.PreferenceItem.SwitchPreference( - pref = networkPreferences.verboseLogging(), + Preference.PreferenceItem.SwitchPreference( + preference = networkPreferences.verboseLogging(), title = stringResource(MR.strings.pref_verbose_logging), subtitle = stringResource(MR.strings.pref_verbose_logging_summary), onValueChanged = { context.toast(MR.strings.requires_app_restart) true }, - ), SY <-- */ + ), Preference.PreferenceItem.TextPreference( title = stringResource(MR.strings.pref_debug_info), onClick = { navigator.push(DebugInfoScreen()) }, @@ -157,15 +157,15 @@ object SettingsAdvancedScreen : SearchableSettings { ), // KMK --> Preference.PreferenceItem.MultiSelectListPreference( - pref = unsortedPreferences.appShouldAutoUpdate(), - title = stringResource(KMR.strings.auto_update_app), - subtitle = stringResource(MR.strings.restrictions), + preference = unsortedPreferences.appShouldAutoUpdate(), entries = persistentMapOf( AppUpdatePolicy.DEVICE_ONLY_ON_WIFI to stringResource(MR.strings.connected_to_wifi), AppUpdatePolicy.DEVICE_NETWORK_NOT_METERED to stringResource(MR.strings.network_not_metered), AppUpdatePolicy.DEVICE_CHARGING to stringResource(MR.strings.charging), AppUpdatePolicy.DISABLE_AUTO_DOWNLOAD to stringResource(KMR.strings.auto_update_app_disable_auto_download), ), + title = stringResource(KMR.strings.auto_update_app), + subtitle = stringResource(MR.strings.restrictions), onValueChanged = { // Post to event looper to allow the preference to be updated. ContextCompat.getMainExecutor(context).execute { AppUpdateJob.setupTask(context) } @@ -294,8 +294,7 @@ object SettingsAdvancedScreen : SearchableSettings { }, ), Preference.PreferenceItem.ListPreference( - pref = networkPreferences.dohProvider(), - title = stringResource(MR.strings.pref_dns_over_https), + preference = networkPreferences.dohProvider(), entries = persistentMapOf( -1 to stringResource(MR.strings.disabled), PREF_DOH_CLOUDFLARE to "Cloudflare", @@ -311,13 +310,14 @@ object SettingsAdvancedScreen : SearchableSettings { PREF_DOH_NJALLA to "Njalla", PREF_DOH_SHECAN to "Shecan", ), + title = stringResource(MR.strings.pref_dns_over_https), onValueChanged = { context.toast(MR.strings.requires_app_restart) true }, ), Preference.PreferenceItem.EditTextPreference( - pref = userAgentPref, + preference = userAgentPref, title = stringResource(MR.strings.pref_user_agent_string), onValueChanged = { try { @@ -360,7 +360,7 @@ object SettingsAdvancedScreen : SearchableSettings { ), // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.preloadLibraryColor(), + preference = uiPreferences.preloadLibraryColor(), title = stringResource(KMR.strings.preload_library_cover_color), ), // KMK <-- @@ -403,13 +403,7 @@ object SettingsAdvancedScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_reader), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = basePreferences.hardwareBitmapThreshold(), - title = stringResource(MR.strings.pref_hardware_bitmap_threshold), - subtitleProvider = { value, options -> - stringResource(MR.strings.pref_hardware_bitmap_threshold_summary, options[value].orEmpty()) - }, - enabled = !ImageUtil.HARDWARE_BITMAP_UNSUPPORTED && - GLUtil.DEVICE_TEXTURE_LIMIT > GLUtil.SAFE_TEXTURE_LIMIT, + preference = basePreferences.hardwareBitmapThreshold(), entries = GLUtil.CUSTOM_TEXTURE_LIMIT_OPTIONS .mapIndexed { index, option -> val display = if (index == 0) { @@ -421,9 +415,15 @@ object SettingsAdvancedScreen : SearchableSettings { } .toMap() .toImmutableMap(), + title = stringResource(MR.strings.pref_hardware_bitmap_threshold), + subtitleProvider = { value, options -> + stringResource(MR.strings.pref_hardware_bitmap_threshold_summary, options[value].orEmpty()) + }, + enabled = !ImageUtil.HARDWARE_BITMAP_UNSUPPORTED && + GLUtil.DEVICE_TEXTURE_LIMIT > GLUtil.SAFE_TEXTURE_LIMIT, ), Preference.PreferenceItem.SwitchPreference( - pref = basePreferences.alwaysDecodeLongStripWithSSIV(), + preference = basePreferences.alwaysDecodeLongStripWithSSIV(), title = stringResource(MR.strings.pref_always_decode_long_strip_with_ssiv), subtitle = stringResource(MR.strings.pref_always_decode_long_strip_with_ssiv_summary), ), @@ -475,8 +475,7 @@ object SettingsAdvancedScreen : SearchableSettings { title = stringResource(MR.strings.label_extensions), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = extensionInstallerPref, - title = stringResource(MR.strings.ext_installer_pref), + preference = extensionInstallerPref, entries = extensionInstallerPref.entries .filter { // TODO: allow private option in stable versions once URL handling is more fleshed out @@ -488,6 +487,7 @@ object SettingsAdvancedScreen : SearchableSettings { } .associateWith { stringResource(it.titleRes) } .toImmutableMap(), + title = stringResource(MR.strings.ext_installer_pref), onValueChanged = { if (it == BasePreferences.ExtensionInstaller.SHIZUKU && !context.isShizukuInstalled @@ -652,40 +652,38 @@ object SettingsAdvancedScreen : SearchableSettings { title = stringResource(SYMR.strings.data_saver), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = sourcePreferences.dataSaver(), - title = stringResource(SYMR.strings.data_saver), - subtitle = stringResource(SYMR.strings.data_saver_summary), + preference = sourcePreferences.dataSaver(), entries = persistentMapOf( DataSaver.NONE to stringResource(MR.strings.disabled), DataSaver.BANDWIDTH_HERO to stringResource(SYMR.strings.bandwidth_hero), DataSaver.WSRV_NL to stringResource(SYMR.strings.wsrv), ), + title = stringResource(SYMR.strings.data_saver), + subtitle = stringResource(SYMR.strings.data_saver_summary), ), Preference.PreferenceItem.EditTextPreference( - pref = sourcePreferences.dataSaverServer(), + preference = sourcePreferences.dataSaverServer(), title = stringResource(SYMR.strings.bandwidth_data_saver_server), subtitle = stringResource(SYMR.strings.data_saver_server_summary), enabled = dataSaver == DataSaver.BANDWIDTH_HERO, ), Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.dataSaverDownloader(), + preference = sourcePreferences.dataSaverDownloader(), title = stringResource(SYMR.strings.data_saver_downloader), enabled = dataSaver != DataSaver.NONE, ), Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.dataSaverIgnoreJpeg(), + preference = sourcePreferences.dataSaverIgnoreJpeg(), title = stringResource(SYMR.strings.data_saver_ignore_jpeg), enabled = dataSaver != DataSaver.NONE, ), Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.dataSaverIgnoreGif(), + preference = sourcePreferences.dataSaverIgnoreGif(), title = stringResource(SYMR.strings.data_saver_ignore_gif), enabled = dataSaver != DataSaver.NONE, ), Preference.PreferenceItem.ListPreference( - pref = sourcePreferences.dataSaverImageQuality(), - title = stringResource(SYMR.strings.data_saver_image_quality), - subtitle = stringResource(SYMR.strings.data_saver_image_quality_summary), + preference = sourcePreferences.dataSaverImageQuality(), entries = listOf( "10%", "20%", @@ -696,13 +694,15 @@ object SettingsAdvancedScreen : SearchableSettings { "90%", "95%", ).associateBy { it.trimEnd('%').toInt() }.toImmutableMap(), + title = stringResource(SYMR.strings.data_saver_image_quality), + subtitle = stringResource(SYMR.strings.data_saver_image_quality_summary), enabled = dataSaver != DataSaver.NONE, ), kotlin.run { val dataSaverImageFormatJpeg by sourcePreferences.dataSaverImageFormatJpeg() .collectAsState() Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.dataSaverImageFormatJpeg(), + preference = sourcePreferences.dataSaverImageFormatJpeg(), title = stringResource(SYMR.strings.data_saver_image_format), subtitle = if (dataSaverImageFormatJpeg) { stringResource(SYMR.strings.data_saver_image_format_summary_on) @@ -713,7 +713,7 @@ object SettingsAdvancedScreen : SearchableSettings { ) }, Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.dataSaverColorBW(), + preference = sourcePreferences.dataSaverColorBW(), title = stringResource(SYMR.strings.data_saver_color_bw), enabled = dataSaver == DataSaver.BANDWIDTH_HERO, ), @@ -733,7 +733,7 @@ object SettingsAdvancedScreen : SearchableSettings { title = stringResource(SYMR.strings.developer_tools), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.isHentaiEnabled(), + preference = unsortedPreferences.isHentaiEnabled(), title = stringResource(SYMR.strings.toggle_hentai_features), subtitle = stringResource(SYMR.strings.toggle_hentai_features_summary), onValueChanged = { @@ -741,7 +741,7 @@ object SettingsAdvancedScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.enableSourceBlacklist(), + preference = sourcePreferences.enableSourceBlacklist(), title = stringResource(SYMR.strings.enable_source_blacklist), subtitle = stringResource( SYMR.strings.enable_source_blacklist_summary, @@ -749,7 +749,7 @@ object SettingsAdvancedScreen : SearchableSettings { ), ), Preference.PreferenceItem.SwitchPreference( - pref = delegateSourcePreferences.delegateSources(), + preference = delegateSourcePreferences.delegateSources(), title = stringResource(SYMR.strings.toggle_delegated_sources), subtitle = stringResource( SYMR.strings.toggle_delegated_sources_summary, @@ -759,14 +759,14 @@ object SettingsAdvancedScreen : SearchableSettings { ), ), Preference.PreferenceItem.ListPreference( - pref = unsortedPreferences.logLevel(), - title = stringResource(SYMR.strings.log_level), - subtitle = stringResource(SYMR.strings.log_level_summary), + preference = unsortedPreferences.logLevel(), entries = EHLogLevel.entries.mapIndexed { index, ehLogLevel -> index to "${context.stringResource(ehLogLevel.nameRes)} (${ context.stringResource(ehLogLevel.description) })" }.toMap().toImmutableMap(), + title = stringResource(SYMR.strings.log_level), + subtitle = stringResource(SYMR.strings.log_level_summary), ), kotlin.run { var enableEncryptDatabase by rememberSaveable { mutableStateOf(false) } @@ -804,8 +804,8 @@ object SettingsAdvancedScreen : SearchableSettings { ) } Preference.PreferenceItem.SwitchPreference( + preference = securityPreferences.encryptDatabase(), title = stringResource(SYMR.strings.encrypt_database), - pref = securityPreferences.encryptDatabase(), subtitle = stringResource(SYMR.strings.encrypt_database_subtitle), onValueChanged = { if (it) { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt index 5a9063862..0d62d9b32 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsAppearanceScreen.kt @@ -102,14 +102,12 @@ object SettingsAppearanceScreen : SearchableSettings { // KMK --> Preference.PreferenceItem.TextPreference( title = stringResource(KMR.strings.pref_custom_color), - enabled = appTheme == AppTheme.CUSTOM, subtitle = stringResource(KMR.strings.custom_color_description), + enabled = appTheme == AppTheme.CUSTOM, onClick = { navigator.push(AppCustomThemeColorPickerScreen()) }, ), Preference.PreferenceItem.ListPreference( - pref = uiPreferences.customThemeStyle(), - title = stringResource(KMR.strings.pref_custom_theme_style), - enabled = appTheme == AppTheme.CUSTOM, + preference = uiPreferences.customThemeStyle(), entries = PaletteStyle.entries .associateWith { when (it) { @@ -135,6 +133,8 @@ object SettingsAppearanceScreen : SearchableSettings { } } .toImmutableMap(), + title = stringResource(KMR.strings.pref_custom_theme_style), + enabled = appTheme == AppTheme.CUSTOM, onValueChanged = { (context as? Activity)?.let { ActivityCompat.recreate(it) } true @@ -142,7 +142,7 @@ object SettingsAppearanceScreen : SearchableSettings { ), // KMK <-- Preference.PreferenceItem.SwitchPreference( - pref = amoledPref, + preference = amoledPref, title = stringResource(MR.strings.pref_dark_theme_pure_black), enabled = themeMode != ThemeMode.LIGHT, onValueChanged = { @@ -167,13 +167,11 @@ object SettingsAppearanceScreen : SearchableSettings { title = stringResource(KMR.strings.pref_manga_info), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.themeCoverBased(), + preference = uiPreferences.themeCoverBased(), title = stringResource(KMR.strings.pref_theme_cover_based), ), Preference.PreferenceItem.ListPreference( - pref = uiPreferences.themeCoverBasedStyle(), - title = stringResource(KMR.strings.pref_theme_cover_based_style), - enabled = mangaInfoThemeCoverBased, + preference = uiPreferences.themeCoverBasedStyle(), entries = PaletteStyle.entries .associateWith { when (it) { @@ -199,9 +197,11 @@ object SettingsAppearanceScreen : SearchableSettings { } } .toImmutableMap(), + title = stringResource(KMR.strings.pref_theme_cover_based_style), + enabled = mangaInfoThemeCoverBased, ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.usePanoramaCoverMangaInfo(), + preference = uiPreferences.usePanoramaCoverMangaInfo(), title = stringResource(KMR.strings.pref_panorama_cover), subtitle = stringResource(KMR.strings.pref_panorama_cover_summary), ), @@ -232,28 +232,28 @@ object SettingsAppearanceScreen : SearchableSettings { onClick = { navigator.push(AppLanguageScreen()) }, ), Preference.PreferenceItem.ListPreference( - pref = uiPreferences.tabletUiMode(), - title = stringResource(MR.strings.pref_tablet_ui_mode), + preference = uiPreferences.tabletUiMode(), entries = TabletUiMode.entries .associateWith { stringResource(it.titleRes) } .toImmutableMap(), + title = stringResource(MR.strings.pref_tablet_ui_mode), onValueChanged = { context.toast(MR.strings.requires_app_restart) true }, ), Preference.PreferenceItem.ListPreference( - pref = uiPreferences.dateFormat(), - title = stringResource(MR.strings.pref_date_format), + preference = uiPreferences.dateFormat(), entries = DateFormats .associateWith { val formattedDate = UiPreferences.dateFormat(it).format(now) "${it.ifEmpty { stringResource(MR.strings.label_default) }} ($formattedDate)" } .toImmutableMap(), + title = stringResource(MR.strings.pref_date_format), ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.relativeTime(), + preference = uiPreferences.relativeTime(), title = stringResource(MR.strings.pref_relative_format), subtitle = stringResource( MR.strings.pref_relative_format_summary, @@ -279,42 +279,42 @@ object SettingsAppearanceScreen : SearchableSettings { preferenceItems = persistentListOf( // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.usePanoramaCoverFlow(), + preference = uiPreferences.usePanoramaCoverFlow(), title = stringResource(KMR.strings.pref_panorama_cover_flow), subtitle = stringResource(KMR.strings.pref_panorama_cover_flow_summary), ), // KMK <-- Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.expandFilters(), + preference = uiPreferences.expandFilters(), title = stringResource(SYMR.strings.toggle_expand_search_filters), ), // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.expandRelatedMangas(), + preference = uiPreferences.expandRelatedMangas(), title = stringResource(KMR.strings.pref_expand_related_mangas), subtitle = stringResource(KMR.strings.pref_expand_related_mangas_summary), enabled = sourcePreferences.relatedMangas().get(), ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.relatedMangasInOverflow(), + preference = uiPreferences.relatedMangasInOverflow(), enabled = !relatedMangasInOverflow, title = stringResource(KMR.strings.put_related_mangas_in_overflow), subtitle = stringResource(KMR.strings.put_related_mangas_in_overflow_summary), ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.showHomeOnRelatedMangas(), + preference = uiPreferences.showHomeOnRelatedMangas(), title = stringResource(KMR.strings.pref_show_home_on_related_mangas), subtitle = stringResource(KMR.strings.pref_show_home_on_related_mangas_summary), enabled = sourcePreferences.relatedMangas().get(), ), // KMK <-- Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.recommendsInOverflow(), + preference = uiPreferences.recommendsInOverflow(), title = stringResource(SYMR.strings.put_recommends_in_overflow), subtitle = stringResource(SYMR.strings.put_recommends_in_overflow_summary), ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.mergeInOverflow(), + preference = uiPreferences.mergeInOverflow(), title = stringResource(SYMR.strings.put_merge_in_overflow), subtitle = stringResource(SYMR.strings.put_merge_in_overflow_summary), ), @@ -347,15 +347,15 @@ object SettingsAppearanceScreen : SearchableSettings { stringResource(SYMR.strings.pref_category_navbar), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.showNavUpdates(), + preference = uiPreferences.showNavUpdates(), title = stringResource(SYMR.strings.pref_hide_updates_button), ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.showNavHistory(), + preference = uiPreferences.showNavHistory(), title = stringResource(SYMR.strings.pref_hide_history_button), ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.bottomBarLabels(), + preference = uiPreferences.bottomBarLabels(), title = stringResource(SYMR.strings.pref_show_bottom_bar_labels), ), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt index a071a2444..9e1a2b59f 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBrowseScreen.kt @@ -60,7 +60,7 @@ object SettingsBrowseScreen : SearchableSettings { preferenceItems = persistentListOf( // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.relatedMangas(), + preference = sourcePreferences.relatedMangas(), title = stringResource(KMR.strings.pref_source_related_mangas), subtitle = stringResource(KMR.strings.pref_source_related_mangas_summary), ), @@ -76,17 +76,17 @@ object SettingsBrowseScreen : SearchableSettings { ) }, Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.sourcesTabCategoriesFilter(), + preference = sourcePreferences.sourcesTabCategoriesFilter(), title = stringResource(SYMR.strings.pref_source_source_filtering), subtitle = stringResource(SYMR.strings.pref_source_source_filtering_summery), ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.useNewSourceNavigation(), + preference = uiPreferences.useNewSourceNavigation(), title = stringResource(SYMR.strings.pref_source_navigation), subtitle = stringResource(SYMR.strings.pref_source_navigation_summery), ), Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.allowLocalSourceHiddenFolders(), + preference = unsortedPreferences.allowLocalSourceHiddenFolders(), title = stringResource(SYMR.strings.pref_local_source_hidden_folders), subtitle = stringResource(SYMR.strings.pref_local_source_hidden_folders_summery), ), @@ -96,18 +96,18 @@ object SettingsBrowseScreen : SearchableSettings { title = stringResource(SYMR.strings.feed), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.hideFeedTab(), + preference = uiPreferences.hideFeedTab(), title = stringResource(SYMR.strings.pref_hide_feed), ), Preference.PreferenceItem.SwitchPreference( - pref = uiPreferences.feedTabInFront(), + preference = uiPreferences.feedTabInFront(), title = stringResource(SYMR.strings.pref_feed_position), subtitle = stringResource(SYMR.strings.pref_feed_position_summery), enabled = hideFeedTab.not(), ), // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.hideInLibraryFeedItems(), + preference = sourcePreferences.hideInLibraryFeedItems(), title = stringResource(MR.strings.pref_hide_in_library_items), ), // KMK <-- @@ -118,7 +118,7 @@ object SettingsBrowseScreen : SearchableSettings { title = stringResource(MR.strings.label_sources), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.hideInLibraryItems(), + preference = sourcePreferences.hideInLibraryItems(), title = stringResource(MR.strings.pref_hide_in_library_items), ), Preference.PreferenceItem.TextPreference( @@ -134,7 +134,7 @@ object SettingsBrowseScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_nsfw_content), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = sourcePreferences.showNsfwSource(), + preference = sourcePreferences.showNsfwSource(), title = stringResource(MR.strings.pref_show_nsfw_source), subtitle = stringResource(MR.strings.requires_app_restart), onValueChanged = { diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt index a3b580ed8..4a2d4abe2 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDataScreen.kt @@ -257,8 +257,7 @@ object SettingsDataScreen : SearchableSettings { // Automatic backups Preference.PreferenceItem.ListPreference( - pref = backupPreferences.backupInterval(), - title = stringResource(MR.strings.pref_backup_interval), + preference = backupPreferences.backupInterval(), entries = persistentMapOf( 0 to stringResource(MR.strings.off), 1 to stringResource(MR.strings.update_1hour), @@ -269,6 +268,7 @@ object SettingsDataScreen : SearchableSettings { 48 to stringResource(MR.strings.update_48hour), 168 to stringResource(MR.strings.update_weekly), ), + title = stringResource(MR.strings.pref_backup_interval), onValueChanged = { BackupCreateJob.setupTask(context, it) true @@ -280,7 +280,7 @@ object SettingsDataScreen : SearchableSettings { ), // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = backupPreferences.showRestoringProgressBanner(), + preference = backupPreferences.showRestoringProgressBanner(), title = stringResource(KMR.strings.pref_show_restoring_progress_banner), ), // KMK <-- @@ -358,7 +358,7 @@ object SettingsDataScreen : SearchableSettings { ), // SY <-- Preference.PreferenceItem.SwitchPreference( - pref = libraryPreferences.autoClearChapterCache(), + preference = libraryPreferences.autoClearChapterCache(), title = stringResource(MR.strings.pref_auto_clear_chapter_cache), ), ), @@ -372,13 +372,13 @@ object SettingsDataScreen : SearchableSettings { title = stringResource(SYMR.strings.pref_sync_service_category), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = syncPreferences.syncService(), - title = stringResource(SYMR.strings.pref_sync_service), + preference = syncPreferences.syncService(), entries = persistentMapOf( SyncManager.SyncService.NONE.value to stringResource(MR.strings.off), SyncManager.SyncService.SYNCYOMI.value to stringResource(SYMR.strings.syncyomi), SyncManager.SyncService.GOOGLE_DRIVE.value to stringResource(SYMR.strings.google_drive), ), + title = stringResource(SYMR.strings.pref_sync_service), onValueChanged = { true }, ), ), @@ -430,7 +430,7 @@ object SettingsDataScreen : SearchableSettings { getAutomaticSyncGroup(syncPreferences), // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = syncPreferences.showSyncingProgressBanner(), + preference = syncPreferences.showSyncingProgressBanner(), title = stringResource(KMR.strings.pref_show_syncing_progress_banner), ), // KMK <-- @@ -523,9 +523,9 @@ object SettingsDataScreen : SearchableSettings { val scope = rememberCoroutineScope() return listOf( Preference.PreferenceItem.EditTextPreference( + preference = syncPreferences.clientHost(), title = stringResource(SYMR.strings.pref_sync_host), subtitle = stringResource(SYMR.strings.pref_sync_host_summ), - pref = syncPreferences.clientHost(), onValueChanged = { newValue -> scope.launch { // Trim spaces at the beginning and end, then remove trailing slash if present @@ -537,9 +537,9 @@ object SettingsDataScreen : SearchableSettings { }, ), Preference.PreferenceItem.EditTextPreference( + preference = syncPreferences.clientAPIKey(), title = stringResource(SYMR.strings.pref_sync_api_key), subtitle = stringResource(SYMR.strings.pref_sync_api_key_summ), - pref = syncPreferences.clientAPIKey(), ), ) } @@ -586,8 +586,7 @@ object SettingsDataScreen : SearchableSettings { title = stringResource(SYMR.strings.pref_sync_automatic_category), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = syncIntervalPref, - title = stringResource(SYMR.strings.pref_sync_interval), + preference = syncIntervalPref, entries = persistentMapOf( 0 to stringResource(MR.strings.off), 30 to stringResource(SYMR.strings.update_30min), @@ -599,6 +598,7 @@ object SettingsDataScreen : SearchableSettings { 2880 to stringResource(MR.strings.update_48hour), 10080 to stringResource(MR.strings.update_weekly), ), + title = stringResource(SYMR.strings.pref_sync_interval), onValueChanged = { SyncDataJob.setupTask(context, it) true diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt index 771debad8..490a16844 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt @@ -41,15 +41,15 @@ object SettingsDownloadScreen : SearchableSettings { val downloadPreferences = remember { Injekt.get() } return listOf( Preference.PreferenceItem.SwitchPreference( - pref = downloadPreferences.downloadOnlyOverWifi(), + preference = downloadPreferences.downloadOnlyOverWifi(), title = stringResource(MR.strings.connected_to_wifi), ), Preference.PreferenceItem.SwitchPreference( - pref = downloadPreferences.saveChaptersAsCBZ(), + preference = downloadPreferences.saveChaptersAsCBZ(), title = stringResource(MR.strings.save_chapter_as_cbz), ), Preference.PreferenceItem.SwitchPreference( - pref = downloadPreferences.splitTallImages(), + preference = downloadPreferences.splitTallImages(), title = stringResource(MR.strings.split_tall_images), subtitle = stringResource(MR.strings.split_tall_images_summary), ), @@ -77,12 +77,11 @@ object SettingsDownloadScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_delete_chapters), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = downloadPreferences.removeAfterMarkedAsRead(), + preference = downloadPreferences.removeAfterMarkedAsRead(), title = stringResource(MR.strings.pref_remove_after_marked_as_read), ), Preference.PreferenceItem.ListPreference( - pref = downloadPreferences.removeAfterReadSlots(), - title = stringResource(MR.strings.pref_remove_after_read), + preference = downloadPreferences.removeAfterReadSlots(), entries = persistentMapOf( -1 to stringResource(MR.strings.disabled), 0 to stringResource(MR.strings.last_read_chapter), @@ -91,9 +90,10 @@ object SettingsDownloadScreen : SearchableSettings { 3 to stringResource(MR.strings.fourth_to_last), 4 to stringResource(MR.strings.fifth_to_last), ), + title = stringResource(MR.strings.pref_remove_after_read), ), Preference.PreferenceItem.SwitchPreference( - pref = downloadPreferences.removeBookmarkedChapters(), + preference = downloadPreferences.removeBookmarkedChapters(), title = stringResource(MR.strings.pref_remove_bookmarked_chapters), ), getExcludedCategoriesPreference( @@ -110,19 +110,11 @@ object SettingsDownloadScreen : SearchableSettings { categories: () -> List, ): Preference.PreferenceItem.MultiSelectListPreference { return Preference.PreferenceItem.MultiSelectListPreference( - pref = downloadPreferences.removeExcludeCategories(), - title = stringResource(MR.strings.pref_remove_exclude_categories), - subtitleProvider = { v, e -> - val combined = remember(v, e) { - v.map { e[it] } - .takeIf { it.isNotEmpty() } - ?.joinToString() - } ?: stringResource(MR.strings.none) - "%s".format(combined) - }, + preference = downloadPreferences.removeExcludeCategories(), entries = categories() .associate { it.id.toString() to it.visualName } .toImmutableMap(), + title = stringResource(MR.strings.pref_remove_exclude_categories), ) } @@ -162,11 +154,11 @@ object SettingsDownloadScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_auto_download), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = downloadNewChaptersPref, + preference = downloadNewChaptersPref, title = stringResource(MR.strings.pref_download_new), ), Preference.PreferenceItem.SwitchPreference( - pref = downloadNewUnreadChaptersOnlyPref, + preference = downloadNewUnreadChaptersOnlyPref, title = stringResource(MR.strings.pref_download_new_unread_chapters_only), enabled = downloadNewChapters, ), @@ -177,8 +169,8 @@ object SettingsDownloadScreen : SearchableSettings { included = included, excluded = excluded, ), - onClick = { showDialog = true }, enabled = downloadNewChapters, + onClick = { showDialog = true }, ), ), ) @@ -192,8 +184,7 @@ object SettingsDownloadScreen : SearchableSettings { title = stringResource(MR.strings.download_ahead), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = downloadPreferences.autoDownloadWhileReading(), - title = stringResource(MR.strings.auto_download_while_reading), + preference = downloadPreferences.autoDownloadWhileReading(), entries = listOf(0, 2, 3, 5, 10) .associateWith { if (it == 0) { @@ -203,6 +194,7 @@ object SettingsDownloadScreen : SearchableSettings { } } .toImmutableMap(), + title = stringResource(MR.strings.auto_download_while_reading), ), Preference.PreferenceItem.InfoPreference(stringResource(MR.strings.download_ahead_info)), ), @@ -218,8 +210,7 @@ object SettingsDownloadScreen : SearchableSettings { title = stringResource(KMR.strings.download_cache_renew_interval), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = downloadPreferences.downloadCacheRenewInterval(), - title = stringResource(KMR.strings.download_cache_renew_interval), + preference = downloadPreferences.downloadCacheRenewInterval(), entries = persistentMapOf( -1 to stringResource(KMR.strings.download_cache_renew_interval_manual), 1 to stringResource(KMR.strings.download_cache_renew_interval_1hour), @@ -228,6 +219,7 @@ object SettingsDownloadScreen : SearchableSettings { 12 to stringResource(KMR.strings.download_cache_renew_interval_12hour), 24 to stringResource(KMR.strings.download_cache_renew_interval_24hour), ), + title = stringResource(KMR.strings.download_cache_renew_interval), ), Preference.PreferenceItem.InfoPreference(stringResource(KMR.strings.download_cache_renew_interval_info)), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsEhScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsEhScreen.kt index 00eb33372..f7e43a89a 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsEhScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsEhScreen.kt @@ -195,7 +195,7 @@ object SettingsEhScreen : SearchableSettings { val context = LocalContext.current val value by unsortedPreferences.enableExhentai().collectAsState() return Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.enableExhentai(), + preference = unsortedPreferences.enableExhentai(), title = stringResource(SYMR.strings.enable_exhentai), subtitle = if (!value) { stringResource(SYMR.strings.requires_login) @@ -220,13 +220,13 @@ object SettingsEhScreen : SearchableSettings { unsortedPreferences: UnsortedPreferences, ): Preference.PreferenceItem.ListPreference { return Preference.PreferenceItem.ListPreference( - pref = unsortedPreferences.useHentaiAtHome(), - title = stringResource(SYMR.strings.use_hentai_at_home), - subtitle = stringResource(SYMR.strings.use_hentai_at_home_summary), + preference = unsortedPreferences.useHentaiAtHome(), entries = persistentMapOf( 0 to stringResource(SYMR.strings.use_hentai_at_home_option_1), 1 to stringResource(SYMR.strings.use_hentai_at_home_option_2), ), + title = stringResource(SYMR.strings.use_hentai_at_home), + subtitle = stringResource(SYMR.strings.use_hentai_at_home_summary), enabled = exhentaiEnabled, ) } @@ -238,7 +238,7 @@ object SettingsEhScreen : SearchableSettings { ): Preference.PreferenceItem.SwitchPreference { val value by unsortedPreferences.useJapaneseTitle().collectAsState() return Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.useJapaneseTitle(), + preference = unsortedPreferences.useJapaneseTitle(), title = stringResource(SYMR.strings.show_japanese_titles), subtitle = if (value) { stringResource(SYMR.strings.show_japanese_titles_option_1) @@ -256,7 +256,7 @@ object SettingsEhScreen : SearchableSettings { ): Preference.PreferenceItem.SwitchPreference { val value by unsortedPreferences.exhUseOriginalImages().collectAsState() return Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.exhUseOriginalImages(), + preference = unsortedPreferences.exhUseOriginalImages(), title = stringResource(SYMR.strings.use_original_images), subtitle = if (value) { stringResource(SYMR.strings.use_original_images_on) @@ -273,6 +273,7 @@ object SettingsEhScreen : SearchableSettings { return Preference.PreferenceItem.TextPreference( title = stringResource(SYMR.strings.watched_tags), subtitle = stringResource(SYMR.strings.watched_tags_summary), + enabled = exhentaiEnabled, onClick = { startActivity( context, @@ -284,7 +285,6 @@ object SettingsEhScreen : SearchableSettings { null, ) }, - enabled = exhentaiEnabled, ) } @@ -374,10 +374,10 @@ object SettingsEhScreen : SearchableSettings { return Preference.PreferenceItem.TextPreference( title = stringResource(SYMR.strings.tag_filtering_threshold), subtitle = stringResource(SYMR.strings.tag_filtering_threshhold_summary, value), + enabled = exhentaiEnabled, onClick = { dialogOpen = true }, - enabled = exhentaiEnabled, ) } @@ -404,10 +404,10 @@ object SettingsEhScreen : SearchableSettings { return Preference.PreferenceItem.TextPreference( title = stringResource(SYMR.strings.tag_watching_threshhold), subtitle = stringResource(SYMR.strings.tag_watching_threshhold_summary, value), + enabled = exhentaiEnabled, onClick = { dialogOpen = true }, - enabled = exhentaiEnabled, ) } @@ -624,10 +624,10 @@ object SettingsEhScreen : SearchableSettings { return Preference.PreferenceItem.TextPreference( title = stringResource(SYMR.strings.language_filtering), subtitle = stringResource(SYMR.strings.language_filtering_summary), + enabled = exhentaiEnabled, onClick = { dialogOpen = true }, - enabled = exhentaiEnabled, ) } @@ -790,10 +790,10 @@ object SettingsEhScreen : SearchableSettings { return Preference.PreferenceItem.TextPreference( title = stringResource(SYMR.strings.frong_page_categories), subtitle = stringResource(SYMR.strings.fromt_page_categories_summary), + enabled = exhentaiEnabled, onClick = { dialogOpen = true }, - enabled = exhentaiEnabled, ) } @@ -803,7 +803,7 @@ object SettingsEhScreen : SearchableSettings { unsortedPreferences: UnsortedPreferences, ): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.exhWatchedListDefaultState(), + preference = unsortedPreferences.exhWatchedListDefaultState(), title = stringResource(SYMR.strings.watched_list_default), subtitle = stringResource(SYMR.strings.watched_list_state_summary), enabled = exhentaiEnabled, @@ -816,9 +816,7 @@ object SettingsEhScreen : SearchableSettings { unsortedPreferences: UnsortedPreferences, ): Preference.PreferenceItem.ListPreference { return Preference.PreferenceItem.ListPreference( - pref = unsortedPreferences.imageQuality(), - title = stringResource(SYMR.strings.eh_image_quality_summary), - subtitle = stringResource(SYMR.strings.eh_image_quality), + preference = unsortedPreferences.imageQuality(), entries = persistentMapOf( "auto" to stringResource(SYMR.strings.eh_image_quality_auto), "ovrs_2400" to stringResource(SYMR.strings.eh_image_quality_2400), @@ -827,6 +825,8 @@ object SettingsEhScreen : SearchableSettings { "med" to stringResource(SYMR.strings.eh_image_quality_980), "low" to stringResource(SYMR.strings.eh_image_quality_780), ), + title = stringResource(SYMR.strings.eh_image_quality_summary), + subtitle = stringResource(SYMR.strings.eh_image_quality), enabled = exhentaiEnabled, ) } @@ -834,7 +834,7 @@ object SettingsEhScreen : SearchableSettings { @Composable fun enhancedEhentaiView(unsortedPreferences: UnsortedPreferences): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.enhancedEHentaiView(), + preference = unsortedPreferences.enhancedEHentaiView(), title = stringResource(SYMR.strings.pref_enhanced_e_hentai_view), subtitle = stringResource(SYMR.strings.pref_enhanced_e_hentai_view_summary), ) @@ -843,7 +843,7 @@ object SettingsEhScreen : SearchableSettings { @Composable fun readOnlySync(unsortedPreferences: UnsortedPreferences): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.exhReadOnlySync(), + preference = unsortedPreferences.exhReadOnlySync(), title = stringResource(SYMR.strings.disable_favorites_uploading), subtitle = stringResource(SYMR.strings.disable_favorites_uploading_summary), ) @@ -868,7 +868,7 @@ object SettingsEhScreen : SearchableSettings { @Composable fun lenientSync(unsortedPreferences: UnsortedPreferences): Preference.PreferenceItem.SwitchPreference { return Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.exhLenientSync(), + preference = unsortedPreferences.exhLenientSync(), title = stringResource(SYMR.strings.ignore_sync_errors), subtitle = stringResource(SYMR.strings.ignore_sync_errors_summary), ) @@ -943,7 +943,17 @@ object SettingsEhScreen : SearchableSettings { val value by unsortedPreferences.exhAutoUpdateFrequency().collectAsState() val context = LocalContext.current return Preference.PreferenceItem.ListPreference( - pref = unsortedPreferences.exhAutoUpdateFrequency(), + preference = unsortedPreferences.exhAutoUpdateFrequency(), + entries = persistentMapOf( + 0 to stringResource(SYMR.strings.time_between_batches_never), + 1 to stringResource(SYMR.strings.time_between_batches_1_hour), + 2 to stringResource(SYMR.strings.time_between_batches_2_hours), + 3 to stringResource(SYMR.strings.time_between_batches_3_hours), + 6 to stringResource(SYMR.strings.time_between_batches_6_hours), + 12 to stringResource(SYMR.strings.time_between_batches_12_hours), + 24 to stringResource(SYMR.strings.time_between_batches_24_hours), + 48 to stringResource(SYMR.strings.time_between_batches_48_hours), + ), title = stringResource(SYMR.strings.time_between_batches), subtitle = if (value == 0) { stringResource(SYMR.strings.time_between_batches_summary_1, stringResource(MR.strings.app_name)) @@ -955,16 +965,6 @@ object SettingsEhScreen : SearchableSettings { EHentaiUpdateWorkerConstants.UPDATES_PER_ITERATION, ) }, - entries = persistentMapOf( - 0 to stringResource(SYMR.strings.time_between_batches_never), - 1 to stringResource(SYMR.strings.time_between_batches_1_hour), - 2 to stringResource(SYMR.strings.time_between_batches_2_hours), - 3 to stringResource(SYMR.strings.time_between_batches_3_hours), - 6 to stringResource(SYMR.strings.time_between_batches_6_hours), - 12 to stringResource(SYMR.strings.time_between_batches_12_hours), - 24 to stringResource(SYMR.strings.time_between_batches_24_hours), - 48 to stringResource(SYMR.strings.time_between_batches_48_hours), - ), onValueChanged = { interval -> EHentaiUpdateWorker.scheduleBackground(context, prefInterval = interval) true @@ -979,7 +979,11 @@ object SettingsEhScreen : SearchableSettings { val value by unsortedPreferences.exhAutoUpdateRequirements().collectAsState() val context = LocalContext.current return Preference.PreferenceItem.MultiSelectListPreference( - pref = unsortedPreferences.exhAutoUpdateRequirements(), + preference = unsortedPreferences.exhAutoUpdateRequirements(), + entries = persistentMapOf( + DEVICE_ONLY_ON_WIFI to stringResource(MR.strings.connected_to_wifi), + DEVICE_CHARGING to stringResource(MR.strings.charging), + ), title = stringResource(SYMR.strings.auto_update_restrictions), subtitle = remember(value) { context.stringResource( @@ -998,10 +1002,6 @@ object SettingsEhScreen : SearchableSettings { .joinToString(), ) }, - entries = persistentMapOf( - DEVICE_ONLY_ON_WIFI to stringResource(MR.strings.connected_to_wifi), - DEVICE_CHARGING to stringResource(MR.strings.charging), - ), onValueChanged = { restrictions -> EHentaiUpdateWorker.scheduleBackground(context, prefRestrictions = restrictions) true diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt index a17712cf5..db8d0969c 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsLibraryScreen.kt @@ -102,12 +102,12 @@ object SettingsLibraryScreen : SearchableSettings { onClick = { navigator.push(CategoryScreen()) }, ), Preference.PreferenceItem.ListPreference( - pref = libraryPreferences.defaultCategory(), - title = stringResource(MR.strings.default_category), + preference = libraryPreferences.defaultCategory(), entries = ids.zip(labels).toMap().toImmutableMap(), + title = stringResource(MR.strings.default_category), ), Preference.PreferenceItem.SwitchPreference( - pref = libraryPreferences.categorizedDisplaySettings(), + preference = libraryPreferences.categorizedDisplaySettings(), title = stringResource(MR.strings.categorized_display_settings), onValueChanged = { if (!it) { @@ -159,8 +159,7 @@ object SettingsLibraryScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_library_update), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = autoUpdateIntervalPref, - title = stringResource(MR.strings.pref_library_update_interval), + preference = autoUpdateIntervalPref, entries = persistentMapOf( 0 to stringResource(MR.strings.update_never), 6 to stringResource(MR.strings.update_6hour), @@ -170,21 +169,22 @@ object SettingsLibraryScreen : SearchableSettings { 72 to stringResource(MR.strings.update_72hour), 168 to stringResource(MR.strings.update_weekly), ), + title = stringResource(MR.strings.pref_library_update_interval), onValueChanged = { LibraryUpdateJob.setupTask(context, it) true }, ), Preference.PreferenceItem.MultiSelectListPreference( - pref = libraryPreferences.autoUpdateDeviceRestrictions(), - enabled = autoUpdateInterval > 0, - title = stringResource(MR.strings.pref_library_update_restriction), - subtitle = stringResource(MR.strings.restrictions), + preference = libraryPreferences.autoUpdateDeviceRestrictions(), entries = persistentMapOf( DEVICE_ONLY_ON_WIFI to stringResource(MR.strings.connected_to_wifi), DEVICE_NETWORK_NOT_METERED to stringResource(MR.strings.network_not_metered), DEVICE_CHARGING to stringResource(MR.strings.charging), ), + title = stringResource(MR.strings.pref_library_update_restriction), + subtitle = stringResource(MR.strings.restrictions), + enabled = autoUpdateInterval > 0, onValueChanged = { // Post to event looper to allow the preference to be updated. ContextCompat.getMainExecutor(context).execute { LibraryUpdateJob.setupTask(context) } @@ -202,45 +202,45 @@ object SettingsLibraryScreen : SearchableSettings { ), // SY --> Preference.PreferenceItem.ListPreference( - pref = libraryPreferences.groupLibraryUpdateType(), - title = stringResource(SYMR.strings.library_group_updates), + preference = libraryPreferences.groupLibraryUpdateType(), entries = persistentMapOf( GroupLibraryMode.GLOBAL to stringResource(SYMR.strings.library_group_updates_global), GroupLibraryMode.ALL_BUT_UNGROUPED to stringResource(SYMR.strings.library_group_updates_all_but_ungrouped), GroupLibraryMode.ALL to stringResource(SYMR.strings.library_group_updates_all), ), + title = stringResource(SYMR.strings.library_group_updates), ), // SY <-- Preference.PreferenceItem.SwitchPreference( - pref = libraryPreferences.autoUpdateMetadata(), + preference = libraryPreferences.autoUpdateMetadata(), title = stringResource(MR.strings.pref_library_update_refresh_metadata), subtitle = stringResource(MR.strings.pref_library_update_refresh_metadata_summary), ), Preference.PreferenceItem.MultiSelectListPreference( - pref = libraryPreferences.autoUpdateMangaRestrictions(), - title = stringResource(MR.strings.pref_library_update_smart_update), + preference = libraryPreferences.autoUpdateMangaRestrictions(), entries = persistentMapOf( MANGA_HAS_UNREAD to stringResource(MR.strings.pref_update_only_completely_read), MANGA_NON_READ to stringResource(MR.strings.pref_update_only_started), MANGA_NON_COMPLETED to stringResource(MR.strings.pref_update_only_non_completed), MANGA_OUTSIDE_RELEASE_PERIOD to stringResource(MR.strings.pref_update_only_in_release_period), ), + title = stringResource(MR.strings.pref_library_update_smart_update), ), Preference.PreferenceItem.SwitchPreference( - pref = libraryPreferences.newShowUpdatesCount(), + preference = libraryPreferences.newShowUpdatesCount(), title = stringResource(MR.strings.pref_library_update_show_tab_badge), ), // SY --> Preference.PreferenceItem.SwitchPreference( - pref = libraryPreferences.libraryReadDuplicateChapters(), + preference = libraryPreferences.libraryReadDuplicateChapters(), title = stringResource(SYMR.strings.pref_library_mark_duplicate_chapters), subtitle = stringResource(SYMR.strings.pref_library_mark_duplicate_chapters_summary), ), // SY <-- // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = libraryPreferences.showUpdatingProgressBanner(), + preference = libraryPreferences.showUpdatingProgressBanner(), title = stringResource(KMR.strings.pref_show_updating_progress_banner), ), // KMK <-- @@ -256,8 +256,7 @@ object SettingsLibraryScreen : SearchableSettings { title = stringResource(MR.strings.pref_chapter_swipe), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = libraryPreferences.swipeToStartAction(), - title = stringResource(MR.strings.pref_chapter_swipe_start), + preference = libraryPreferences.swipeToStartAction(), entries = persistentMapOf( LibraryPreferences.ChapterSwipeAction.Disabled to stringResource(MR.strings.disabled), @@ -268,10 +267,10 @@ object SettingsLibraryScreen : SearchableSettings { LibraryPreferences.ChapterSwipeAction.Download to stringResource(MR.strings.action_download), ), + title = stringResource(MR.strings.pref_chapter_swipe_start), ), Preference.PreferenceItem.ListPreference( - pref = libraryPreferences.swipeToEndAction(), - title = stringResource(MR.strings.pref_chapter_swipe_end), + preference = libraryPreferences.swipeToEndAction(), entries = persistentMapOf( LibraryPreferences.ChapterSwipeAction.Disabled to stringResource(MR.strings.disabled), @@ -282,6 +281,7 @@ object SettingsLibraryScreen : SearchableSettings { LibraryPreferences.ChapterSwipeAction.Download to stringResource(MR.strings.action_download), ), + title = stringResource(MR.strings.pref_chapter_swipe_end), ), ), ) @@ -314,7 +314,7 @@ object SettingsLibraryScreen : SearchableSettings { enabled = skipPreMigration || migrationSources.isNotEmpty(), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = unsortedPreferences.skipPreMigration(), + preference = unsortedPreferences.skipPreMigration(), title = stringResource(SYMR.strings.skip_pre_migration), subtitle = stringResource(SYMR.strings.pref_skip_pre_migration_summary), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMangadexScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMangadexScreen.kt index 90d785e83..a31026338 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMangadexScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsMangadexScreen.kt @@ -179,12 +179,12 @@ object SettingsMangadexScreen : SearchableSettings { sourcePreferences: SourcePreferences, ): Preference.PreferenceItem.ListPreference { return Preference.PreferenceItem.ListPreference( - pref = unsortedPreferences.preferredMangaDexId(), - title = stringResource(SYMR.strings.mangadex_preffered_source), - subtitle = stringResource(SYMR.strings.mangadex_preffered_source_summary), + preference = unsortedPreferences.preferredMangaDexId(), entries = MdUtil.getEnabledMangaDexs(sourcePreferences) .associate { it.id.toString() to it.toString() } .toImmutableMap(), + title = stringResource(SYMR.strings.mangadex_preffered_source), + subtitle = stringResource(SYMR.strings.mangadex_preffered_source_summary), ) } diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt index 821c34991..01fba69eb 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt @@ -40,45 +40,45 @@ object SettingsReaderScreen : SearchableSettings { return listOf( Preference.PreferenceItem.ListPreference( - pref = readerPref.defaultReadingMode(), - title = stringResource(MR.strings.pref_viewer_type), + preference = readerPref.defaultReadingMode(), entries = ReadingMode.entries.drop(1) .associate { it.flagValue to stringResource(it.stringRes) } .toImmutableMap(), + title = stringResource(MR.strings.pref_viewer_type), ), Preference.PreferenceItem.ListPreference( - pref = readerPref.doubleTapAnimSpeed(), - title = stringResource(MR.strings.pref_double_tap_anim_speed), + preference = readerPref.doubleTapAnimSpeed(), entries = persistentMapOf( 1 to stringResource(MR.strings.double_tap_anim_speed_0), 500 to stringResource(MR.strings.double_tap_anim_speed_normal), 250 to stringResource(MR.strings.double_tap_anim_speed_fast), ), + title = stringResource(MR.strings.pref_double_tap_anim_speed), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPref.showReadingMode(), + preference = readerPref.showReadingMode(), title = stringResource(MR.strings.pref_show_reading_mode), subtitle = stringResource(MR.strings.pref_show_reading_mode_summary), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPref.showNavigationOverlayOnStart(), + preference = readerPref.showNavigationOverlayOnStart(), title = stringResource(MR.strings.pref_show_navigation_mode), subtitle = stringResource(MR.strings.pref_show_navigation_mode_summary), ), // SY --> Preference.PreferenceItem.SwitchPreference( - pref = readerPref.forceHorizontalSeekbar(), + preference = readerPref.forceHorizontalSeekbar(), title = stringResource(SYMR.strings.pref_force_horz_seekbar), subtitle = stringResource(SYMR.strings.pref_force_horz_seekbar_summary), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPref.landscapeVerticalSeekbar(), + preference = readerPref.landscapeVerticalSeekbar(), title = stringResource(SYMR.strings.pref_show_vert_seekbar_landscape), subtitle = stringResource(SYMR.strings.pref_show_vert_seekbar_landscape_summary), enabled = !forceHorizontalSeekbar, ), Preference.PreferenceItem.SwitchPreference( - pref = readerPref.leftVerticalSeekbar(), + preference = readerPref.leftVerticalSeekbar(), title = stringResource(SYMR.strings.pref_left_handed_vertical_seekbar), subtitle = stringResource(SYMR.strings.pref_left_handed_vertical_seekbar_summary), enabled = !forceHorizontalSeekbar, @@ -86,7 +86,7 @@ object SettingsReaderScreen : SearchableSettings { // SY <-- /* SY --> Preference.PreferenceItem.SwitchPreference( - pref = readerPref.pageTransitions(), + preference = readerPref.pageTransitions(), title = stringResource(MR.strings.pref_page_transitions), ), SY <-- */ @@ -115,39 +115,39 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_display), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = readerPreferences.defaultOrientationType(), - title = stringResource(MR.strings.pref_rotation_type), + preference = readerPreferences.defaultOrientationType(), entries = ReaderOrientation.entries.drop(1) .associate { it.flagValue to stringResource(it.stringRes) } .toImmutableMap(), + title = stringResource(MR.strings.pref_rotation_type), ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.readerTheme(), - title = stringResource(MR.strings.pref_reader_theme), + preference = readerPreferences.readerTheme(), entries = persistentMapOf( 1 to stringResource(MR.strings.black_background), 2 to stringResource(MR.strings.gray_background), 0 to stringResource(MR.strings.white_background), 3 to stringResource(MR.strings.automatic_background), ), + title = stringResource(MR.strings.pref_reader_theme), ), Preference.PreferenceItem.SwitchPreference( - pref = fullscreenPref, + preference = fullscreenPref, title = stringResource(MR.strings.pref_fullscreen), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.cutoutShort(), + preference = readerPreferences.cutoutShort(), title = stringResource(MR.strings.pref_cutout_short), enabled = fullscreen && Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && LocalView.current.rootWindowInsets?.displayCutout != null, // has cutout ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.keepScreenOn(), + preference = readerPreferences.keepScreenOn(), title = stringResource(MR.strings.pref_keep_screen_on), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.showPageNumber(), + preference = readerPreferences.showPageNumber(), title = stringResource(MR.strings.pref_show_page_number), ), ), @@ -170,45 +170,45 @@ object SettingsReaderScreen : SearchableSettings { title = "E-Ink", preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.flashOnPageChange(), + preference = readerPreferences.flashOnPageChange(), title = stringResource(MR.strings.pref_flash_page), subtitle = stringResource(MR.strings.pref_flash_page_summ), ), Preference.PreferenceItem.SliderPreference( value = flashMillis / ReaderPreferences.MILLI_CONVERSION, - min = 1, max = 15, + min = 1, steps = 13, title = stringResource(MR.strings.pref_flash_duration), subtitle = stringResource(MR.strings.pref_flash_duration_summary, flashMillis), + enabled = flashPageState, onValueChanged = { flashMillisPref.set(it * ReaderPreferences.MILLI_CONVERSION) true }, - enabled = flashPageState, ), Preference.PreferenceItem.SliderPreference( value = flashInterval, - min = 1, max = 10, + min = 1, steps = 8, title = stringResource(MR.strings.pref_flash_page_interval), subtitle = pluralStringResource(MR.plurals.pref_pages, flashInterval, flashInterval), + enabled = flashPageState, onValueChanged = { flashIntervalPref.set(it) true }, - enabled = flashPageState, ), Preference.PreferenceItem.ListPreference( - pref = flashColorPref, - title = stringResource(MR.strings.pref_flash_with), + preference = flashColorPref, entries = persistentMapOf( ReaderPreferences.FlashColor.BLACK to stringResource(MR.strings.pref_flash_style_black), ReaderPreferences.FlashColor.WHITE to stringResource(MR.strings.pref_flash_style_white), ReaderPreferences.FlashColor.WHITE_BLACK to stringResource(MR.strings.pref_flash_style_white_black), ), + title = stringResource(MR.strings.pref_flash_with), enabled = flashPageState, ), ), @@ -221,26 +221,26 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_category_reading), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.skipRead(), + preference = readerPreferences.skipRead(), title = stringResource(MR.strings.pref_skip_read_chapters), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.skipFiltered(), + preference = readerPreferences.skipFiltered(), title = stringResource(MR.strings.pref_skip_filtered_chapters), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.skipDupe(), + preference = readerPreferences.skipDupe(), title = stringResource(MR.strings.pref_skip_dupe_chapters), ), // SY --> Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.markReadDupe(), + preference = readerPreferences.markReadDupe(), title = stringResource(SYMR.strings.pref_mark_read_dupe_chapters), subtitle = stringResource(SYMR.strings.pref_mark_read_dupe_chapters_summary), ), // SY <-- Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.alwaysShowChapterTransition(), + preference = readerPreferences.alwaysShowChapterTransition(), title = stringResource(MR.strings.pref_always_show_chapter_transition), ), ), @@ -263,16 +263,15 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pager_viewer), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = navModePref, - title = stringResource(MR.strings.pref_viewer_nav), + preference = navModePref, entries = ReaderPreferences.TapZones .mapIndexed { index, it -> index to stringResource(it) } .toMap() .toImmutableMap(), + title = stringResource(MR.strings.pref_viewer_nav), ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.pagerNavInverted(), - title = stringResource(MR.strings.pref_read_with_tapping_inverted), + preference = readerPreferences.pagerNavInverted(), entries = persistentListOf( ReaderPreferences.TappingInvertMode.NONE, ReaderPreferences.TappingInvertMode.HORIZONTAL, @@ -281,46 +280,47 @@ object SettingsReaderScreen : SearchableSettings { ) .associateWith { stringResource(it.titleRes) } .toImmutableMap(), + title = stringResource(MR.strings.pref_read_with_tapping_inverted), enabled = navMode != 5, ), Preference.PreferenceItem.ListPreference( - pref = imageScaleTypePref, - title = stringResource(MR.strings.pref_image_scale_type), + preference = imageScaleTypePref, entries = ReaderPreferences.ImageScaleType .mapIndexed { index, it -> index + 1 to stringResource(it) } .toMap() .toImmutableMap(), + title = stringResource(MR.strings.pref_image_scale_type), ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.zoomStart(), - title = stringResource(MR.strings.pref_zoom_start), + preference = readerPreferences.zoomStart(), entries = ReaderPreferences.ZoomStart .mapIndexed { index, it -> index + 1 to stringResource(it) } .toMap() .toImmutableMap(), + title = stringResource(MR.strings.pref_zoom_start), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.cropBorders(), + preference = readerPreferences.cropBorders(), title = stringResource(MR.strings.pref_crop_borders), ), // SY --> Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.pageTransitionsPager(), + preference = readerPreferences.pageTransitionsPager(), title = stringResource(MR.strings.pref_page_transitions), ), // SY <-- Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.landscapeZoom(), + preference = readerPreferences.landscapeZoom(), title = stringResource(MR.strings.pref_landscape_zoom), enabled = imageScaleType == 1, ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.navigateToPan(), + preference = readerPreferences.navigateToPan(), title = stringResource(MR.strings.pref_navigate_pan), enabled = navMode != 5, ), Preference.PreferenceItem.SwitchPreference( - pref = dualPageSplitPref, + preference = dualPageSplitPref, title = stringResource(MR.strings.pref_dual_page_split), onValueChanged = { rotateToFitPref.set(false) @@ -328,13 +328,13 @@ object SettingsReaderScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.dualPageInvertPaged(), + preference = readerPreferences.dualPageInvertPaged(), title = stringResource(MR.strings.pref_dual_page_invert), subtitle = stringResource(MR.strings.pref_dual_page_invert_summary), enabled = dualPageSplit, ), Preference.PreferenceItem.SwitchPreference( - pref = rotateToFitPref, + preference = rotateToFitPref, title = stringResource(MR.strings.pref_page_rotate), onValueChanged = { dualPageSplitPref.set(false) @@ -342,7 +342,7 @@ object SettingsReaderScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.dualPageRotateToFitInvert(), + preference = readerPreferences.dualPageRotateToFitInvert(), title = stringResource(MR.strings.pref_page_rotate_invert), enabled = rotateToFit, ), @@ -368,16 +368,15 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.webtoon_viewer), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = navModePref, - title = stringResource(MR.strings.pref_viewer_nav), + preference = navModePref, entries = ReaderPreferences.TapZones .mapIndexed { index, it -> index to stringResource(it) } .toMap() .toImmutableMap(), + title = stringResource(MR.strings.pref_viewer_nav), ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.webtoonNavInverted(), - title = stringResource(MR.strings.pref_read_with_tapping_inverted), + preference = readerPreferences.webtoonNavInverted(), entries = persistentListOf( ReaderPreferences.TappingInvertMode.NONE, ReaderPreferences.TappingInvertMode.HORIZONTAL, @@ -386,35 +385,36 @@ object SettingsReaderScreen : SearchableSettings { ) .associateWith { stringResource(it.titleRes) } .toImmutableMap(), + title = stringResource(MR.strings.pref_read_with_tapping_inverted), enabled = navMode != 5, ), Preference.PreferenceItem.SliderPreference( value = webtoonSidePadding, + max = ReaderPreferences.WEBTOON_PADDING_MAX, + min = ReaderPreferences.WEBTOON_PADDING_MIN, title = stringResource(MR.strings.pref_webtoon_side_padding), subtitle = numberFormat.format(webtoonSidePadding / 100f), - min = ReaderPreferences.WEBTOON_PADDING_MIN, - max = ReaderPreferences.WEBTOON_PADDING_MAX, onValueChanged = { webtoonSidePaddingPref.set(it) true }, ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.readerHideThreshold(), - title = stringResource(MR.strings.pref_hide_threshold), + preference = readerPreferences.readerHideThreshold(), entries = persistentMapOf( ReaderPreferences.ReaderHideThreshold.HIGHEST to stringResource(MR.strings.pref_highest), ReaderPreferences.ReaderHideThreshold.HIGH to stringResource(MR.strings.pref_high), ReaderPreferences.ReaderHideThreshold.LOW to stringResource(MR.strings.pref_low), ReaderPreferences.ReaderHideThreshold.LOWEST to stringResource(MR.strings.pref_lowest), ), + title = stringResource(MR.strings.pref_hide_threshold), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.cropBordersWebtoon(), + preference = readerPreferences.cropBordersWebtoon(), title = stringResource(MR.strings.pref_crop_borders), ), Preference.PreferenceItem.SwitchPreference( - pref = dualPageSplitPref, + preference = dualPageSplitPref, title = stringResource(MR.strings.pref_dual_page_split), onValueChanged = { rotateToFitPref.set(false) @@ -422,13 +422,13 @@ object SettingsReaderScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.dualPageInvertWebtoon(), + preference = readerPreferences.dualPageInvertWebtoon(), title = stringResource(MR.strings.pref_dual_page_invert), subtitle = stringResource(MR.strings.pref_dual_page_invert_summary), enabled = dualPageSplit, ), Preference.PreferenceItem.SwitchPreference( - pref = rotateToFitPref, + preference = rotateToFitPref, title = stringResource(MR.strings.pref_page_rotate), onValueChanged = { dualPageSplitPref.set(false) @@ -436,21 +436,21 @@ object SettingsReaderScreen : SearchableSettings { }, ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.dualPageRotateToFitInvertWebtoon(), + preference = readerPreferences.dualPageRotateToFitInvertWebtoon(), title = stringResource(MR.strings.pref_page_rotate_invert), enabled = rotateToFit, ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.webtoonDoubleTapZoomEnabled(), + preference = readerPreferences.webtoonDoubleTapZoomEnabled(), title = stringResource(MR.strings.pref_double_tap_zoom), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.webtoonDisableZoomOut(), + preference = readerPreferences.webtoonDisableZoomOut(), title = stringResource(MR.strings.pref_webtoon_disable_zoom_out), ), // SY --> Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.pageTransitionsWebtoon(), + preference = readerPreferences.pageTransitionsWebtoon(), title = stringResource(MR.strings.pref_page_transitions), ), // SY <-- @@ -465,12 +465,12 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.vertical_plus_viewer), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.continuousVerticalTappingByPage(), + preference = readerPreferences.continuousVerticalTappingByPage(), title = stringResource(SYMR.strings.tap_scroll_page), subtitle = stringResource(SYMR.strings.tap_scroll_page_summary), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.cropBordersContinuousVertical(), + preference = readerPreferences.cropBordersContinuousVertical(), title = stringResource(MR.strings.pref_crop_borders), ), ), @@ -486,11 +486,11 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_reader_navigation), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = readWithVolumeKeysPref, + preference = readWithVolumeKeysPref, title = stringResource(MR.strings.pref_read_with_volume_keys), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.readWithVolumeKeysInverted(), + preference = readerPreferences.readWithVolumeKeysInverted(), title = stringResource(MR.strings.pref_read_with_volume_keys_inverted), enabled = readWithVolumeKeys, ), @@ -504,11 +504,11 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(MR.strings.pref_reader_actions), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.readWithLongTap(), + preference = readerPreferences.readWithLongTap(), title = stringResource(MR.strings.pref_read_with_long_tap), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.folderPerManga(), + preference = readerPreferences.folderPerManga(), title = stringResource(MR.strings.pref_create_folder_per_manga), subtitle = stringResource(MR.strings.pref_create_folder_per_manga_summary), ), @@ -523,9 +523,7 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(SYMR.strings.page_downloading), preferenceItems = persistentListOf( Preference.PreferenceItem.ListPreference( - pref = readerPreferences.preloadSize(), - title = stringResource(SYMR.strings.reader_preload_amount), - subtitle = stringResource(SYMR.strings.reader_preload_amount_summary), + preference = readerPreferences.preloadSize(), entries = persistentMapOf( 4 to stringResource(SYMR.strings.reader_preload_amount_4_pages), 6 to stringResource(SYMR.strings.reader_preload_amount_6_pages), @@ -536,15 +534,17 @@ object SettingsReaderScreen : SearchableSettings { 16 to stringResource(SYMR.strings.reader_preload_amount_16_pages), 20 to stringResource(SYMR.strings.reader_preload_amount_20_pages), ), + title = stringResource(SYMR.strings.reader_preload_amount), + subtitle = stringResource(SYMR.strings.reader_preload_amount_summary), ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.readerThreads(), + preference = readerPreferences.readerThreads(), title = stringResource(SYMR.strings.download_threads), subtitle = stringResource(SYMR.strings.download_threads_summary), entries = List(5) { it }.associateWith { it.toString() }.toImmutableMap(), ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.cacheSize(), + preference = readerPreferences.cacheSize(), title = stringResource(SYMR.strings.reader_cache_size), subtitle = stringResource(SYMR.strings.reader_cache_size_summary), entries = persistentMapOf( @@ -567,7 +567,7 @@ object SettingsReaderScreen : SearchableSettings { ), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.aggressivePageLoading(), + preference = readerPreferences.aggressivePageLoading(), title = stringResource(SYMR.strings.aggressively_load_pages), subtitle = stringResource(SYMR.strings.aggressively_load_pages_summary), ), @@ -582,58 +582,58 @@ object SettingsReaderScreen : SearchableSettings { title = stringResource(SYMR.strings.pref_category_fork), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.readerInstantRetry(), + preference = readerPreferences.readerInstantRetry(), title = stringResource(SYMR.strings.skip_queue_on_retry), subtitle = stringResource(SYMR.strings.skip_queue_on_retry_summary), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.preserveReadingPosition(), + preference = readerPreferences.preserveReadingPosition(), title = stringResource(SYMR.strings.preserve_reading_position), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.useAutoWebtoon(), + preference = readerPreferences.useAutoWebtoon(), title = stringResource(SYMR.strings.auto_webtoon_mode), subtitle = stringResource(SYMR.strings.auto_webtoon_mode_summary), ), Preference.PreferenceItem.MultiSelectListPreference( - pref = readerPreferences.readerBottomButtons(), - title = stringResource(SYMR.strings.reader_bottom_buttons), - subtitle = stringResource(SYMR.strings.reader_bottom_buttons_summary), + preference = readerPreferences.readerBottomButtons(), entries = ReaderBottomButton.entries .associate { it.value to stringResource(it.stringRes) } .toImmutableMap(), + title = stringResource(SYMR.strings.reader_bottom_buttons), + subtitle = stringResource(SYMR.strings.reader_bottom_buttons_summary), ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.pageLayout(), - title = stringResource(SYMR.strings.page_layout), - subtitle = stringResource(SYMR.strings.automatic_can_still_switch), + preference = readerPreferences.pageLayout(), entries = ReaderPreferences.PageLayouts .mapIndexed { index, it -> index + 1 to stringResource(it) } .toMap() .toImmutableMap(), + title = stringResource(SYMR.strings.page_layout), + subtitle = stringResource(SYMR.strings.automatic_can_still_switch), ), Preference.PreferenceItem.SwitchPreference( - pref = readerPreferences.invertDoublePages(), + preference = readerPreferences.invertDoublePages(), title = stringResource(SYMR.strings.invert_double_pages), enabled = pageLayout != PagerConfig.PageLayout.SINGLE_PAGE, ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.centerMarginType(), - title = stringResource(SYMR.strings.center_margin), - subtitle = stringResource(SYMR.strings.pref_center_margin_summary), + preference = readerPreferences.centerMarginType(), entries = ReaderPreferences.CenterMarginTypes .mapIndexed { index, it -> index + 1 to stringResource(it) } .toMap() .toImmutableMap(), + title = stringResource(SYMR.strings.center_margin), + subtitle = stringResource(SYMR.strings.pref_center_margin_summary), ), Preference.PreferenceItem.ListPreference( - pref = readerPreferences.archiveReaderMode(), - title = stringResource(SYMR.strings.pref_archive_reader_mode), - subtitle = stringResource(SYMR.strings.pref_archive_reader_mode_summary), + preference = readerPreferences.archiveReaderMode(), entries = ReaderPreferences.archiveModeTypes .mapIndexed { index, it -> index to stringResource(it) } .toMap() .toImmutableMap(), + title = stringResource(SYMR.strings.pref_archive_reader_mode), + subtitle = stringResource(SYMR.strings.pref_archive_reader_mode_summary), ), ), ) diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt index cc6100af4..ab9c464ff 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsSecurityScreen.kt @@ -97,7 +97,7 @@ object SettingsSecurityScreen : SearchableSettings { title = stringResource(MR.strings.pref_security), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = useAuthPref, + preference = useAuthPref, title = stringResource(MR.strings.lock_with_biometrics), enabled = authSupported, onValueChanged = { @@ -107,9 +107,7 @@ object SettingsSecurityScreen : SearchableSettings { }, ), Preference.PreferenceItem.ListPreference( - pref = securityPreferences.lockAppAfter(), - title = stringResource(MR.strings.lock_when_idle), - enabled = authSupported && useAuth, + preference = securityPreferences.lockAppAfter(), entries = LockAfterValues .associateWith { when (it) { @@ -119,6 +117,8 @@ object SettingsSecurityScreen : SearchableSettings { } } .toImmutableMap(), + title = stringResource(MR.strings.lock_when_idle), + enabled = authSupported && useAuth, onValueChanged = { (context as FragmentActivity).authenticate( title = context.stringResource(MR.strings.lock_when_idle), @@ -127,29 +127,29 @@ object SettingsSecurityScreen : SearchableSettings { ), Preference.PreferenceItem.SwitchPreference( - pref = securityPreferences.hideNotificationContent(), + preference = securityPreferences.hideNotificationContent(), title = stringResource(MR.strings.hide_notification_content), ), Preference.PreferenceItem.ListPreference( - pref = securityPreferences.secureScreen(), - title = stringResource(MR.strings.secure_screen), + preference = securityPreferences.secureScreen(), entries = SecurityPreferences.SecureScreenMode.entries .associateWith { stringResource(it.titleRes) } .toImmutableMap(), + title = stringResource(MR.strings.secure_screen), ), // SY --> Preference.PreferenceItem.SwitchPreference( - pref = securityPreferences.passwordProtectDownloads(), + preference = securityPreferences.passwordProtectDownloads(), title = stringResource(SYMR.strings.password_protect_downloads), subtitle = stringResource(SYMR.strings.password_protect_downloads_summary), enabled = isCbzPasswordSet, ), Preference.PreferenceItem.ListPreference( - pref = securityPreferences.encryptionType(), - title = stringResource(SYMR.strings.encryption_type), + preference = securityPreferences.encryptionType(), entries = SecurityPreferences.EncryptionType.entries .associateWith { stringResource(it.titleRes) } .toImmutableMap(), + title = stringResource(SYMR.strings.encryption_type), enabled = passwordProtectDownloads, ), @@ -175,11 +175,11 @@ object SettingsSecurityScreen : SearchableSettings { }, Preference.PreferenceItem.TextPreference( title = stringResource(SYMR.strings.delete_cbz_archive_password), + enabled = isCbzPasswordSet, onClick = { CbzCrypto.deleteKeyCbz() securityPreferences.cbzPassword().set("") }, - enabled = isCbzPasswordSet, ), kotlin.run { val navigator = LocalNavigator.currentOrThrow @@ -191,10 +191,10 @@ object SettingsSecurityScreen : SearchableSettings { count.size, count.size, ), + enabled = useAuth, onClick = { navigator.push(BiometricTimesScreen()) }, - enabled = useAuth, ) }, kotlin.run { @@ -213,8 +213,8 @@ object SettingsSecurityScreen : SearchableSettings { Preference.PreferenceItem.TextPreference( title = stringResource(SYMR.strings.biometric_lock_days), subtitle = stringResource(SYMR.strings.biometric_lock_days_summary), - onClick = { dialogOpen = true }, enabled = useAuth, + onClick = { dialogOpen = true }, ) }, // SY <-- @@ -231,13 +231,13 @@ object SettingsSecurityScreen : SearchableSettings { title = stringResource(MR.strings.pref_firebase), preferenceItems = persistentListOf( Preference.PreferenceItem.SwitchPreference( - pref = privacyPreferences.crashlytics(), + preference = privacyPreferences.crashlytics(), title = stringResource(MR.strings.onboarding_permission_crashlytics), subtitle = stringResource(MR.strings.onboarding_permission_crashlytics_description), ), /* Preference.PreferenceItem.SwitchPreference( - pref = privacyPreferences.analytics(), + preference = privacyPreferences.analytics(), title = stringResource(MR.strings.onboarding_permission_analytics), subtitle = stringResource(MR.strings.onboarding_permission_analytics_description), ), diff --git a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt index d8ffce445..4de5fbde8 100644 --- a/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt +++ b/app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsTrackingScreen.kt @@ -127,19 +127,19 @@ object SettingsTrackingScreen : SearchableSettings { return listOf( Preference.PreferenceItem.SwitchPreference( - pref = trackPreferences.autoUpdateTrack(), + preference = trackPreferences.autoUpdateTrack(), title = stringResource(MR.strings.pref_auto_update_manga_sync), ), Preference.PreferenceItem.ListPreference( - pref = trackPreferences.autoUpdateTrackOnMarkRead(), - title = stringResource(MR.strings.pref_auto_update_manga_on_mark_read), + preference = trackPreferences.autoUpdateTrackOnMarkRead(), entries = AutoTrackState.entries .associateWith { stringResource(it.titleRes) } .toPersistentMap(), + title = stringResource(MR.strings.pref_auto_update_manga_on_mark_read), ), // KMK --> Preference.PreferenceItem.SwitchPreference( - pref = trackPreferences.autoSyncProgressFromTrackers(), + preference = trackPreferences.autoSyncProgressFromTrackers(), title = stringResource(KMR.strings.pref_auto_sync_progress_from_trackers), ), // KMK <-- @@ -147,37 +147,31 @@ object SettingsTrackingScreen : SearchableSettings { title = stringResource(MR.strings.services), preferenceItems = persistentListOf( Preference.PreferenceItem.TrackerPreference( - title = trackerManager.myAnimeList.name, tracker = trackerManager.myAnimeList, login = { context.openInBrowser(MyAnimeListApi.authUrl(), forceDefaultBrowser = true) }, logout = { dialog = LogoutDialog(trackerManager.myAnimeList) }, ), Preference.PreferenceItem.TrackerPreference( - title = trackerManager.aniList.name, tracker = trackerManager.aniList, login = { context.openInBrowser(AnilistApi.authUrl(), forceDefaultBrowser = true) }, logout = { dialog = LogoutDialog(trackerManager.aniList) }, ), Preference.PreferenceItem.TrackerPreference( - title = trackerManager.kitsu.name, tracker = trackerManager.kitsu, login = { dialog = LoginDialog(trackerManager.kitsu, MR.strings.email) }, logout = { dialog = LogoutDialog(trackerManager.kitsu) }, ), Preference.PreferenceItem.TrackerPreference( - title = trackerManager.mangaUpdates.name, tracker = trackerManager.mangaUpdates, login = { dialog = LoginDialog(trackerManager.mangaUpdates, MR.strings.username) }, logout = { dialog = LogoutDialog(trackerManager.mangaUpdates) }, ), Preference.PreferenceItem.TrackerPreference( - title = trackerManager.shikimori.name, tracker = trackerManager.shikimori, login = { context.openInBrowser(ShikimoriApi.authUrl(), forceDefaultBrowser = true) }, logout = { dialog = LogoutDialog(trackerManager.shikimori) }, ), Preference.PreferenceItem.TrackerPreference( - title = trackerManager.bangumi.name, tracker = trackerManager.bangumi, login = { context.openInBrowser(BangumiApi.authUrl(), forceDefaultBrowser = true) }, logout = { dialog = LogoutDialog(trackerManager.bangumi) }, @@ -191,7 +185,6 @@ object SettingsTrackingScreen : SearchableSettings { enhancedTrackers.first .map { service -> Preference.PreferenceItem.TrackerPreference( - title = service.name, tracker = service, login = { (service as EnhancedTracker).loginNoop() }, logout = service::logout,