diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt index 9c152fe66f..0f1194965b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceKeys.kt @@ -5,140 +5,28 @@ package eu.kanade.tachiyomi.data.preference */ object PreferenceKeys { - const val themeMode = "pref_theme_mode_key" - - const val appTheme = "pref_app_theme" - - const val themeDarkAmoled = "pref_theme_dark_amoled_key" - const val confirmExit = "pref_confirm_exit" - const val hideBottomBarOnScroll = "pref_hide_bottom_bar_on_scroll" - - const val sideNavIconAlignment = "pref_side_nav_icon_alignment" - - const val enableTransitions = "pref_enable_transitions_key" - - const val doubleTapAnimationSpeed = "pref_double_tap_anim_speed" - - const val showPageNumber = "pref_show_page_number_key" - - const val dualPageSplitPaged = "pref_dual_page_split" - - const val dualPageSplitWebtoon = "pref_dual_page_split_webtoon" - - const val dualPageInvertPaged = "pref_dual_page_invert" - - const val dualPageInvertWebtoon = "pref_dual_page_invert_webtoon" - const val showReadingMode = "pref_show_reading_mode" - const val trueColor = "pref_true_color_key" - - const val fullscreen = "fullscreen" - - const val cutoutShort = "cutout_short" - - const val keepScreenOn = "pref_keep_screen_on_key" - - const val customBrightness = "pref_custom_brightness_key" - - const val customBrightnessValue = "custom_brightness_value" - - const val colorFilter = "pref_color_filter_key" - - const val colorFilterValue = "color_filter_value" - - const val colorFilterMode = "color_filter_mode" - - const val grayscale = "pref_grayscale" - - const val invertedColors = "pref_inverted_colors" - const val defaultReadingMode = "pref_default_reading_mode_key" const val defaultOrientationType = "pref_default_orientation_type_key" - const val imageScaleType = "pref_image_scale_type_key" - - const val zoomStart = "pref_zoom_start_key" - - const val readerTheme = "pref_reader_theme_key" - - const val cropBorders = "crop_borders" - - const val cropBordersWebtoon = "crop_borders_webtoon" - - const val readWithTapping = "reader_tap" - - const val pagerNavInverted = "reader_tapping_inverted" - - const val webtoonNavInverted = "reader_tapping_inverted_webtoon" - - const val readWithLongTap = "reader_long_tap" - - const val readWithVolumeKeys = "reader_volume_keys" - - const val readWithVolumeKeysInverted = "reader_volume_keys_inverted" - - const val navigationModePager = "reader_navigation_mode_pager" - - const val navigationModeWebtoon = "reader_navigation_mode_webtoon" - - const val showNavigationOverlayNewUser = "reader_navigation_overlay_new_user" - - const val showNavigationOverlayOnStart = "reader_navigation_overlay_on_start" - - const val readerHideThreshold = "reader_hide_threshold" - - const val webtoonSidePadding = "webtoon_side_padding" - - const val portraitColumns = "pref_library_columns_portrait_key" - - const val landscapeColumns = "pref_library_columns_landscape_key" - const val jumpToChapters = "jump_to_chapters" const val autoUpdateTrack = "pref_auto_update_manga_sync_key" - const val lastUsedSource = "last_catalogue_source" - - const val lastUsedCategory = "last_used_category" - - const val sourceDisplayMode = "pref_display_mode_catalogue" - - const val enabledLanguages = "source_languages" - - const val backupDirectory = "backup_directory" - - const val downloadsDirectory = "download_directory" - const val downloadOnlyOverWifi = "pref_download_only_over_wifi_key" const val folderPerManga = "create_folder_per_manga" - const val numberOfBackups = "backup_slots" - - const val backupInterval = "backup_interval" - const val removeAfterReadSlots = "remove_after_read_slots" const val removeAfterMarkedAsRead = "pref_remove_after_marked_as_read_key" const val removeBookmarkedChapters = "pref_remove_bookmarked" - const val libraryUpdateInterval = "pref_library_update_interval_key" - - const val libraryUpdateDeviceRestriction = "library_update_restriction" - const val libraryUpdateMangaRestriction = "library_update_manga_restriction" - - const val showUpdatesNavBadge = "library_update_show_tab_badge" - - const val libraryUpdateCategories = "library_update_categories" - const val libraryUpdateCategoriesExclude = "library_update_categories_exclude" - - const val downloadedOnly = "pref_downloaded_only" - const val filterDownloaded = "pref_filter_library_downloaded" const val filterUnread = "pref_filter_library_unread" @@ -153,59 +41,22 @@ object PreferenceKeys { const val migrationSortingMode = "pref_migration_sorting" const val migrationSortingDirection = "pref_migration_direction" - const val automaticExtUpdates = "automatic_ext_updates" - - const val showNsfwSource = "show_nsfw_source" - const val startScreen = "start_screen" - const val useAuthenticator = "use_biometric_lock" - - const val lockAppAfter = "lock_app_after" - - const val lastAppUnlock = "last_app_unlock" - - const val secureScreen = "secure_screen" - const val hideNotificationContent = "hide_notification_content" const val autoUpdateMetadata = "auto_update_metadata" const val autoUpdateTrackers = "auto_update_trackers" - const val downloadNew = "download_new" - - const val downloadNewCategories = "download_new_categories" - const val downloadNewCategoriesExclude = "download_new_categories_exclude" - const val removeExcludeCategories = "remove_exclude_categories" - - const val libraryDisplayMode = "pref_display_mode_library" - - const val relativeTime: String = "relative_time" const val dateFormat = "app_date_format" const val defaultCategory = "default_category" - const val categorizedDisplay = "categorized_display" - const val skipRead = "skip_read" const val skipFiltered = "skip_filtered" - const val downloadBadge = "display_download_badge" - - const val unreadBadge = "display_unread_badge" - - const val languageBadge = "display_language_badge" - - const val localBadge = "display_local_badge" - - const val categoryTabs = "display_category_tabs" - - const val categoryNumberOfItems = "display_number_of_items" - - const val alwaysShowChapterTransition = "always_show_chapter_transition" - const val searchPinnedSourcesOnly = "search_pinned_sources_only" const val dohProvider = "doh_provider" @@ -222,12 +73,6 @@ object PreferenceKeys { const val defaultChapterDisplayByNameOrNumber = "default_chapter_display_by_name_or_number" - const val incognitoMode = "incognito_mode" - - const val tabletUiMode = "tablet_ui_mode" - - const val extensionInstaller = "extension_installer" - const val verboseLogging = "verbose_logging" const val autoClearChapterCache = "auto_clear_chapter_cache" diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index e8774b8baa..14a0f88dbe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -1,15 +1,16 @@ package eu.kanade.tachiyomi.data.preference import android.content.Context +import android.os.Build import android.os.Environment import androidx.core.content.edit import androidx.core.net.toUri import androidx.preference.PreferenceManager +import com.google.android.material.color.DynamicColors import com.tfcporciuncula.flow.FlowSharedPreferences import com.tfcporciuncula.flow.Preference import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.preference.PreferenceValues.ThemeMode.system import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.anilist.Anilist import eu.kanade.tachiyomi.ui.browse.migration.sources.MigrationSourcesController @@ -69,17 +70,17 @@ class PreferencesHelper(val context: Context) { fun confirmExit() = prefs.getBoolean(Keys.confirmExit, false) - fun hideBottomBarOnScroll() = flowPrefs.getBoolean(Keys.hideBottomBarOnScroll, true) + fun hideBottomBarOnScroll() = flowPrefs.getBoolean("pref_hide_bottom_bar_on_scroll", true) - fun sideNavIconAlignment() = flowPrefs.getInt(Keys.sideNavIconAlignment, 0) + fun sideNavIconAlignment() = flowPrefs.getInt("pref_side_nav_icon_alignment", 0) - fun useAuthenticator() = flowPrefs.getBoolean(Keys.useAuthenticator, false) + fun useAuthenticator() = flowPrefs.getBoolean("use_biometric_lock", false) - fun lockAppAfter() = flowPrefs.getInt(Keys.lockAppAfter, 0) + fun lockAppAfter() = flowPrefs.getInt("lock_app_after", 0) - fun lastAppUnlock() = flowPrefs.getLong(Keys.lastAppUnlock, 0) + fun lastAppUnlock() = flowPrefs.getLong("last_app_unlock", 0) - fun secureScreen() = flowPrefs.getBoolean(Keys.secureScreen, false) + fun secureScreen() = flowPrefs.getBoolean("secure_screen", false) fun hideNotificationContent() = prefs.getBoolean(Keys.hideNotificationContent, false) @@ -87,107 +88,113 @@ class PreferencesHelper(val context: Context) { fun autoUpdateTrackers() = prefs.getBoolean(Keys.autoUpdateTrackers, false) - fun themeMode() = flowPrefs.getEnum(Keys.themeMode, system) + fun themeMode() = flowPrefs.getEnum( + "pref_theme_mode_key", + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Values.ThemeMode.system } else { Values.ThemeMode.light } + ) - fun appTheme() = flowPrefs.getEnum(Keys.appTheme, Values.AppTheme.DEFAULT) + fun appTheme() = flowPrefs.getEnum( + "pref_app_theme", + if (DynamicColors.isDynamicColorAvailable()) { Values.AppTheme.MONET } else { Values.AppTheme.DEFAULT } + ) - fun themeDarkAmoled() = flowPrefs.getBoolean(Keys.themeDarkAmoled, false) + fun themeDarkAmoled() = flowPrefs.getBoolean("pref_theme_dark_amoled_key", false) - fun pageTransitions() = flowPrefs.getBoolean(Keys.enableTransitions, true) + fun pageTransitions() = flowPrefs.getBoolean("pref_enable_transitions_key", true) - fun doubleTapAnimSpeed() = flowPrefs.getInt(Keys.doubleTapAnimationSpeed, 500) + fun doubleTapAnimSpeed() = flowPrefs.getInt("pref_double_tap_anim_speed", 500) - fun showPageNumber() = flowPrefs.getBoolean(Keys.showPageNumber, true) + fun showPageNumber() = flowPrefs.getBoolean("pref_show_page_number_key", true) - fun dualPageSplitPaged() = flowPrefs.getBoolean(Keys.dualPageSplitPaged, false) + fun dualPageSplitPaged() = flowPrefs.getBoolean("pref_dual_page_split", false) - fun dualPageSplitWebtoon() = flowPrefs.getBoolean(Keys.dualPageSplitWebtoon, false) + fun dualPageSplitWebtoon() = flowPrefs.getBoolean("pref_dual_page_split_webtoon", false) - fun dualPageInvertPaged() = flowPrefs.getBoolean(Keys.dualPageInvertPaged, false) + fun dualPageInvertPaged() = flowPrefs.getBoolean("pref_dual_page_invert", false) - fun dualPageInvertWebtoon() = flowPrefs.getBoolean(Keys.dualPageInvertWebtoon, false) + fun dualPageInvertWebtoon() = flowPrefs.getBoolean("pref_dual_page_invert_webtoon", false) fun showReadingMode() = prefs.getBoolean(Keys.showReadingMode, true) - fun trueColor() = flowPrefs.getBoolean(Keys.trueColor, false) + fun trueColor() = flowPrefs.getBoolean("pref_true_color_key", false) - fun fullscreen() = flowPrefs.getBoolean(Keys.fullscreen, true) + fun fullscreen() = flowPrefs.getBoolean("fullscreen", true) - fun cutoutShort() = flowPrefs.getBoolean(Keys.cutoutShort, true) + fun cutoutShort() = flowPrefs.getBoolean("cutout_short", true) - fun keepScreenOn() = flowPrefs.getBoolean(Keys.keepScreenOn, true) + fun keepScreenOn() = flowPrefs.getBoolean("pref_keep_screen_on_key", true) - fun customBrightness() = flowPrefs.getBoolean(Keys.customBrightness, false) + fun customBrightness() = flowPrefs.getBoolean("pref_custom_brightness_key", false) - fun customBrightnessValue() = flowPrefs.getInt(Keys.customBrightnessValue, 0) + fun customBrightnessValue() = flowPrefs.getInt("custom_brightness_value", 0) - fun colorFilter() = flowPrefs.getBoolean(Keys.colorFilter, false) + fun colorFilter() = flowPrefs.getBoolean("pref_color_filter_key", false) - fun colorFilterValue() = flowPrefs.getInt(Keys.colorFilterValue, 0) + fun colorFilterValue() = flowPrefs.getInt("color_filter_value", 0) - fun colorFilterMode() = flowPrefs.getInt(Keys.colorFilterMode, 0) + fun colorFilterMode() = flowPrefs.getInt("color_filter_mode", 0) - fun grayscale() = flowPrefs.getBoolean(Keys.grayscale, false) + fun grayscale() = flowPrefs.getBoolean("pref_grayscale", false) - fun invertedColors() = flowPrefs.getBoolean(Keys.invertedColors, false) + fun invertedColors() = flowPrefs.getBoolean("pref_inverted_colors", false) fun defaultReadingMode() = prefs.getInt(Keys.defaultReadingMode, ReadingModeType.RIGHT_TO_LEFT.flagValue) fun defaultOrientationType() = prefs.getInt(Keys.defaultOrientationType, OrientationType.FREE.flagValue) - fun imageScaleType() = flowPrefs.getInt(Keys.imageScaleType, 1) + fun imageScaleType() = flowPrefs.getInt("pref_image_scale_type_key", 1) - fun zoomStart() = flowPrefs.getInt(Keys.zoomStart, 1) + fun zoomStart() = flowPrefs.getInt("pref_zoom_start_key", 1) - fun readerTheme() = flowPrefs.getInt(Keys.readerTheme, 1) + fun readerTheme() = flowPrefs.getInt("pref_reader_theme_key", 1) - fun alwaysShowChapterTransition() = flowPrefs.getBoolean(Keys.alwaysShowChapterTransition, true) + fun alwaysShowChapterTransition() = flowPrefs.getBoolean("always_show_chapter_transition", true) - fun cropBorders() = flowPrefs.getBoolean(Keys.cropBorders, false) + fun cropBorders() = flowPrefs.getBoolean("crop_borders", false) - fun cropBordersWebtoon() = flowPrefs.getBoolean(Keys.cropBordersWebtoon, false) + fun cropBordersWebtoon() = flowPrefs.getBoolean("crop_borders_webtoon", false) - fun webtoonSidePadding() = flowPrefs.getInt(Keys.webtoonSidePadding, 0) + fun webtoonSidePadding() = flowPrefs.getInt("webtoon_side_padding", 0) - fun readWithTapping() = flowPrefs.getBoolean(Keys.readWithTapping, true) + fun readWithTapping() = flowPrefs.getBoolean("reader_tap", true) - fun pagerNavInverted() = flowPrefs.getEnum(Keys.pagerNavInverted, Values.TappingInvertMode.NONE) + fun pagerNavInverted() = flowPrefs.getEnum("reader_tapping_inverted", Values.TappingInvertMode.NONE) - fun webtoonNavInverted() = flowPrefs.getEnum(Keys.webtoonNavInverted, Values.TappingInvertMode.NONE) + fun webtoonNavInverted() = flowPrefs.getEnum("reader_tapping_inverted_webtoon", Values.TappingInvertMode.NONE) - fun readWithLongTap() = flowPrefs.getBoolean(Keys.readWithLongTap, true) + fun readWithLongTap() = flowPrefs.getBoolean("reader_long_tap", true) - fun readWithVolumeKeys() = flowPrefs.getBoolean(Keys.readWithVolumeKeys, false) + fun readWithVolumeKeys() = flowPrefs.getBoolean("reader_volume_keys", false) - fun readWithVolumeKeysInverted() = flowPrefs.getBoolean(Keys.readWithVolumeKeysInverted, false) + fun readWithVolumeKeysInverted() = flowPrefs.getBoolean("reader_volume_keys_inverted", false) - fun navigationModePager() = flowPrefs.getInt(Keys.navigationModePager, 0) + fun navigationModePager() = flowPrefs.getInt("reader_navigation_mode_pager", 0) - fun navigationModeWebtoon() = flowPrefs.getInt(Keys.navigationModeWebtoon, 0) + fun navigationModeWebtoon() = flowPrefs.getInt("reader_navigation_mode_webtoon", 0) - fun showNavigationOverlayNewUser() = flowPrefs.getBoolean(Keys.showNavigationOverlayNewUser, true) + fun showNavigationOverlayNewUser() = flowPrefs.getBoolean("reader_navigation_overlay_new_user", true) - fun showNavigationOverlayOnStart() = flowPrefs.getBoolean(Keys.showNavigationOverlayOnStart, false) + fun showNavigationOverlayOnStart() = flowPrefs.getBoolean("reader_navigation_overlay_on_start", false) - fun readerHideTreshold() = flowPrefs.getEnum(Keys.readerHideThreshold, Values.ReaderHideThreshold.LOW) + fun readerHideThreshold() = flowPrefs.getEnum("reader_hide_threshold", Values.ReaderHideThreshold.LOW) - fun portraitColumns() = flowPrefs.getInt(Keys.portraitColumns, 0) + fun portraitColumns() = flowPrefs.getInt("pref_library_columns_portrait_key", 0) - fun landscapeColumns() = flowPrefs.getInt(Keys.landscapeColumns, 0) + fun landscapeColumns() = flowPrefs.getInt("pref_library_columns_landscape_key", 0) fun jumpToChapters() = prefs.getBoolean(Keys.jumpToChapters, false) fun autoUpdateTrack() = prefs.getBoolean(Keys.autoUpdateTrack, true) - fun lastUsedSource() = flowPrefs.getLong(Keys.lastUsedSource, -1) + fun lastUsedSource() = flowPrefs.getLong("last_catalogue_source", -1) - fun lastUsedCategory() = flowPrefs.getInt(Keys.lastUsedCategory, 0) + fun lastUsedCategory() = flowPrefs.getInt("last_used_category", 0) fun lastVersionCode() = flowPrefs.getInt("last_version_code", 0) - fun sourceDisplayMode() = flowPrefs.getEnum(Keys.sourceDisplayMode, DisplayModeSetting.COMPACT_GRID) + fun sourceDisplayMode() = flowPrefs.getEnum("pref_display_mode_catalogue", DisplayModeSetting.COMPACT_GRID) - fun enabledLanguages() = flowPrefs.getStringSet(Keys.enabledLanguages, setOf("all", "en", Locale.getDefault().language)) + fun enabledLanguages() = flowPrefs.getStringSet("source_languages", setOf("all", "en", Locale.getDefault().language)) fun trackUsername(sync: TrackService) = prefs.getString(Keys.trackUsername(sync.id), "") @@ -204,24 +211,24 @@ class PreferencesHelper(val context: Context) { fun anilistScoreType() = flowPrefs.getString("anilist_score_type", Anilist.POINT_10) - fun backupsDirectory() = flowPrefs.getString(Keys.backupDirectory, defaultBackupDir.toString()) + fun backupsDirectory() = flowPrefs.getString("backup_directory", defaultBackupDir.toString()) - fun relativeTime() = flowPrefs.getInt(Keys.relativeTime, 7) + fun relativeTime() = flowPrefs.getInt("relative_time", 7) fun dateFormat(format: String = flowPrefs.getString(Keys.dateFormat, "").get()): DateFormat = when (format) { "" -> DateFormat.getDateInstance(DateFormat.SHORT) else -> SimpleDateFormat(format, Locale.getDefault()) } - fun downloadsDirectory() = flowPrefs.getString(Keys.downloadsDirectory, defaultDownloadsDir.toString()) + fun downloadsDirectory() = flowPrefs.getString("download_directory", defaultDownloadsDir.toString()) fun downloadOnlyOverWifi() = prefs.getBoolean(Keys.downloadOnlyOverWifi, true) fun folderPerManga() = prefs.getBoolean(Keys.folderPerManga, false) - fun numberOfBackups() = flowPrefs.getInt(Keys.numberOfBackups, 1) + fun numberOfBackups() = flowPrefs.getInt("backup_slots", 1) - fun backupInterval() = flowPrefs.getInt(Keys.backupInterval, 0) + fun backupInterval() = flowPrefs.getInt("backup_interval", 0) fun removeAfterReadSlots() = prefs.getInt(Keys.removeAfterReadSlots, -1) @@ -229,34 +236,34 @@ class PreferencesHelper(val context: Context) { fun removeBookmarkedChapters() = prefs.getBoolean(Keys.removeBookmarkedChapters, false) - fun removeExcludeCategories() = flowPrefs.getStringSet(Keys.removeExcludeCategories, emptySet()) + fun removeExcludeCategories() = flowPrefs.getStringSet("remove_exclude_categories", emptySet()) - fun libraryUpdateInterval() = flowPrefs.getInt(Keys.libraryUpdateInterval, 24) + fun libraryUpdateInterval() = flowPrefs.getInt("pref_library_update_interval_key", 24) - fun libraryUpdateDeviceRestriction() = flowPrefs.getStringSet(Keys.libraryUpdateDeviceRestriction, setOf(DEVICE_ONLY_ON_WIFI)) - fun libraryUpdateMangaRestriction() = flowPrefs.getStringSet(Keys.libraryUpdateMangaRestriction, setOf(MANGA_FULLY_READ, MANGA_ONGOING)) + fun libraryUpdateDeviceRestriction() = flowPrefs.getStringSet("library_update_restriction", setOf(DEVICE_ONLY_ON_WIFI)) + fun libraryUpdateMangaRestriction() = flowPrefs.getStringSet("library_update_manga_restriction", setOf(MANGA_FULLY_READ, MANGA_ONGOING)) - fun showUpdatesNavBadge() = flowPrefs.getBoolean(Keys.showUpdatesNavBadge, false) + fun showUpdatesNavBadge() = flowPrefs.getBoolean("library_update_show_tab_badge", false) fun unreadUpdatesCount() = flowPrefs.getInt("library_unread_updates_count", 0) - fun libraryUpdateCategories() = flowPrefs.getStringSet(Keys.libraryUpdateCategories, emptySet()) - fun libraryUpdateCategoriesExclude() = flowPrefs.getStringSet(Keys.libraryUpdateCategoriesExclude, emptySet()) + fun libraryUpdateCategories() = flowPrefs.getStringSet("library_update_categories", emptySet()) + fun libraryUpdateCategoriesExclude() = flowPrefs.getStringSet("library_update_categories_exclude", emptySet()) - fun libraryDisplayMode() = flowPrefs.getEnum(Keys.libraryDisplayMode, DisplayModeSetting.COMPACT_GRID) + fun libraryDisplayMode() = flowPrefs.getEnum("pref_display_mode_library", DisplayModeSetting.COMPACT_GRID) - fun downloadBadge() = flowPrefs.getBoolean(Keys.downloadBadge, false) + fun downloadBadge() = flowPrefs.getBoolean("display_download_badge", false) - fun localBadge() = flowPrefs.getBoolean(Keys.localBadge, true) + fun localBadge() = flowPrefs.getBoolean("display_local_badge", true) - fun downloadedOnly() = flowPrefs.getBoolean(Keys.downloadedOnly, false) + fun downloadedOnly() = flowPrefs.getBoolean("pref_downloaded_only", false) - fun unreadBadge() = flowPrefs.getBoolean(Keys.unreadBadge, true) + fun unreadBadge() = flowPrefs.getBoolean("display_unread_badge", true) - fun languageBadge() = flowPrefs.getBoolean(Keys.languageBadge, false) + fun languageBadge() = flowPrefs.getBoolean("display_language_badge", false) - fun categoryTabs() = flowPrefs.getBoolean(Keys.categoryTabs, true) + fun categoryTabs() = flowPrefs.getBoolean("display_category_tabs", true) - fun categoryNumberOfItems() = flowPrefs.getBoolean(Keys.categoryNumberOfItems, false) + fun categoryNumberOfItems() = flowPrefs.getBoolean("display_number_of_items", false) fun filterDownloaded() = flowPrefs.getInt(Keys.filterDownloaded, ExtendedNavigationView.Item.TriStateGroup.State.IGNORE.value) @@ -272,9 +279,9 @@ class PreferencesHelper(val context: Context) { fun migrationSortingMode() = flowPrefs.getEnum(Keys.migrationSortingMode, MigrationSourcesController.SortSetting.ALPHABETICAL) fun migrationSortingDirection() = flowPrefs.getEnum(Keys.migrationSortingDirection, MigrationSourcesController.DirectionSetting.ASCENDING) - fun automaticExtUpdates() = flowPrefs.getBoolean(Keys.automaticExtUpdates, true) + fun automaticExtUpdates() = flowPrefs.getBoolean("automatic_ext_updates", true) - fun showNsfwSource() = flowPrefs.getBoolean(Keys.showNsfwSource, true) + fun showNsfwSource() = flowPrefs.getBoolean("show_nsfw_source", true) fun extensionUpdatesCount() = flowPrefs.getInt("ext_updates_count", 0) @@ -287,14 +294,14 @@ class PreferencesHelper(val context: Context) { fun pinnedSources() = flowPrefs.getStringSet("pinned_catalogues", emptySet()) - fun downloadNew() = flowPrefs.getBoolean(Keys.downloadNew, false) + fun downloadNew() = flowPrefs.getBoolean("download_new", false) - fun downloadNewCategories() = flowPrefs.getStringSet(Keys.downloadNewCategories, emptySet()) - fun downloadNewCategoriesExclude() = flowPrefs.getStringSet(Keys.downloadNewCategoriesExclude, emptySet()) + fun downloadNewCategories() = flowPrefs.getStringSet("download_new_categories", emptySet()) + fun downloadNewCategoriesExclude() = flowPrefs.getStringSet("download_new_categories_exclude", emptySet()) fun defaultCategory() = prefs.getInt(Keys.defaultCategory, -1) - fun categorisedDisplaySettings() = flowPrefs.getBoolean(Keys.categorizedDisplay, false) + fun categorizedDisplaySettings() = flowPrefs.getBoolean("categorized_display", false) fun skipRead() = prefs.getBoolean(Keys.skipRead, false) @@ -320,12 +327,12 @@ class PreferencesHelper(val context: Context) { fun sortChapterByAscendingOrDescending() = prefs.getInt(Keys.defaultChapterSortByAscendingOrDescending, Manga.CHAPTER_SORT_DESC) - fun incognitoMode() = flowPrefs.getBoolean(Keys.incognitoMode, false) + fun incognitoMode() = flowPrefs.getBoolean("incognito_mode", false) - fun tabletUiMode() = flowPrefs.getEnum(Keys.tabletUiMode, Values.TabletUiMode.AUTOMATIC) + fun tabletUiMode() = flowPrefs.getEnum("tablet_ui_mode", Values.TabletUiMode.AUTOMATIC) fun extensionInstaller() = flowPrefs.getEnum( - Keys.extensionInstaller, + "extension_installer", if (DeviceUtil.isMiui) Values.ExtensionInstaller.LEGACY else Values.ExtensionInstaller.PACKAGEINSTALLER ) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt index 31ffcc0dc4..a76b12ada3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionPresenter.kt @@ -67,8 +67,10 @@ open class ExtensionPresenter( .sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.name })) val installedSorted = installed.filter { !it.hasUpdate && (showNsfwSources || !it.isNsfw) } - .sortedWith(compareBy { !it.isObsolete } - .thenBy(String.CASE_INSENSITIVE_ORDER) { it.name }) + .sortedWith( + compareBy { !it.isObsolete } + .thenBy(String.CASE_INSENSITIVE_ORDER) { it.name } + ) val untrustedSorted = untrusted.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER, { it.name })) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt index a0676bcd97..972843d137 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryAdapter.kt @@ -49,7 +49,7 @@ class LibraryAdapter( private var boundViews = arrayListOf() - private val isPerCategory by lazy { preferences.categorisedDisplaySettings().get() } + private val isPerCategory by lazy { preferences.categorizedDisplaySettings().get() } private var currentDisplayMode = preferences.libraryDisplayMode().get() init { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index 846e432077..cd14edc22a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -195,7 +195,7 @@ class LibraryController( is LibrarySettingsSheet.Filter.FilterGroup -> onFilterChanged() is LibrarySettingsSheet.Sort.SortGroup -> onSortChanged() is LibrarySettingsSheet.Display.DisplayGroup -> { - val delay = if (preferences.categorisedDisplaySettings().get()) 125L else 0L + val delay = if (preferences.categorizedDisplaySettings().get()) 125L else 0L Observable.timer(delay, TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread()) .subscribe { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt index b2409562b2..60f61bd0fb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt @@ -369,7 +369,7 @@ class LibraryPresenter( */ private fun getLibraryMangasObservable(): Observable { val defaultLibraryDisplayMode = preferences.libraryDisplayMode() - val shouldSetFromCategory = preferences.categorisedDisplaySettings() + val shouldSetFromCategory = preferences.categorizedDisplaySettings() return db.getLibraryMangas().asRxObservable() .map { list -> list.map { libraryManga -> diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt index e3ff3b7416..44671f68fb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt @@ -245,7 +245,7 @@ class LibrarySettingsSheet( SortDirectionSetting.DESCENDING } - if (preferences.categorisedDisplaySettings().get() && currentCategory != null && currentCategory?.id != 0) { + if (preferences.categorizedDisplaySettings().get() && currentCategory != null && currentCategory?.id != 0) { currentCategory?.sortDirection = flag.flag db.insertCategory(currentCategory!!).executeAsBlocking() @@ -267,7 +267,7 @@ class LibrarySettingsSheet( else -> throw NotImplementedError("Unknown display mode") } - if (preferences.categorisedDisplaySettings().get() && currentCategory != null && currentCategory?.id != 0) { + if (preferences.categorizedDisplaySettings().get() && currentCategory != null && currentCategory?.id != 0) { currentCategory?.sortMode = flag.flag db.insertCategory(currentCategory!!).executeAsBlocking() @@ -304,7 +304,7 @@ class LibrarySettingsSheet( // Gets user preference of currently selected display mode at current category private fun getDisplayModePreference(): DisplayModeSetting { - return if (preferences.categorisedDisplaySettings().get() && currentCategory != null && currentCategory?.id != 0) { + return if (preferences.categorizedDisplaySettings().get() && currentCategory != null && currentCategory?.id != 0) { DisplayModeSetting.fromFlag(currentCategory?.displayMode) } else { preferences.libraryDisplayMode().get() @@ -353,7 +353,7 @@ class LibrarySettingsSheet( else -> throw NotImplementedError("Unknown display mode") } - if (preferences.categorisedDisplaySettings().get() && currentCategory != null && currentCategory?.id != 0) { + if (preferences.categorizedDisplaySettings().get() && currentCategory != null && currentCategory?.id != 0) { currentCategory?.displayMode = flag.flag db.insertCategory(currentCategory!!).executeAsBlocking() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortDirectionSetting.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortDirectionSetting.kt index dc79f2d400..578f31e0a4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortDirectionSetting.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortDirectionSetting.kt @@ -15,7 +15,7 @@ enum class SortDirectionSetting(val flag: Int) { } fun get(preferences: PreferencesHelper, category: Category?): SortDirectionSetting { - return if (preferences.categorisedDisplaySettings().get() && category != null && category.id != 0) { + return if (preferences.categorizedDisplaySettings().get() && category != null && category.id != 0) { fromFlag(category.sortDirection) } else { preferences.librarySortingAscending().get() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt index 33df901ff0..277bb8fb9e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/setting/SortModeSetting.kt @@ -22,7 +22,7 @@ enum class SortModeSetting(val flag: Int) { } fun get(preferences: PreferencesHelper, category: Category?): SortModeSetting { - return if (preferences.categorisedDisplaySettings().get() && category != null && category.id != 0) { + return if (preferences.categorizedDisplaySettings().get() && category != null && category.id != 0) { fromFlag(category.sortMode) } else { preferences.librarySortingMode().get() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt index 742e43ff4a..2b99508f84 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/more/MoreController.kt @@ -18,7 +18,7 @@ import eu.kanade.tachiyomi.ui.setting.SettingsBackupController import eu.kanade.tachiyomi.ui.setting.SettingsController import eu.kanade.tachiyomi.ui.setting.SettingsMainController import eu.kanade.tachiyomi.util.preference.add -import eu.kanade.tachiyomi.util.preference.defaultValue +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.iconRes import eu.kanade.tachiyomi.util.preference.iconTint import eu.kanade.tachiyomi.util.preference.onClick @@ -36,7 +36,6 @@ import rx.Subscription import rx.android.schedulers.AndroidSchedulers import rx.subscriptions.CompositeSubscription import uy.kohesive.injekt.injectLazy -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class MoreController : SettingsController(), @@ -58,7 +57,7 @@ class MoreController : add(MoreHeaderPreference(context)) switchPreference { - key = Keys.downloadedOnly + bindTo(preferences.downloadedOnly()) titleRes = R.string.label_downloaded_only summaryRes = R.string.downloaded_only_summary iconRes = R.drawable.ic_cloud_off_24dp @@ -66,12 +65,11 @@ class MoreController : } switchPreference { - key = Keys.incognitoMode + bindTo(preferences.incognitoMode()) summaryRes = R.string.pref_incognito_mode_summary titleRes = R.string.pref_incognito_mode iconRes = R.drawable.ic_glasses_24dp iconTint = tintColor - defaultValue = false preferences.incognitoMode().asFlow() .onEach { isChecked = it } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index ce6f8fcdd8..fd361bf8dc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -76,7 +76,7 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr private val threshold: Int = Injekt.get() - .readerHideTreshold() + .readerHideThreshold() .get() .threshold 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 acc675e1d3..f6b8cea9aa 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 @@ -24,6 +24,7 @@ import eu.kanade.tachiyomi.ui.setting.database.ClearDatabaseController import eu.kanade.tachiyomi.util.CrashLogUtil import eu.kanade.tachiyomi.util.lang.launchIO import eu.kanade.tachiyomi.util.lang.withUIContext +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.intListPreference @@ -35,7 +36,6 @@ 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 @@ -206,7 +206,7 @@ class SettingsAdvancedController : SettingsController() { titleRes = R.string.label_extensions listPreference { - key = Keys.extensionInstaller + bindTo(preferences.extensionInstaller()) titleRes = R.string.ext_installer_pref summary = "%s" entriesRes = arrayOf( @@ -215,11 +215,6 @@ class SettingsAdvancedController : SettingsController() { R.string.ext_installer_shizuku, ) entryValues = PreferenceValues.ExtensionInstaller.values().map { it.name }.toTypedArray() - defaultValue = if (DeviceUtil.isMiui) { - PreferenceValues.ExtensionInstaller.LEGACY - } else { - PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER - }.name onChange { if (it == PreferenceValues.ExtensionInstaller.SHIZUKU.name && @@ -245,12 +240,11 @@ class SettingsAdvancedController : SettingsController() { titleRes = R.string.pref_category_display listPreference { - key = Keys.tabletUiMode + 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) entryValues = PreferenceValues.TabletUiMode.values().map { it.name }.toTypedArray() - defaultValue = PreferenceValues.TabletUiMode.AUTOMATIC.name onChange { activity?.toast(R.string.requires_app_restart) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAppearanceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAppearanceController.kt index 8352e9890a..bb3f6d85b9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAppearanceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAppearanceController.kt @@ -7,6 +7,7 @@ import androidx.core.app.ActivityCompat import androidx.preference.PreferenceScreen import com.google.android.material.color.DynamicColors import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.initThenAdd @@ -33,7 +34,7 @@ class SettingsAppearanceController : SettingsController() { titleRes = R.string.pref_category_theme listPreference { - key = Keys.themeMode + bindTo(preferences.themeMode()) titleRes = R.string.pref_theme_mode if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { @@ -47,7 +48,6 @@ class SettingsAppearanceController : SettingsController() { Values.ThemeMode.light.name, Values.ThemeMode.dark.name ) - defaultValue = Values.ThemeMode.system.name } else { entriesRes = arrayOf( R.string.theme_light, @@ -57,13 +57,12 @@ class SettingsAppearanceController : SettingsController() { Values.ThemeMode.light.name, Values.ThemeMode.dark.name ) - defaultValue = Values.ThemeMode.light.name } summary = "%s" } themesPreference = initThenAdd(ThemesPreference(context)) { - key = Keys.appTheme + bindTo(preferences.appTheme()) titleRes = R.string.pref_app_theme val appThemes = Values.AppTheme.values().filter { @@ -75,7 +74,6 @@ class SettingsAppearanceController : SettingsController() { it.titleResId != null && monetFilter } entries = appThemes - defaultValue = appThemes[0].name onChange { activity?.let { ActivityCompat.recreate(it) } @@ -83,9 +81,8 @@ class SettingsAppearanceController : SettingsController() { } } switchPreference { - key = Keys.themeDarkAmoled + bindTo(preferences.themeDarkAmoled()) titleRes = R.string.pref_dark_theme_pure_black - defaultValue = false visibleIf(preferences.themeMode()) { it != Values.ThemeMode.light } @@ -101,7 +98,7 @@ class SettingsAppearanceController : SettingsController() { if (context.isTablet()) { intListPreference { - key = Keys.sideNavIconAlignment + bindTo(preferences.sideNavIconAlignment()) titleRes = R.string.pref_side_nav_icon_alignment entriesRes = arrayOf( R.string.alignment_top, @@ -109,14 +106,12 @@ class SettingsAppearanceController : SettingsController() { R.string.alignment_bottom, ) entryValues = arrayOf("0", "1", "2") - defaultValue = "0" summary = "%s" } } else { switchPreference { - key = Keys.hideBottomBarOnScroll + bindTo(preferences.hideBottomBarOnScroll()) titleRes = R.string.pref_hide_bottom_bar_on_scroll - defaultValue = true } } } @@ -125,7 +120,7 @@ class SettingsAppearanceController : SettingsController() { titleRes = R.string.pref_category_timestamps intListPreference { - key = Keys.relativeTime + bindTo(preferences.relativeTime()) titleRes = R.string.pref_relative_format val values = arrayOf("0", "2", "7") entryValues = values @@ -136,7 +131,6 @@ class SettingsAppearanceController : SettingsController() { else -> context.getString(R.string.pref_relative_time_long) } }.toTypedArray() - defaultValue = "7" summary = "%s" } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt index 2c8ab6a7a6..4a0062d7d7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt @@ -25,7 +25,7 @@ import eu.kanade.tachiyomi.data.backup.full.models.BackupFull import eu.kanade.tachiyomi.data.backup.legacy.LegacyBackupRestoreValidator import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe -import eu.kanade.tachiyomi.util.preference.defaultValue +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.infoPreference import eu.kanade.tachiyomi.util.preference.intListPreference @@ -39,7 +39,6 @@ import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.toast import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach -import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys class SettingsBackupController : SettingsController() { @@ -103,7 +102,7 @@ class SettingsBackupController : SettingsController() { titleRes = R.string.pref_backup_service_category intListPreference { - key = Keys.backupInterval + bindTo(preferences.backupInterval()) titleRes = R.string.pref_backup_interval entriesRes = arrayOf( R.string.update_never, @@ -114,7 +113,6 @@ class SettingsBackupController : SettingsController() { R.string.update_weekly ) entryValues = arrayOf("0", "6", "12", "24", "48", "168") - defaultValue = "0" summary = "%s" onChange { newValue -> @@ -124,7 +122,7 @@ class SettingsBackupController : SettingsController() { } } preference { - key = Keys.backupDirectory + bindTo(preferences.backupsDirectory()) titleRes = R.string.pref_backup_directory onClick { @@ -146,11 +144,10 @@ class SettingsBackupController : SettingsController() { .launchIn(viewScope) } intListPreference { - key = Keys.numberOfBackups + bindTo(preferences.numberOfBackups()) titleRes = R.string.pref_backup_slots entries = arrayOf("1", "2", "3", "4", "5") entryValues = entries - defaultValue = "1" summary = "%s" visibleIf(preferences.backupInterval()) { it > 0 } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBrowseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBrowseController.kt index b927e6fbde..b66a02a0bb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBrowseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBrowseController.kt @@ -4,6 +4,7 @@ import androidx.fragment.app.FragmentActivity import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.extension.ExtensionUpdateJob +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.infoPreference import eu.kanade.tachiyomi.util.preference.onChange @@ -24,9 +25,8 @@ class SettingsBrowseController : SettingsController() { titleRes = R.string.label_extensions switchPreference { - key = Keys.automaticExtUpdates + bindTo(preferences.automaticExtUpdates()) titleRes = R.string.pref_enable_automatic_extension_updates - defaultValue = true onChange { newValue -> val checked = newValue as Boolean @@ -50,10 +50,9 @@ class SettingsBrowseController : SettingsController() { titleRes = R.string.pref_category_nsfw_content switchPreference { - key = Keys.showNsfwSource + bindTo(preferences.showNsfwSource()) titleRes = R.string.pref_show_nsfw_source summaryRes = R.string.requires_app_restart - defaultValue = true if (context.isAuthenticationSupported() && activity != null) { requireAuthentication( diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt index 21f17c0dba..af19dfad72 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsDownloadController.kt @@ -17,6 +17,7 @@ import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Category import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.base.controller.DialogController +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.intListPreference @@ -48,7 +49,7 @@ class SettingsDownloadController : SettingsController() { val categories = listOf(Category.createDefault(context)) + dbCategories preference { - key = Keys.downloadsDirectory + bindTo(preferences.downloadsDirectory()) titleRes = R.string.pref_download_directory onClick { val ctrl = DownloadDirectoriesDialog() @@ -97,7 +98,7 @@ class SettingsDownloadController : SettingsController() { defaultValue = false } multiSelectListPreference { - key = Keys.removeExcludeCategories + bindTo(preferences.removeExcludeCategories()) titleRes = R.string.pref_remove_exclude_categories entries = categories.map { it.name }.toTypedArray() entryValues = categories.map { it.id.toString() }.toTypedArray() @@ -121,12 +122,11 @@ class SettingsDownloadController : SettingsController() { titleRes = R.string.pref_category_auto_download switchPreference { - key = Keys.downloadNew + bindTo(preferences.downloadNew()) titleRes = R.string.pref_download_new - defaultValue = false } preference { - key = Keys.downloadNewCategories + bindTo(preferences.downloadNewCategories()) titleRes = R.string.categories onClick { DownloadCategoriesDialog().showDialog(router) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt index 6bc909cf2b..3687108723 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsGeneralController.kt @@ -5,6 +5,7 @@ import android.os.Build import android.provider.Settings import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.intListPreference @@ -33,9 +34,8 @@ class SettingsGeneralController : SettingsController() { summary = "%s" } switchPreference { - key = Keys.showUpdatesNavBadge + bindTo(preferences.showUpdatesNavBadge()) titleRes = R.string.pref_library_update_show_tab_badge - defaultValue = false } switchPreference { key = Keys.confirmExit 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 ad1d3a74ec..e0ee08f36b 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 @@ -5,7 +5,6 @@ import android.os.Bundle import android.view.LayoutInflater import androidx.core.content.ContextCompat import androidx.core.text.buildSpannedString -import androidx.preference.Preference import androidx.preference.PreferenceScreen import com.google.android.material.dialog.MaterialAlertDialogBuilder import eu.kanade.tachiyomi.R @@ -22,6 +21,7 @@ import eu.kanade.tachiyomi.databinding.PrefLibraryColumnsBinding import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.category.CategoryController +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.intListPreference @@ -127,9 +127,8 @@ class SettingsLibraryController : SettingsController() { } switchPreference { - key = Keys.categorizedDisplay + bindTo(preferences.categorizedDisplaySettings()) titleRes = R.string.categorized_display_settings - defaultValue = false } } @@ -137,7 +136,7 @@ class SettingsLibraryController : SettingsController() { titleRes = R.string.pref_category_library_update intListPreference { - key = Keys.libraryUpdateInterval + bindTo(preferences.libraryUpdateInterval()) titleRes = R.string.pref_library_update_interval entriesRes = arrayOf( R.string.update_never, @@ -148,7 +147,6 @@ class SettingsLibraryController : SettingsController() { R.string.update_weekly ) entryValues = arrayOf("0", "12", "24", "48", "72", "168") - defaultValue = "24" summary = "%s" onChange { newValue -> @@ -158,13 +156,12 @@ class SettingsLibraryController : SettingsController() { } } multiSelectListPreference { - key = Keys.libraryUpdateDeviceRestriction + bindTo(preferences.libraryUpdateDeviceRestriction()) titleRes = R.string.pref_library_update_restriction entriesRes = arrayOf(R.string.connected_to_wifi, R.string.charging) entryValues = arrayOf(DEVICE_ONLY_ON_WIFI, DEVICE_CHARGING) - defaultValue = preferences.libraryUpdateDeviceRestriction().defaultValue - visibleIfGlobalUpdateEnabled() + visibleIf(preferences.libraryUpdateInterval()) { it > 0 } onChange { // Post to event looper to allow the preference to be updated. @@ -196,11 +193,10 @@ class SettingsLibraryController : SettingsController() { .launchIn(viewScope) } multiSelectListPreference { - key = Keys.libraryUpdateMangaRestriction + bindTo(preferences.libraryUpdateMangaRestriction()) titleRes = R.string.pref_library_update_manga_restriction entriesRes = arrayOf(R.string.pref_update_only_completely_read, R.string.pref_update_only_non_completed) entryValues = arrayOf(MANGA_FULLY_READ, MANGA_ONGOING) - defaultValue = preferences.libraryUpdateMangaRestriction().defaultValue fun updateSummary() { val restrictions = preferences.libraryUpdateMangaRestriction().get() @@ -226,7 +222,7 @@ class SettingsLibraryController : SettingsController() { .launchIn(viewScope) } preference { - key = Keys.libraryUpdateCategories + bindTo(preferences.libraryUpdateCategories()) titleRes = R.string.categories onClick { @@ -290,10 +286,6 @@ class SettingsLibraryController : SettingsController() { } } - private inline fun Preference.visibleIfGlobalUpdateEnabled() { - visibleIf(preferences.libraryUpdateInterval()) { it > 0 } - } - class LibraryColumnsDialog : DialogController() { private val preferences: PreferencesHelper = Injekt.get() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt index 8e43dbadd4..6ed3056efe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt @@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode import eu.kanade.tachiyomi.ui.reader.setting.OrientationType import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.entriesRes import eu.kanade.tachiyomi.util.preference.intListPreference @@ -39,11 +40,10 @@ class SettingsReaderController : SettingsController() { summary = "%s" } intListPreference { - key = Keys.doubleTapAnimationSpeed + bindTo(preferences.doubleTapAnimSpeed()) titleRes = R.string.pref_double_tap_anim_speed entries = arrayOf(context.getString(R.string.double_tap_anim_speed_0), context.getString(R.string.double_tap_anim_speed_normal), context.getString(R.string.double_tap_anim_speed_fast)) entryValues = arrayOf("1", "500", "250") // using a value of 0 breaks the image viewer, so min is 1 - defaultValue = "500" summary = "%s" } switchPreference { @@ -53,23 +53,20 @@ class SettingsReaderController : SettingsController() { defaultValue = true } switchPreference { - key = Keys.showNavigationOverlayOnStart + bindTo(preferences.showNavigationOverlayOnStart()) titleRes = R.string.pref_show_navigation_mode summaryRes = R.string.pref_show_navigation_mode_summary - defaultValue = false } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { switchPreference { - key = Keys.trueColor + bindTo(preferences.trueColor()) titleRes = R.string.pref_true_color summaryRes = R.string.pref_true_color_summary - defaultValue = false } } switchPreference { - key = Keys.enableTransitions + bindTo(preferences.pageTransitions()) titleRes = R.string.pref_page_transitions - defaultValue = true } preferenceCategory { @@ -91,38 +88,33 @@ class SettingsReaderController : SettingsController() { summary = "%s" } intListPreference { - key = Keys.readerTheme + bindTo(preferences.readerTheme()) titleRes = R.string.pref_reader_theme entriesRes = arrayOf(R.string.black_background, R.string.gray_background, R.string.white_background, R.string.automatic_background) entryValues = arrayOf("1", "2", "0", "3") - defaultValue = "1" summary = "%s" } switchPreference { - key = Keys.fullscreen + bindTo(preferences.fullscreen()) titleRes = R.string.pref_fullscreen - defaultValue = true } if (activity?.hasDisplayCutout() == true) { switchPreference { - key = Keys.cutoutShort + bindTo(preferences.cutoutShort()) titleRes = R.string.pref_cutout_short - defaultValue = true visibleIf(preferences.fullscreen()) { it } } } switchPreference { - key = Keys.keepScreenOn + bindTo(preferences.keepScreenOn()) titleRes = R.string.pref_keep_screen_on - defaultValue = true } switchPreference { - key = Keys.showPageNumber + bindTo(preferences.showPageNumber()) titleRes = R.string.pref_show_page_number - defaultValue = true } } @@ -140,9 +132,8 @@ class SettingsReaderController : SettingsController() { defaultValue = true } switchPreference { - key = Keys.alwaysShowChapterTransition + bindTo(preferences.alwaysShowChapterTransition()) titleRes = R.string.pref_always_show_chapter_transition - defaultValue = true } } @@ -150,18 +141,17 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pager_viewer intListPreference { - key = Keys.navigationModePager + bindTo(preferences.navigationModePager()) titleRes = R.string.pref_viewer_nav entries = context.resources.getStringArray(R.array.pager_nav).also { values -> entryValues = values.indices.map { index -> "$index" }.toTypedArray() } - defaultValue = "0" summary = "%s" visibleIf(preferences.readWithTapping()) { it } } listPreference { - key = Keys.pagerNavInverted + bindTo(preferences.pagerNavInverted()) titleRes = R.string.pref_read_with_tapping_inverted entriesRes = arrayOf( R.string.tapping_inverted_none, @@ -175,13 +165,12 @@ class SettingsReaderController : SettingsController() { TappingInvertMode.VERTICAL.name, TappingInvertMode.BOTH.name ) - defaultValue = TappingInvertMode.NONE.name summary = "%s" visibleIf(preferences.readWithTapping()) { it } } intListPreference { - key = Keys.imageScaleType + bindTo(preferences.imageScaleType()) titleRes = R.string.pref_image_scale_type entriesRes = arrayOf( R.string.scale_type_fit_screen, @@ -192,11 +181,10 @@ class SettingsReaderController : SettingsController() { R.string.scale_type_smart_fit ) entryValues = arrayOf("1", "2", "3", "4", "5", "6") - defaultValue = "1" summary = "%s" } intListPreference { - key = Keys.zoomStart + bindTo(preferences.zoomStart()) titleRes = R.string.pref_zoom_start entriesRes = arrayOf( R.string.zoom_start_automatic, @@ -205,24 +193,20 @@ class SettingsReaderController : SettingsController() { R.string.zoom_start_center ) entryValues = arrayOf("1", "2", "3", "4") - defaultValue = "1" summary = "%s" } switchPreference { - key = Keys.cropBorders + bindTo(preferences.cropBorders()) titleRes = R.string.pref_crop_borders - defaultValue = false } switchPreference { - key = Keys.dualPageSplitPaged + bindTo(preferences.dualPageSplitPaged()) titleRes = R.string.pref_dual_page_split - defaultValue = false } switchPreference { - key = Keys.dualPageInvertPaged + bindTo(preferences.dualPageInvertPaged()) titleRes = R.string.pref_dual_page_invert summaryRes = R.string.pref_dual_page_invert_summary - defaultValue = false visibleIf(preferences.dualPageSplitPaged()) { it } } } @@ -231,18 +215,16 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.webtoon_viewer intListPreference { - key = Keys.navigationModeWebtoon + bindTo(preferences.navigationModeWebtoon()) titleRes = R.string.pref_viewer_nav entries = context.resources.getStringArray(R.array.webtoon_nav).also { values -> entryValues = values.indices.map { index -> "$index" }.toTypedArray() } - defaultValue = "0" summary = "%s" - visibleIf(preferences.readWithTapping()) { it } } listPreference { - key = Keys.webtoonNavInverted + bindTo(preferences.webtoonNavInverted()) titleRes = R.string.pref_read_with_tapping_inverted entriesRes = arrayOf( R.string.tapping_inverted_none, @@ -256,13 +238,12 @@ class SettingsReaderController : SettingsController() { TappingInvertMode.VERTICAL.name, TappingInvertMode.BOTH.name ) - defaultValue = TappingInvertMode.NONE.name summary = "%s" visibleIf(preferences.readWithTapping()) { it } } intListPreference { - key = Keys.webtoonSidePadding + bindTo(preferences.webtoonSidePadding()) titleRes = R.string.pref_webtoon_side_padding entriesRes = arrayOf( R.string.webtoon_side_padding_0, @@ -272,11 +253,10 @@ class SettingsReaderController : SettingsController() { R.string.webtoon_side_padding_25 ) entryValues = arrayOf("0", "10", "15", "20", "25") - defaultValue = "0" summary = "%s" } listPreference { - key = Keys.readerHideThreshold + bindTo(preferences.readerHideThreshold()) titleRes = R.string.pref_hide_threshold entriesRes = arrayOf( R.string.pref_highest, @@ -287,24 +267,20 @@ class SettingsReaderController : SettingsController() { entryValues = PreferenceValues.ReaderHideThreshold.values() .map { it.name } .toTypedArray() - defaultValue = "${PreferenceValues.ReaderHideThreshold.LOW}" summary = "%s" } switchPreference { - key = Keys.cropBordersWebtoon + bindTo(preferences.cropBordersWebtoon()) titleRes = R.string.pref_crop_borders - defaultValue = false } switchPreference { - key = Keys.dualPageSplitWebtoon + bindTo(preferences.dualPageSplitWebtoon()) titleRes = R.string.pref_dual_page_split - defaultValue = false } switchPreference { - key = Keys.dualPageInvertWebtoon + bindTo(preferences.dualPageInvertWebtoon()) titleRes = R.string.pref_dual_page_invert summaryRes = R.string.pref_dual_page_invert_summary - defaultValue = false visibleIf(preferences.dualPageSplitWebtoon()) { it } } } @@ -313,19 +289,16 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_reader_navigation switchPreference { - key = Keys.readWithTapping + bindTo(preferences.readWithTapping()) titleRes = R.string.pref_read_with_tapping - defaultValue = true } switchPreference { - key = Keys.readWithVolumeKeys + bindTo(preferences.readWithVolumeKeys()) titleRes = R.string.pref_read_with_volume_keys - defaultValue = false } switchPreference { - key = Keys.readWithVolumeKeysInverted + bindTo(preferences.readWithVolumeKeysInverted()) titleRes = R.string.pref_read_with_volume_keys_inverted - defaultValue = false visibleIf(preferences.readWithVolumeKeys()) { it } } } @@ -334,9 +307,8 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_reader_actions switchPreference { - key = Keys.readWithLongTap + bindTo(preferences.readWithLongTap()) titleRes = R.string.pref_read_with_long_tap - defaultValue = true } switchPreference { key = Keys.folderPerManga 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 b71fbb3273..7a2d7da767 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 @@ -5,6 +5,7 @@ import androidx.fragment.app.FragmentActivity import androidx.preference.Preference import androidx.preference.PreferenceScreen import eu.kanade.tachiyomi.R +import eu.kanade.tachiyomi.util.preference.bindTo import eu.kanade.tachiyomi.util.preference.defaultValue import eu.kanade.tachiyomi.util.preference.intListPreference import eu.kanade.tachiyomi.util.preference.requireAuthentication @@ -24,9 +25,8 @@ class SettingsSecurityController : SettingsController() { if (context.isAuthenticationSupported()) { switchPreference { - key = Keys.useAuthenticator + bindTo(preferences.useAuthenticator()) titleRes = R.string.lock_with_biometrics - defaultValue = false requireAuthentication( activity as? FragmentActivity, @@ -36,7 +36,7 @@ class SettingsSecurityController : SettingsController() { } intListPreference { - key = Keys.lockAppAfter + bindTo(preferences.lockAppAfter()) titleRes = R.string.lock_when_idle val values = arrayOf("0", "1", "2", "5", "10", "-1") entries = values.mapNotNull { @@ -47,7 +47,6 @@ class SettingsSecurityController : SettingsController() { } }.toTypedArray() entryValues = values - defaultValue = "0" summary = "%s" onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue -> if (value == newValue) return@OnPreferenceChangeListener false @@ -82,10 +81,9 @@ class SettingsSecurityController : SettingsController() { } switchPreference { - key = Keys.secureScreen + bindTo(preferences.secureScreen()) titleRes = R.string.secure_screen summaryRes = R.string.secure_screen_summary - defaultValue = false } switchPreference { diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/preference/PreferenceDSL.kt b/app/src/main/java/eu/kanade/tachiyomi/util/preference/PreferenceDSL.kt index d16cf9f0c9..644f6a15cf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/preference/PreferenceDSL.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/preference/PreferenceDSL.kt @@ -123,6 +123,11 @@ inline fun

PreferenceGroup.addThenInit(p: P, block: P.() -> Uni } } +inline fun Preference.bindTo(preference: com.tfcporciuncula.flow.Preference) { + key = preference.key + defaultValue = preference.defaultValue +} + inline fun Preference.onClick(crossinline block: () -> Unit) { setOnPreferenceClickListener { block(); true } }