diff --git a/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt b/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt index 54a6c8531..6ba078869 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/AppModule.kt @@ -34,6 +34,7 @@ import eu.kanade.tachiyomi.extension.ExtensionManager import eu.kanade.tachiyomi.network.NetworkHelper import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.source.SourceManager +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.system.isDevFlavor import exh.eh.EHentaiUpdateHelper import exh.pref.DelegateSourcePreferences @@ -178,6 +179,9 @@ class PreferenceModule(val application: Application) : InjektModule { addSingletonFactory { LibraryPreferences(get()) } + addSingletonFactory { + ReaderPreferences(get()) + } addSingletonFactory { PreferencesHelper( context = application, diff --git a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt index 5311a509c..1bcaaeefc 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/Migrations.kt @@ -18,6 +18,7 @@ import eu.kanade.tachiyomi.extension.ExtensionUpdateJob import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.preference.minusAssign import eu.kanade.tachiyomi.util.preference.plusAssign import eu.kanade.tachiyomi.util.system.DeviceUtil @@ -44,6 +45,7 @@ object Migrations { sourcePreferences: SourcePreferences, securityPreferences: SecurityPreferences, libraryPreferences: LibraryPreferences, + readerPreferences: ReaderPreferences, ): Boolean { val oldVersion = preferences.lastVersionCode().get() if (oldVersion < BuildConfig.VERSION_CODE) { @@ -272,8 +274,8 @@ object Migrations { if (oldVersion < 77) { val oldReaderTap = prefs.getBoolean("reader_tap", false) if (!oldReaderTap) { - preferences.navigationModePager().set(5) - preferences.navigationModeWebtoon().set(5) + readerPreferences.navigationModePager().set(5) + readerPreferences.navigationModeWebtoon().set(5) } } if (oldVersion < 81) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt index 863e18f71..1e99cf7f8 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/cache/ChapterCache.kt @@ -4,8 +4,8 @@ import android.content.Context import android.text.format.Formatter import com.jakewharton.disklrucache.DiskLruCache import eu.kanade.domain.chapter.model.Chapter -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.model.Page +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.storage.DiskUtil import eu.kanade.tachiyomi.util.storage.saveTo import kotlinx.coroutines.CoroutineScope @@ -51,13 +51,13 @@ class ChapterCache(private val context: Context) { private val json: Json by injectLazy() // --> EH - private val prefs: PreferencesHelper by injectLazy() + private val readerPreferences: ReaderPreferences by injectLazy() /** Cache class used for cache management. */ - private var diskCache = setupDiskCache(prefs.cacheSize().get().toLong()) + private var diskCache = setupDiskCache(readerPreferences.cacheSize().get().toLong()) init { - prefs.cacheSize().changes() + readerPreferences.cacheSize().changes() .onEach { // Save old cache for destruction later val oldCache = diskCache 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 447360435..af2a04ea8 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -10,10 +10,6 @@ import eu.kanade.tachiyomi.core.preference.getEnum import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.data.track.anilist.Anilist -import eu.kanade.tachiyomi.ui.reader.setting.OrientationType -import eu.kanade.tachiyomi.ui.reader.setting.ReaderBottomButton -import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType -import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable import java.io.File @@ -61,95 +57,6 @@ class PreferencesHelper( fun themeDarkAmoled() = preferenceStore.getBoolean("pref_theme_dark_amoled_key", false) - // SY --> - fun pageTransitionsPager() = preferenceStore.getBoolean("pref_enable_transitions_pager_key", true) - - fun pageTransitionsWebtoon() = preferenceStore.getBoolean("pref_enable_transitions_webtoon_key", true) - - fun doubleTapAnimSpeed() = preferenceStore.getInt("pref_double_tap_anim_speed", 500) - - fun showPageNumber() = preferenceStore.getBoolean("pref_show_page_number_key", true) - - fun dualPageSplitPaged() = preferenceStore.getBoolean("pref_dual_page_split", false) - - fun dualPageInvertPaged() = preferenceStore.getBoolean("pref_dual_page_invert", false) - - fun dualPageSplitWebtoon() = preferenceStore.getBoolean("pref_dual_page_split_webtoon", false) - - fun dualPageInvertWebtoon() = preferenceStore.getBoolean("pref_dual_page_invert_webtoon", false) - - fun longStripSplitWebtoon() = preferenceStore.getBoolean("pref_long_strip_split_webtoon", true) - - fun showReadingMode() = preferenceStore.getBoolean("pref_show_reading_mode", true) - - fun trueColor() = preferenceStore.getBoolean("pref_true_color_key", false) - - fun fullscreen() = preferenceStore.getBoolean("fullscreen", true) - - fun cutoutShort() = preferenceStore.getBoolean("cutout_short", true) - - fun keepScreenOn() = preferenceStore.getBoolean("pref_keep_screen_on_key", true) - - fun customBrightness() = preferenceStore.getBoolean("pref_custom_brightness_key", false) - - fun customBrightnessValue() = preferenceStore.getInt("custom_brightness_value", 0) - - fun colorFilter() = preferenceStore.getBoolean("pref_color_filter_key", false) - - fun colorFilterValue() = preferenceStore.getInt("color_filter_value", 0) - - fun colorFilterMode() = preferenceStore.getInt("color_filter_mode", 0) - - fun grayscale() = preferenceStore.getBoolean("pref_grayscale", false) - - fun invertedColors() = preferenceStore.getBoolean("pref_inverted_colors", false) - - fun defaultReadingMode() = preferenceStore.getInt("pref_default_reading_mode_key", ReadingModeType.RIGHT_TO_LEFT.flagValue) - - fun defaultOrientationType() = preferenceStore.getInt("pref_default_orientation_type_key", OrientationType.FREE.flagValue) - - fun imageScaleType() = preferenceStore.getInt("pref_image_scale_type_key", 1) - - fun zoomStart() = preferenceStore.getInt("pref_zoom_start_key", 1) - - fun readerTheme() = preferenceStore.getInt("pref_reader_theme_key", 3) - - fun alwaysShowChapterTransition() = preferenceStore.getBoolean("always_show_chapter_transition", true) - - fun cropBorders() = preferenceStore.getBoolean("crop_borders", false) - - fun navigateToPan() = preferenceStore.getBoolean("navigate_pan", true) - - fun landscapeZoom() = preferenceStore.getBoolean("landscape_zoom", true) - - fun cropBordersWebtoon() = preferenceStore.getBoolean("crop_borders_webtoon", false) - - fun webtoonSidePadding() = preferenceStore.getInt("webtoon_side_padding", 0) - - fun readWithTapping() = preferenceStore.getBoolean("reader_tap", true) - - fun pagerNavInverted() = preferenceStore.getEnum("reader_tapping_inverted", Values.TappingInvertMode.NONE) - - fun webtoonNavInverted() = preferenceStore.getEnum("reader_tapping_inverted_webtoon", Values.TappingInvertMode.NONE) - - fun readWithLongTap() = preferenceStore.getBoolean("reader_long_tap", true) - - fun readWithVolumeKeys() = preferenceStore.getBoolean("reader_volume_keys", false) - - fun readWithVolumeKeysInverted() = preferenceStore.getBoolean("reader_volume_keys_inverted", false) - - fun navigationModePager() = preferenceStore.getInt("reader_navigation_mode_pager", 0) - - fun navigationModeWebtoon() = preferenceStore.getInt("reader_navigation_mode_webtoon", 0) - - fun showNavigationOverlayNewUser() = preferenceStore.getBoolean("reader_navigation_overlay_new_user", true) - - fun showNavigationOverlayOnStart() = preferenceStore.getBoolean("reader_navigation_overlay_on_start", false) - - fun readerHideThreshold() = preferenceStore.getEnum("reader_hide_threshold", Values.ReaderHideThreshold.LOW) - - fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true) - fun lastVersionCode() = preferenceStore.getInt("last_version_code", 0) fun trackUsername(sync: TrackService) = preferenceStore.getString(Keys.trackUsername(sync.id), "") @@ -182,8 +89,6 @@ class PreferencesHelper( fun splitTallImages() = preferenceStore.getBoolean("split_tall_images", false) - fun folderPerManga() = preferenceStore.getBoolean("create_folder_per_manga", false) - fun numberOfBackups() = preferenceStore.getInt("backup_slots", 2) fun backupInterval() = preferenceStore.getInt("backup_interval", 12) @@ -210,9 +115,7 @@ class PreferencesHelper( fun autoDownloadWhileReading() = preferenceStore.getInt("auto_download_while_reading", 0) - fun skipRead() = preferenceStore.getBoolean("skip_read", false) - - fun skipFiltered() = preferenceStore.getBoolean("skip_filtered", true) + fun autoUpdateTrack() = preferenceStore.getBoolean("pref_auto_update_manga_sync_key", true) fun migrateFlags() = preferenceStore.getInt("migrate_flags", Int.MAX_VALUE) @@ -299,16 +202,6 @@ class PreferencesHelper( fun expandFilters() = preferenceStore.getBoolean("eh_expand_filters", false) - fun readerThreads() = preferenceStore.getInt("eh_reader_threads", 2) - - fun readerInstantRetry() = preferenceStore.getBoolean("eh_reader_instant_retry", true) - - fun autoscrollInterval() = preferenceStore.getFloat("eh_util_autoscroll_interval", 3f) - - fun cacheSize() = preferenceStore.getString("eh_cache_size", "75") - - fun preserveReadingPosition() = preferenceStore.getBoolean("eh_preserve_reading_position", false) - fun autoSolveCaptcha() = preferenceStore.getBoolean("eh_autosolve_captchas", false) fun ehLastVersionCode() = preferenceStore.getInt("eh_last_version_code", 0) @@ -321,12 +214,6 @@ class PreferencesHelper( fun exhAutoUpdateStats() = preferenceStore.getString("eh_auto_update_stats", "") - fun aggressivePageLoading() = preferenceStore.getBoolean("eh_aggressive_page_loading", false) - - fun preloadSize() = preferenceStore.getInt("eh_preload_size", 10) - - fun useAutoWebtoon() = preferenceStore.getBoolean("eh_use_auto_webtoon", true) - fun exhWatchedListDefaultState() = preferenceStore.getBoolean("eh_watched_list_default_state", false) fun exhSettingsLanguages() = preferenceStore.getString( @@ -349,10 +236,6 @@ class PreferencesHelper( fun enhancedEHentaiView() = preferenceStore.getBoolean("enhanced_e_hentai_view", true) - fun webtoonEnableZoomOut() = preferenceStore.getBoolean("webtoon_enable_zoom_out", false) - - fun continuousVerticalTappingByPage() = preferenceStore.getBoolean("continuous_vertical_tapping_by_page", false) - fun useNewSourceNavigation() = preferenceStore.getBoolean("use_new_source_navigation", true) fun preferredMangaDexId() = preferenceStore.getString("preferred_mangaDex_id", "0") @@ -363,25 +246,9 @@ class PreferencesHelper( fun extensionRepos() = preferenceStore.getStringSet("extension_repos", emptySet()) - fun cropBordersContinuousVertical() = preferenceStore.getBoolean("crop_borders_continues_vertical", false) - - fun forceHorizontalSeekbar() = preferenceStore.getBoolean("pref_force_horz_seekbar", false) - - fun landscapeVerticalSeekbar() = preferenceStore.getBoolean("pref_show_vert_seekbar_landscape", false) - - fun leftVerticalSeekbar() = preferenceStore.getBoolean("pref_left_handed_vertical_seekbar", false) - - fun readerBottomButtons() = preferenceStore.getStringSet("reader_bottom_buttons", ReaderBottomButton.BUTTONS_DEFAULTS) - fun bottomBarLabels() = preferenceStore.getBoolean("pref_show_bottom_bar_labels", true) fun showNavUpdates() = preferenceStore.getBoolean("pref_show_updates_button", true) fun showNavHistory() = preferenceStore.getBoolean("pref_show_history_button", true) - - fun pageLayout() = preferenceStore.getInt("page_layout", PagerConfig.PageLayout.AUTOMATIC) - - fun centerMarginType() = preferenceStore.getInt("center_margin_type", PagerConfig.CenterMarginType.NONE) - - fun invertDoublePages() = preferenceStore.getBoolean("invert_double_pages", false) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt index d80856937..7f2ce0174 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/main/MainActivity.kt @@ -147,6 +147,7 @@ class MainActivity : BaseActivity() { sourcePreferences = sourcePreferences, securityPreferences = Injekt.get(), libraryPreferences = libraryPreferences, + readerPreferences = Injekt.get(), ) } else { false diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt index ad893977b..a6286dd70 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt @@ -61,6 +61,7 @@ import eu.kanade.tachiyomi.source.online.MetadataSource import eu.kanade.tachiyomi.source.online.all.MergedSource import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.manga.track.TrackItem +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.chapter.ChapterSettingsHelper import eu.kanade.tachiyomi.util.chapter.getChapterSort import eu.kanade.tachiyomi.util.lang.launchIO @@ -132,6 +133,7 @@ class MangaPresenter( private val downloadManager: DownloadManager = Injekt.get(), private val getMangaAndChapters: GetMangaWithChapters = Injekt.get(), // SY --> + private val readerPreferences: ReaderPreferences = Injekt.get(), private val getManga: GetManga = Injekt.get(), private val setMangaFilteredScanlators: SetMangaFilteredScanlators = Injekt.get(), private val getMergedChapterByMangaId: GetMergedChapterByMangaId = Injekt.get(), @@ -357,7 +359,7 @@ class MangaPresenter( preferences.dateFormat() }, mergedData = mergedData, - alwaysShowReadingProgress = preferences.preserveReadingPosition().get() && manga.isEhBasedManga(), + alwaysShowReadingProgress = readerPreferences.preserveReadingPosition().get() && manga.isEhBasedManga(), // SY <-- ) updateSuccessState { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 8fdc4a870..e77f5c043 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -71,6 +71,7 @@ import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.setting.OrientationType import eu.kanade.tachiyomi.ui.reader.setting.ReaderBottomButton +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsSheet import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer @@ -146,6 +147,8 @@ class ReaderActivity : BaseRxActivity() { const val SHARED_ELEMENT_NAME = "reader_shared_element_root" } + private val readerPreferences: ReaderPreferences by injectLazy() + lateinit var binding: ReaderActivityBinding val hasCutout by lazy { hasDisplayCutout() } @@ -561,7 +564,7 @@ class ReaderActivity : BaseRxActivity() { presenter.setMangaReadingMode(newReadingMode.flagValue) menuToggleToast?.cancel() - if (!preferences.showReadingMode().get()) { + if (!readerPreferences.showReadingMode().get()) { menuToggleToast = toast(newReadingMode.stringRes) } @@ -580,13 +583,13 @@ class ReaderActivity : BaseRxActivity() { // SY <-- val isPagerType = ReadingModeType.isPagerType(mangaViewer) val enabled = if (isPagerType) { - preferences.cropBorders().toggle() + readerPreferences.cropBorders().toggle() } else { // SY --> if (ReadingModeType.fromPreference(mangaViewer) == ReadingModeType.CONTINUOUS_VERTICAL) { - preferences.cropBordersContinuousVertical().toggle() + readerPreferences.cropBordersContinuousVertical().toggle() } else { - preferences.cropBordersWebtoon().toggle() + readerPreferences.cropBordersWebtoon().toggle() } // SY <-- } @@ -602,7 +605,7 @@ class ReaderActivity : BaseRxActivity() { } } updateCropBordersShortcut() - listOf(preferences.cropBorders(), preferences.cropBordersWebtoon() /* SY --> */, preferences.cropBordersContinuousVertical()/* SY <-- */) + listOf(readerPreferences.cropBorders(), readerPreferences.cropBordersWebtoon() /* SY --> */, readerPreferences.cropBordersContinuousVertical()/* SY <-- */) .forEach { pref -> pref.changes() .onEach { updateCropBordersShortcut() } @@ -617,7 +620,7 @@ class ReaderActivity : BaseRxActivity() { popupMenu( items = OrientationType.values().map { it.flagValue to it.stringRes }, selectedItemId = presenter.manga?.orientationType - ?: preferences.defaultOrientationType().get(), + ?: readerPreferences.defaultOrientationType().get(), ) { val newOrientation = OrientationType.fromPreference(itemId) @@ -666,14 +669,14 @@ class ReaderActivity : BaseRxActivity() { setTooltip(R.string.page_layout) setOnClickListener { - if (preferences.pageLayout().get() == PagerConfig.PageLayout.AUTOMATIC) { + if (readerPreferences.pageLayout().get() == PagerConfig.PageLayout.AUTOMATIC) { (viewer as? PagerViewer)?.config?.let { config -> config.doublePages = !config.doublePages reloadChapters(config.doublePages, true) } updateBottomButtons() } else { - preferences.pageLayout().set(1 - preferences.pageLayout().get()) + readerPreferences.pageLayout().set(1 - readerPreferences.pageLayout().get()) } } } @@ -695,7 +698,7 @@ class ReaderActivity : BaseRxActivity() { .launchIn(lifecycleScope) binding.ehAutoscrollFreq.setText( - preferences.autoscrollInterval().get().let { + readerPreferences.autoscrollInterval().get().let { if (it == -1f) { "" } else { @@ -713,11 +716,11 @@ class ReaderActivity : BaseRxActivity() { if (parsed == null || parsed <= 0 || parsed > 9999) { binding.ehAutoscrollFreq.error = getString(R.string.eh_autoscroll_freq_invalid) - preferences.autoscrollInterval().set(-1f) + readerPreferences.autoscrollInterval().set(-1f) binding.ehAutoscroll.isEnabled = false } else { binding.ehAutoscrollFreq.error = null - preferences.autoscrollInterval().set(parsed.toFloat()) + readerPreferences.autoscrollInterval().set(parsed.toFloat()) binding.ehAutoscroll.isEnabled = true if (checked) { repeatOnLifecycle(Lifecycle.State.STARTED) { @@ -844,13 +847,13 @@ class ReaderActivity : BaseRxActivity() { } fun updateBottomButtons() { - val enabledButtons = preferences.readerBottomButtons().get() + val enabledButtons = readerPreferences.readerBottomButtons().get() with(binding) { actionReadingMode.isVisible = ReaderBottomButton.ReadingMode.isIn(enabledButtons) actionRotation.isVisible = ReaderBottomButton.Rotation.isIn(enabledButtons) doublePage.isVisible = - viewer is PagerViewer && ReaderBottomButton.PageLayout.isIn(enabledButtons) && !preferences.dualPageSplitPaged().get() + viewer is PagerViewer && ReaderBottomButton.PageLayout.isIn(enabledButtons) && !readerPreferences.dualPageSplitPaged().get() actionCropBorders.isVisible = if (viewer is PagerViewer) { ReaderBottomButton.CropBordersPager.isIn(enabledButtons) @@ -917,13 +920,13 @@ class ReaderActivity : BaseRxActivity() { val mangaViewer = presenter.getMangaReadingMode() val isPagerType = ReadingModeType.isPagerType(mangaViewer) val enabled = if (isPagerType) { - preferences.cropBorders().get() + readerPreferences.cropBorders().get() } else { // SY --> if (ReadingModeType.fromPreference(mangaViewer) == ReadingModeType.CONTINUOUS_VERTICAL) { - preferences.cropBordersContinuousVertical().get() + readerPreferences.cropBordersContinuousVertical().get() } else { - preferences.cropBordersWebtoon().get() + readerPreferences.cropBordersWebtoon().get() } // SY <-- } @@ -964,7 +967,7 @@ class ReaderActivity : BaseRxActivity() { val vertAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in_side) val vertAnimationLeft = AnimationUtils.loadAnimation(this, R.anim.fade_in_side_left) - if (preferences.leftVerticalSeekbar().get() && binding.readerNavVert.isVisible) { + if (readerPreferences.leftVerticalSeekbar().get() && binding.readerNavVert.isVisible) { binding.seekbarVertContainer.startAnimation(vertAnimationLeft) } else { binding.seekbarVertContainer.startAnimation(vertAnimation) @@ -975,11 +978,11 @@ class ReaderActivity : BaseRxActivity() { binding.readerMenuBottom.startAnimation(bottomAnimation) } - if (preferences.showPageNumber().get()) { + if (readerPreferences.showPageNumber().get()) { config?.setPageNumberVisibility(false) } } else { - if (preferences.fullscreen().get()) { + if (readerPreferences.fullscreen().get()) { windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE } @@ -1000,7 +1003,7 @@ class ReaderActivity : BaseRxActivity() { val vertAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out_side) val vertAnimationLeft = AnimationUtils.loadAnimation(this, R.anim.fade_out_side_left) - if (preferences.leftVerticalSeekbar().get() && binding.readerNavVert.isVisible) { + if (readerPreferences.leftVerticalSeekbar().get() && binding.readerNavVert.isVisible) { binding.seekbarVertContainer.startAnimation(vertAnimationLeft) } else { binding.seekbarVertContainer.startAnimation(vertAnimation) @@ -1011,7 +1014,7 @@ class ReaderActivity : BaseRxActivity() { binding.readerMenuBottom.startAnimation(bottomAnimation) } - if (preferences.showPageNumber().get()) { + if (readerPreferences.showPageNumber().get()) { config?.setPageNumberVisibility(true) } } @@ -1064,22 +1067,22 @@ class ReaderActivity : BaseRxActivity() { binding.viewerContainer.removeAllViews() } viewer = newViewer - updateViewerInset(preferences.fullscreen().get()) + updateViewerInset(readerPreferences.fullscreen().get()) binding.viewerContainer.addView(newViewer.getView()) // SY --> if (newViewer is PagerViewer) { - if (preferences.pageLayout().get() == PagerConfig.PageLayout.AUTOMATIC) { + if (readerPreferences.pageLayout().get() == PagerConfig.PageLayout.AUTOMATIC) { setDoublePageMode(newViewer) } lastShiftDoubleState?.let { newViewer.config.shiftDoublePage = it } } val defaultReaderType = manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.get(manga.source)?.name)) - if (preferences.useAutoWebtoon().get() && manga.readingModeType == ReadingModeType.DEFAULT.flagValue && defaultReaderType != null && defaultReaderType == ReadingModeType.WEBTOON.prefValue) { + if (readerPreferences.useAutoWebtoon().get() && manga.readingModeType == ReadingModeType.DEFAULT.flagValue && defaultReaderType != null && defaultReaderType == ReadingModeType.WEBTOON.prefValue) { readingModeToast?.cancel() readingModeToast = toast(resources.getString(R.string.eh_auto_webtoon_snack)) - } else if (preferences.showReadingMode().get()) { + } else if (readerPreferences.showReadingMode().get()) { // SY <-- showReadingModeToast(presenter.getMangaReadingMode()) } @@ -1089,10 +1092,10 @@ class ReaderActivity : BaseRxActivity() { // --> Vertical seekbar hide on landscape if ( - !preferences.forceHorizontalSeekbar().get() && + !readerPreferences.forceHorizontalSeekbar().get() && ( ( - resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE && preferences.landscapeVerticalSeekbar().get() + resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE && readerPreferences.landscapeVerticalSeekbar().get() ) || resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT ) && @@ -1110,7 +1113,7 @@ class ReaderActivity : BaseRxActivity() { // --> Left-handed vertical seekbar val params = binding.readerNavVert.layoutParams as RelativeLayout.LayoutParams - if (preferences.leftVerticalSeekbar().get() && binding.readerNavVert.isVisible) { + if (readerPreferences.leftVerticalSeekbar().get() && binding.readerNavVert.isVisible) { params.removeRule(RelativeLayout.ALIGN_PARENT_END) binding.readerNavVert.layoutParams = params } @@ -1510,10 +1513,10 @@ class ReaderActivity : BaseRxActivity() { * Initializes the reader subscriptions. */ init { - preferences.readerTheme().changes() - .onEach { + readerPreferences.readerTheme().changes() + .onEach { theme -> binding.readerContainer.setBackgroundResource( - when (preferences.readerTheme().get()) { + when (theme) { 0 -> android.R.color.white 2 -> R.color.reader_background_dark 3 -> automaticBackgroundColor() @@ -1523,41 +1526,41 @@ class ReaderActivity : BaseRxActivity() { } .launchIn(lifecycleScope) - preferences.showPageNumber().changes() + readerPreferences.showPageNumber().changes() .onEach { setPageNumberVisibility(it) } .launchIn(lifecycleScope) - preferences.trueColor().changes() + readerPreferences.trueColor().changes() .onEach { setTrueColor(it) } .launchIn(lifecycleScope) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - preferences.cutoutShort().changes() + readerPreferences.cutoutShort().changes() .onEach { setCutoutShort(it) } .launchIn(lifecycleScope) } - preferences.keepScreenOn().changes() + readerPreferences.keepScreenOn().changes() .onEach { setKeepScreenOn(it) } .launchIn(lifecycleScope) - preferences.customBrightness().changes() + readerPreferences.customBrightness().changes() .onEach { setCustomBrightness(it) } .launchIn(lifecycleScope) - preferences.colorFilter().changes() + readerPreferences.colorFilter().changes() .onEach { setColorFilter(it) } .launchIn(lifecycleScope) - preferences.colorFilterMode().changes() - .onEach { setColorFilter(preferences.colorFilter().get()) } + readerPreferences.colorFilterMode().changes() + .onEach { setColorFilter(readerPreferences.colorFilter().get()) } .launchIn(lifecycleScope) - merge(preferences.grayscale().changes(), preferences.invertedColors().changes()) - .onEach { setLayerPaint(preferences.grayscale().get(), preferences.invertedColors().get()) } + merge(readerPreferences.grayscale().changes(), readerPreferences.invertedColors().changes()) + .onEach { setLayerPaint(readerPreferences.grayscale().get(), readerPreferences.invertedColors().get()) } .launchIn(lifecycleScope) - preferences.fullscreen().changes() + readerPreferences.fullscreen().changes() .onEach { WindowCompat.setDecorFitsSystemWindows(window, !it) updateViewerInset(it) @@ -1565,18 +1568,18 @@ class ReaderActivity : BaseRxActivity() { .launchIn(lifecycleScope) // SY --> - preferences.pageLayout().changes() + readerPreferences.pageLayout().changes() .drop(1) .onEach { updateBottomButtons() } .launchIn(lifecycleScope) - preferences.dualPageSplitPaged().changes() + readerPreferences.dualPageSplitPaged().changes() .drop(1) .onEach { if (viewer !is PagerViewer) return@onEach updateBottomButtons() reloadChapters( - !it && when (preferences.pageLayout().get()) { + !it && when (readerPreferences.pageLayout().get()) { PagerConfig.PageLayout.DOUBLE_PAGES -> true PagerConfig.PageLayout.AUTOMATIC -> resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE else -> false @@ -1644,7 +1647,7 @@ class ReaderActivity : BaseRxActivity() { */ private fun setCustomBrightness(enabled: Boolean) { if (enabled) { - preferences.customBrightnessValue().changes() + readerPreferences.customBrightnessValue().changes() .sample(100) .onEach { setCustomBrightnessValue(it) } .launchIn(lifecycleScope) @@ -1658,7 +1661,7 @@ class ReaderActivity : BaseRxActivity() { */ private fun setColorFilter(enabled: Boolean) { if (enabled) { - preferences.colorFilterValue().changes() + readerPreferences.colorFilterValue().changes() .sample(100) .onEach { setColorFilterValue(it) } .launchIn(lifecycleScope) @@ -1702,7 +1705,7 @@ class ReaderActivity : BaseRxActivity() { */ private fun setColorFilterValue(value: Int) { binding.colorOverlay.isVisible = true - binding.colorOverlay.setFilterColor(value, preferences.colorFilterMode().get()) + binding.colorOverlay.setFilterColor(value, readerPreferences.colorFilterMode().get()) } private fun setLayerPaint(grayscale: Boolean, invertedColors: Boolean) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 9201e7961..f53c8992f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -49,6 +49,7 @@ import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.StencilPage import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType import eu.kanade.tachiyomi.util.chapter.getChapterSort import eu.kanade.tachiyomi.util.editCover @@ -98,6 +99,7 @@ class ReaderPresenter( private val sourceManager: SourceManager = Injekt.get(), private val downloadManager: DownloadManager = Injekt.get(), private val preferences: PreferencesHelper = Injekt.get(), + private val readerPreferences: ReaderPreferences = Injekt.get(), private val delayedTrackingStore: DelayedTrackingStore = Injekt.get(), private val getManga: GetManga = Injekt.get(), private val getChapterByMangaId: GetChapterByMangaId = Injekt.get(), @@ -183,11 +185,11 @@ class ReaderPresenter( ?: error("Requested chapter of id $chapterId not found in chapter list") val chaptersForReader = when { - (preferences.skipRead().get() || preferences.skipFiltered().get()) -> { + (readerPreferences.skipRead().get() || readerPreferences.skipFiltered().get()) -> { val filteredChapters = chapters.filterNot { when { - preferences.skipRead().get() && it.read -> true - preferences.skipFiltered().get() -> { + readerPreferences.skipRead().get() && it.read -> true + readerPreferences.skipFiltered().get() -> { (manga.readFilter == DomainManga.CHAPTER_SHOW_READ.toInt() && !it.read) || (manga.readFilter == DomainManga.CHAPTER_SHOW_UNREAD.toInt() && it.read) || (manga.downloadedFilter == DomainManga.CHAPTER_SHOW_DOWNLOADED.toInt() && !downloadManager.isChapterDownloaded(it.name, it.scanlator, manga.title, manga.source)) || @@ -735,12 +737,12 @@ class ReaderPresenter( * Returns the viewer position used by this manga or the default one. */ fun getMangaReadingMode(resolveDefault: Boolean = true): Int { - val default = preferences.defaultReadingMode().get() + val default = readerPreferences.defaultReadingMode().get() val manga = manga ?: return default val readingMode = ReadingModeType.fromPreference(manga.readingModeType) // SY --> return when { - resolveDefault && readingMode == ReadingModeType.DEFAULT && preferences.useAutoWebtoon().get() -> { + resolveDefault && readingMode == ReadingModeType.DEFAULT && readerPreferences.useAutoWebtoon().get() -> { manga.defaultReaderType(manga.mangaType(sourceName = sourceManager.get(manga.source)?.name)) ?: default } @@ -779,7 +781,7 @@ class ReaderPresenter( * Returns the orientation type used by this manga or the default one. */ fun getMangaOrientationType(resolveDefault: Boolean = true): Int { - val default = preferences.defaultOrientationType().get() + val default = readerPreferences.defaultOrientationType().get() val orientation = OrientationType.fromPreference(manga?.orientationType) return when { resolveDefault && orientation == OrientationType.DEFAULT -> default @@ -837,7 +839,7 @@ class ReaderPresenter( val filename = generateFilename(manga, page) // Pictures directory. - val relativePath = if (preferences.folderPerManga().get()) DiskUtil.buildValidFilename(manga.title) else "" + val relativePath = if (readerPreferences.folderPerManga().get()) DiskUtil.buildValidFilename(manga.title) else "" // Copy file in background. try { @@ -871,7 +873,7 @@ class ReaderPresenter( notifier.onClear() // Pictures directory. - val relativePath = if (preferences.folderPerManga().get()) DiskUtil.buildValidFilename(manga.title) else "" + val relativePath = if (readerPreferences.folderPerManga().get()) DiskUtil.buildValidFilename(manga.title) else "" // Copy file in background. try { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt index 8d2ea28fb..8974abe5d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt @@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.all.MergedSource import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.util.system.logcat -import exh.debug.DebugFunctions.prefs +import exh.debug.DebugFunctions.readerPrefs import exh.merged.sql.models.MergedMangaReference import rx.Completable import rx.Observable @@ -67,7 +67,7 @@ class ChapterLoader( // If the chapter is partially read, set the starting page to the last the user read // otherwise use the requested page. - if (!chapter.chapter.read /* --> EH */ || prefs + if (!chapter.chapter.read /* --> EH */ || readerPrefs .preserveReadingPosition() .get() // <-- EH ) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt index 0736679c1..f98e23c8b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt @@ -3,11 +3,11 @@ package eu.kanade.tachiyomi.ui.reader.loader import eu.kanade.domain.source.service.SourcePreferences import eu.kanade.tachiyomi.data.cache.ChapterCache import eu.kanade.tachiyomi.data.database.models.toDomainChapter -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderPage +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.lang.plusAssign import eu.kanade.tachiyomi.util.system.logcat import exh.source.isEhBasedSource @@ -34,7 +34,7 @@ class HttpPageLoader( private val source: HttpSource, private val chapterCache: ChapterCache = Injekt.get(), // SY --> - private val preferences: PreferencesHelper = Injekt.get(), + private val readerPreferences: ReaderPreferences = Injekt.get(), private val sourcePreferences: SourcePreferences = Injekt.get(), // SY <-- ) : PageLoader() { @@ -49,7 +49,7 @@ class HttpPageLoader( */ private val subscriptions = CompositeSubscription() - private val preloadSize = /* SY --> */ preferences.preloadSize().get() // SY <-- + private val preloadSize = /* SY --> */ readerPreferences.preloadSize().get() // SY <-- // SY --> private val dataSaver = DataSaver(source, sourcePreferences) @@ -57,7 +57,7 @@ class HttpPageLoader( init { // EXH --> - repeat(preferences.readerThreads().get()) { + repeat(readerPreferences.readerThreads().get()) { // EXH <-- subscriptions += Observable.defer { Observable.just(queue.take().page) } .filter { it.status == Page.QUEUE } @@ -114,7 +114,7 @@ class HttpPageLoader( // Don't trust sources and use our own indexing ReaderPage(index, page.url, page.imageUrl) } - if (preferences.aggressivePageLoading().get()) { + if (readerPreferences.aggressivePageLoading().get()) { rp.forEach { if (it.status == Page.QUEUE) { queue.offer(PriorityPage(it, 0)) @@ -199,7 +199,7 @@ class HttpPageLoader( page.imageUrl = null } - if (preferences.readerInstantRetry().get()) // EXH <-- + if (readerPreferences.readerInstantRetry().get()) // EXH <-- { boostPage(page) } else { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt index 40b0ef5f0..8d83c97f2 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderColorFilterSettings.kt @@ -10,7 +10,7 @@ import androidx.core.graphics.green import androidx.core.graphics.red import androidx.core.widget.NestedScrollView import androidx.lifecycle.lifecycleScope -import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.core.preference.getAndSet import eu.kanade.tachiyomi.databinding.ReaderColorFilterSettingsBinding import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.util.preference.bindToPreference @@ -25,28 +25,28 @@ import uy.kohesive.injekt.injectLazy class ReaderColorFilterSettings @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : NestedScrollView(context, attrs) { - private val preferences: PreferencesHelper by injectLazy() + private val readerPreferences: ReaderPreferences by injectLazy() private val binding = ReaderColorFilterSettingsBinding.inflate(LayoutInflater.from(context), this, false) init { addView(binding.root) - preferences.colorFilter().changes() + readerPreferences.colorFilter().changes() .onEach { setColorFilter(it) } .launchIn((context as ReaderActivity).lifecycleScope) - preferences.colorFilterMode().changes() - .onEach { setColorFilter(preferences.colorFilter().get()) } + readerPreferences.colorFilterMode().changes() + .onEach { setColorFilter(readerPreferences.colorFilter().get()) } .launchIn(context.lifecycleScope) - preferences.customBrightness().changes() + readerPreferences.customBrightness().changes() .onEach { setCustomBrightness(it) } .launchIn(context.lifecycleScope) // Get color and update values - val color = preferences.colorFilterValue().get() - val brightness = preferences.customBrightnessValue().get() + val color = readerPreferences.colorFilterValue().get() + val brightness = readerPreferences.customBrightnessValue().get() val argb = setValues(color) @@ -61,11 +61,11 @@ class ReaderColorFilterSettings @JvmOverloads constructor(context: Context, attr binding.sliderColorFilterBlue.value = argb[3].toFloat() // Set listeners - binding.switchColorFilter.bindToPreference(preferences.colorFilter()) - binding.customBrightness.bindToPreference(preferences.customBrightness()) - binding.colorFilterMode.bindToPreference(preferences.colorFilterMode()) - binding.grayscale.bindToPreference(preferences.grayscale()) - binding.invertedColors.bindToPreference(preferences.invertedColors()) + binding.switchColorFilter.bindToPreference(readerPreferences.colorFilter()) + binding.customBrightness.bindToPreference(readerPreferences.customBrightness()) + binding.colorFilterMode.bindToPreference(readerPreferences.colorFilterMode()) + binding.grayscale.bindToPreference(readerPreferences.grayscale()) + binding.invertedColors.bindToPreference(readerPreferences.invertedColors()) binding.sliderColorFilterAlpha.addOnChangeListener { _, value, fromUser -> if (fromUser) { @@ -90,7 +90,7 @@ class ReaderColorFilterSettings @JvmOverloads constructor(context: Context, attr binding.sliderBrightness.addOnChangeListener { _, value, fromUser -> if (fromUser) { - preferences.customBrightnessValue().set(value.toInt()) + readerPreferences.customBrightnessValue().set(value.toInt()) } } } @@ -139,7 +139,7 @@ class ReaderColorFilterSettings @JvmOverloads constructor(context: Context, attr */ private fun setCustomBrightness(enabled: Boolean) { if (enabled) { - preferences.customBrightnessValue().changes() + readerPreferences.customBrightnessValue().changes() .sample(100) .onEach { setCustomBrightnessValue(it) } .launchIn((context as ReaderActivity).lifecycleScope) @@ -167,7 +167,7 @@ class ReaderColorFilterSettings @JvmOverloads constructor(context: Context, attr */ private fun setColorFilter(enabled: Boolean) { if (enabled) { - preferences.colorFilterValue().changes() + readerPreferences.colorFilterValue().changes() .sample(100) .onEach { setColorFilterValue(it) } .launchIn((context as ReaderActivity).lifecycleScope) @@ -190,9 +190,9 @@ class ReaderColorFilterSettings @JvmOverloads constructor(context: Context, attr * @param bitShift amounts of bits that gets shifted to receive value */ private fun setColorValue(color: Int, mask: Long, bitShift: Int) { - val currentColor = preferences.colorFilterValue().get() - val updatedColor = (color shl bitShift) or (currentColor and mask.inv().toInt()) - preferences.colorFilterValue().set(updatedColor) + readerPreferences.colorFilterValue().getAndSet { currentColor -> + (color shl bitShift) or (currentColor and mask.inv().toInt()) + } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt index b3bc11795..f525e866a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt @@ -8,7 +8,6 @@ import androidx.core.view.isVisible import androidx.core.widget.NestedScrollView import androidx.lifecycle.lifecycleScope import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.ReaderGeneralSettingsBinding import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.util.preference.asHotFlow @@ -22,7 +21,7 @@ import uy.kohesive.injekt.injectLazy class ReaderGeneralSettings @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : NestedScrollView(context, attrs) { - private val preferences: PreferencesHelper by injectLazy() + private val readerPreferences: ReaderPreferences by injectLazy() private val binding = ReaderGeneralSettingsBinding.inflate(LayoutInflater.from(context), this, false) @@ -36,39 +35,39 @@ class ReaderGeneralSettings @JvmOverloads constructor(context: Context, attrs: A * Init general reader preferences. */ private fun initGeneralPreferences() { - binding.backgroundColor.bindToIntPreference(preferences.readerTheme(), R.array.reader_themes_values) - binding.showPageNumber.bindToPreference(preferences.showPageNumber()) - binding.fullscreen.bindToPreference(preferences.fullscreen()) - preferences.fullscreen() + binding.backgroundColor.bindToIntPreference(readerPreferences.readerTheme(), R.array.reader_themes_values) + binding.showPageNumber.bindToPreference(readerPreferences.showPageNumber()) + binding.fullscreen.bindToPreference(readerPreferences.fullscreen()) + readerPreferences.fullscreen() .asHotFlow { // If the preference is explicitly disabled, that means the setting was configured since there is a cutout - binding.cutoutShort.isVisible = it && ((context as ReaderActivity).hasCutout || !preferences.cutoutShort().get()) - binding.cutoutShort.bindToPreference(preferences.cutoutShort()) + binding.cutoutShort.isVisible = it && ((context as ReaderActivity).hasCutout || !readerPreferences.cutoutShort().get()) + binding.cutoutShort.bindToPreference(readerPreferences.cutoutShort()) } .launchIn((context as ReaderActivity).lifecycleScope) - binding.keepscreen.bindToPreference(preferences.keepScreenOn()) - binding.longTap.bindToPreference(preferences.readWithLongTap()) - binding.alwaysShowChapterTransition.bindToPreference(preferences.alwaysShowChapterTransition()) - // binding.pageTransitions.bindToPreference(preferences.pageTransitions()) + binding.keepscreen.bindToPreference(readerPreferences.keepScreenOn()) + binding.longTap.bindToPreference(readerPreferences.readWithLongTap()) + binding.alwaysShowChapterTransition.bindToPreference(readerPreferences.alwaysShowChapterTransition()) + // binding.pageTransitions.bindToPreference(readerPreferences.pageTransitions()) // SY --> - binding.forceHorzSeekbar.bindToPreference(preferences.forceHorizontalSeekbar()) - binding.landscapeVerticalSeekbar.bindToPreference(preferences.landscapeVerticalSeekbar()) - binding.leftVerticalSeekbar.bindToPreference(preferences.leftVerticalSeekbar()) + binding.forceHorzSeekbar.bindToPreference(readerPreferences.forceHorizontalSeekbar()) + binding.landscapeVerticalSeekbar.bindToPreference(readerPreferences.landscapeVerticalSeekbar()) + binding.leftVerticalSeekbar.bindToPreference(readerPreferences.leftVerticalSeekbar()) - binding.autoWebtoonMode.bindToPreference(preferences.useAutoWebtoon()) + binding.autoWebtoonMode.bindToPreference(readerPreferences.useAutoWebtoon()) // Hides landscapeVerticalSeekbar & leftVerticalSeekbar option when forceHorizontalSeekbar is enabled - binding.forceHorzSeekbar.bindToPreference(preferences.forceHorizontalSeekbar()) - preferences.forceHorizontalSeekbar() + binding.forceHorzSeekbar.bindToPreference(readerPreferences.forceHorizontalSeekbar()) + readerPreferences.forceHorizontalSeekbar() .asHotFlow { binding.landscapeVerticalSeekbar.isGone = it binding.leftVerticalSeekbar.isGone = it } .launchIn((context as ReaderActivity).lifecycleScope) - binding.landscapeVerticalSeekbar.bindToPreference(preferences.landscapeVerticalSeekbar()) - binding.leftVerticalSeekbar.bindToPreference(preferences.leftVerticalSeekbar()) + binding.landscapeVerticalSeekbar.bindToPreference(readerPreferences.landscapeVerticalSeekbar()) + binding.leftVerticalSeekbar.bindToPreference(readerPreferences.leftVerticalSeekbar()) // SY <-- } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt new file mode 100644 index 000000000..9e89f1bb2 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderPreferences.kt @@ -0,0 +1,158 @@ +package eu.kanade.tachiyomi.ui.reader.setting + +import eu.kanade.tachiyomi.core.preference.PreferenceStore +import eu.kanade.tachiyomi.core.preference.getEnum +import eu.kanade.tachiyomi.data.preference.PreferenceValues +import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig + +class ReaderPreferences( + private val preferenceStore: PreferenceStore, +) { + + // region General + + // SY --> + fun pageTransitionsPager() = preferenceStore.getBoolean("pref_enable_transitions_pager_key", true) + + fun pageTransitionsWebtoon() = preferenceStore.getBoolean("pref_enable_transitions_webtoon_key", true) + // SY <-- + + fun doubleTapAnimSpeed() = preferenceStore.getInt("pref_double_tap_anim_speed", 500) + + fun showPageNumber() = preferenceStore.getBoolean("pref_show_page_number_key", true) + + fun showReadingMode() = preferenceStore.getBoolean("pref_show_reading_mode", true) + + fun trueColor() = preferenceStore.getBoolean("pref_true_color_key", false) + + fun fullscreen() = preferenceStore.getBoolean("fullscreen", true) + + fun cutoutShort() = preferenceStore.getBoolean("cutout_short", true) + + fun keepScreenOn() = preferenceStore.getBoolean("pref_keep_screen_on_key", true) + + fun defaultReadingMode() = preferenceStore.getInt("pref_default_reading_mode_key", ReadingModeType.RIGHT_TO_LEFT.flagValue) + + fun defaultOrientationType() = preferenceStore.getInt("pref_default_orientation_type_key", OrientationType.FREE.flagValue) + + fun longStripSplitWebtoon() = preferenceStore.getBoolean("pref_long_strip_split_webtoon", true) + + fun imageScaleType() = preferenceStore.getInt("pref_image_scale_type_key", 1) + + fun zoomStart() = preferenceStore.getInt("pref_zoom_start_key", 1) + + fun readerTheme() = preferenceStore.getInt("pref_reader_theme_key", 1) + + fun alwaysShowChapterTransition() = preferenceStore.getBoolean("always_show_chapter_transition", true) + + fun cropBorders() = preferenceStore.getBoolean("crop_borders", false) + + fun navigateToPan() = preferenceStore.getBoolean("navigate_pan", true) + + fun landscapeZoom() = preferenceStore.getBoolean("landscape_zoom", true) + + fun cropBordersWebtoon() = preferenceStore.getBoolean("crop_borders_webtoon", false) + + fun webtoonSidePadding() = preferenceStore.getInt("webtoon_side_padding", 0) + + fun readerHideThreshold() = preferenceStore.getEnum("reader_hide_threshold", PreferenceValues.ReaderHideThreshold.LOW) + + fun folderPerManga() = preferenceStore.getBoolean("create_folder_per_manga", false) + + fun skipRead() = preferenceStore.getBoolean("skip_read", false) + + fun skipFiltered() = preferenceStore.getBoolean("skip_filtered", true) + + // endregion + + // region Split two page spread + + fun dualPageSplitPaged() = preferenceStore.getBoolean("pref_dual_page_split", false) + + fun dualPageInvertPaged() = preferenceStore.getBoolean("pref_dual_page_invert", false) + + fun dualPageSplitWebtoon() = preferenceStore.getBoolean("pref_dual_page_split_webtoon", false) + + fun dualPageInvertWebtoon() = preferenceStore.getBoolean("pref_dual_page_invert_webtoon", false) + + // endregion + + // region Color filter + + fun customBrightness() = preferenceStore.getBoolean("pref_custom_brightness_key", false) + + fun customBrightnessValue() = preferenceStore.getInt("custom_brightness_value", 0) + + fun colorFilter() = preferenceStore.getBoolean("pref_color_filter_key", false) + + fun colorFilterValue() = preferenceStore.getInt("color_filter_value", 0) + + fun colorFilterMode() = preferenceStore.getInt("color_filter_mode", 0) + + fun grayscale() = preferenceStore.getBoolean("pref_grayscale", false) + + fun invertedColors() = preferenceStore.getBoolean("pref_inverted_colors", false) + + // endregion + + // region Controls + + fun readWithLongTap() = preferenceStore.getBoolean("reader_long_tap", true) + + fun readWithVolumeKeys() = preferenceStore.getBoolean("reader_volume_keys", false) + + fun readWithVolumeKeysInverted() = preferenceStore.getBoolean("reader_volume_keys_inverted", false) + + fun navigationModePager() = preferenceStore.getInt("reader_navigation_mode_pager", 0) + + fun navigationModeWebtoon() = preferenceStore.getInt("reader_navigation_mode_webtoon", 0) + + fun pagerNavInverted() = preferenceStore.getEnum("reader_tapping_inverted", PreferenceValues.TappingInvertMode.NONE) + + fun webtoonNavInverted() = preferenceStore.getEnum("reader_tapping_inverted_webtoon", PreferenceValues.TappingInvertMode.NONE) + + fun showNavigationOverlayNewUser() = preferenceStore.getBoolean("reader_navigation_overlay_new_user", true) + + fun showNavigationOverlayOnStart() = preferenceStore.getBoolean("reader_navigation_overlay_on_start", false) + + // endregion + + // SY --> + + fun readerThreads() = preferenceStore.getInt("eh_reader_threads", 2) + + fun readerInstantRetry() = preferenceStore.getBoolean("eh_reader_instant_retry", true) + + fun aggressivePageLoading() = preferenceStore.getBoolean("eh_aggressive_page_loading", false) + + fun cacheSize() = preferenceStore.getString("eh_cache_size", "75") + + fun autoscrollInterval() = preferenceStore.getFloat("eh_util_autoscroll_interval", 3f) + + fun preserveReadingPosition() = preferenceStore.getBoolean("eh_preserve_reading_position", false) + + fun preloadSize() = preferenceStore.getInt("eh_preload_size", 10) + + fun useAutoWebtoon() = preferenceStore.getBoolean("eh_use_auto_webtoon", true) + + fun webtoonEnableZoomOut() = preferenceStore.getBoolean("webtoon_enable_zoom_out", false) + + fun continuousVerticalTappingByPage() = preferenceStore.getBoolean("continuous_vertical_tapping_by_page", false) + + fun cropBordersContinuousVertical() = preferenceStore.getBoolean("crop_borders_continues_vertical", false) + + fun forceHorizontalSeekbar() = preferenceStore.getBoolean("pref_force_horz_seekbar", false) + + fun landscapeVerticalSeekbar() = preferenceStore.getBoolean("pref_show_vert_seekbar_landscape", false) + + fun leftVerticalSeekbar() = preferenceStore.getBoolean("pref_left_handed_vertical_seekbar", false) + + fun readerBottomButtons() = preferenceStore.getStringSet("reader_bottom_buttons", ReaderBottomButton.BUTTONS_DEFAULTS) + + fun pageLayout() = preferenceStore.getInt("page_layout", PagerConfig.PageLayout.AUTOMATIC) + + fun invertDoublePages() = preferenceStore.getBoolean("invert_double_pages", false) + + fun centerMarginType() = preferenceStore.getInt("center_margin_type", PagerConfig.CenterMarginType.NONE) + // SY <-- +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt index ce064bdf4..329f7ce46 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt @@ -7,7 +7,6 @@ import androidx.core.view.isVisible import androidx.core.widget.NestedScrollView import androidx.lifecycle.lifecycleScope import eu.kanade.tachiyomi.R -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.ReaderReadingModeSettingsBinding import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer @@ -23,7 +22,7 @@ import uy.kohesive.injekt.injectLazy class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : NestedScrollView(context, attrs) { - private val preferences: PreferencesHelper by injectLazy() + private val readerPreferences: ReaderPreferences by injectLazy() private val binding = ReaderReadingModeSettingsBinding.inflate(LayoutInflater.from(context), this, false) @@ -69,35 +68,35 @@ class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attr binding.webtoonPrefsGroup.root.isVisible = false binding.pagerPrefsGroup.root.isVisible = true - binding.pagerPrefsGroup.tappingInverted.bindToPreference(preferences.pagerNavInverted()) + binding.pagerPrefsGroup.tappingInverted.bindToPreference(readerPreferences.pagerNavInverted()) - binding.pagerPrefsGroup.pagerNav.bindToPreference(preferences.navigationModePager()) - preferences.navigationModePager() + binding.pagerPrefsGroup.pagerNav.bindToPreference(readerPreferences.navigationModePager()) + readerPreferences.navigationModePager() .asHotFlow { binding.pagerPrefsGroup.tappingInverted.isVisible = it != 5 } .launchIn((context as ReaderActivity).lifecycleScope) // Makes so that landscape zoom gets hidden away when image scale type is not fit screen - binding.pagerPrefsGroup.scaleType.bindToPreference(preferences.imageScaleType(), 1) - preferences.imageScaleType() + binding.pagerPrefsGroup.scaleType.bindToPreference(readerPreferences.imageScaleType(), 1) + readerPreferences.imageScaleType() .asHotFlow { binding.pagerPrefsGroup.landscapeZoom.isVisible = it == 1 } .launchIn((context as ReaderActivity).lifecycleScope) - binding.pagerPrefsGroup.landscapeZoom.bindToPreference(preferences.landscapeZoom()) + binding.pagerPrefsGroup.landscapeZoom.bindToPreference(readerPreferences.landscapeZoom()) - binding.pagerPrefsGroup.zoomStart.bindToPreference(preferences.zoomStart(), 1) - binding.pagerPrefsGroup.cropBorders.bindToPreference(preferences.cropBorders()) - binding.pagerPrefsGroup.navigatePan.bindToPreference(preferences.navigateToPan()) + binding.pagerPrefsGroup.zoomStart.bindToPreference(readerPreferences.zoomStart(), 1) + binding.pagerPrefsGroup.cropBorders.bindToPreference(readerPreferences.cropBorders()) + binding.pagerPrefsGroup.navigatePan.bindToPreference(readerPreferences.navigateToPan()) - binding.pagerPrefsGroup.dualPageSplit.bindToPreference(preferences.dualPageSplitPaged()) + binding.pagerPrefsGroup.dualPageSplit.bindToPreference(readerPreferences.dualPageSplitPaged()) // Makes it so that dual page invert gets hidden away when dual page split is turned off - preferences.dualPageSplitPaged() + readerPreferences.dualPageSplitPaged() .asHotFlow { binding.pagerPrefsGroup.dualPageInvert.isVisible = it } .launchIn((context as ReaderActivity).lifecycleScope) - binding.pagerPrefsGroup.dualPageInvert.bindToPreference(preferences.dualPageInvertPaged()) + binding.pagerPrefsGroup.dualPageInvert.bindToPreference(readerPreferences.dualPageInvertPaged()) // SY --> - binding.pagerPrefsGroup.pageTransitionsPager.bindToPreference(preferences.pageTransitionsPager()) - binding.pagerPrefsGroup.pageLayout.bindToPreference(preferences.pageLayout()) - binding.pagerPrefsGroup.invertDoublePages.bindToPreference(preferences.invertDoublePages()) - binding.pagerPrefsGroup.centerMarginType.bindToPreference(preferences.centerMarginType()) + binding.pagerPrefsGroup.pageTransitionsPager.bindToPreference(readerPreferences.pageTransitionsPager()) + binding.pagerPrefsGroup.pageLayout.bindToPreference(readerPreferences.pageLayout()) + binding.pagerPrefsGroup.invertDoublePages.bindToPreference(readerPreferences.invertDoublePages()) + binding.pagerPrefsGroup.centerMarginType.bindToPreference(readerPreferences.centerMarginType()) // SY <-- } @@ -108,27 +107,27 @@ class ReaderReadingModeSettings @JvmOverloads constructor(context: Context, attr binding.pagerPrefsGroup.root.isVisible = false binding.webtoonPrefsGroup.root.isVisible = true - binding.webtoonPrefsGroup.tappingInverted.bindToPreference(preferences.webtoonNavInverted()) + binding.webtoonPrefsGroup.tappingInverted.bindToPreference(readerPreferences.webtoonNavInverted()) - binding.webtoonPrefsGroup.webtoonNav.bindToPreference(preferences.navigationModeWebtoon()) - preferences.navigationModeWebtoon() + binding.webtoonPrefsGroup.webtoonNav.bindToPreference(readerPreferences.navigationModeWebtoon()) + readerPreferences.navigationModeWebtoon() .asHotFlow { binding.webtoonPrefsGroup.tappingInverted.isVisible = it != 5 } .launchIn((context as ReaderActivity).lifecycleScope) - binding.webtoonPrefsGroup.cropBordersWebtoon.bindToPreference(preferences.cropBordersWebtoon()) - binding.webtoonPrefsGroup.webtoonSidePadding.bindToIntPreference(preferences.webtoonSidePadding(), R.array.webtoon_side_padding_values) + binding.webtoonPrefsGroup.cropBordersWebtoon.bindToPreference(readerPreferences.cropBordersWebtoon()) + binding.webtoonPrefsGroup.webtoonSidePadding.bindToIntPreference(readerPreferences.webtoonSidePadding(), R.array.webtoon_side_padding_values) - binding.webtoonPrefsGroup.dualPageSplit.bindToPreference(preferences.dualPageSplitWebtoon()) + binding.webtoonPrefsGroup.dualPageSplit.bindToPreference(readerPreferences.dualPageSplitWebtoon()) // Makes it so that dual page invert gets hidden away when dual page split is turned off - preferences.dualPageSplitWebtoon() + readerPreferences.dualPageSplitWebtoon() .asHotFlow { binding.webtoonPrefsGroup.dualPageInvert.isVisible = it } .launchIn((context as ReaderActivity).lifecycleScope) - binding.webtoonPrefsGroup.dualPageInvert.bindToPreference(preferences.dualPageInvertWebtoon()) - binding.webtoonPrefsGroup.longStripSplit.bindToPreference(preferences.longStripSplitWebtoon()) + binding.webtoonPrefsGroup.dualPageInvert.bindToPreference(readerPreferences.dualPageInvertWebtoon()) + binding.webtoonPrefsGroup.longStripSplit.bindToPreference(readerPreferences.longStripSplitWebtoon()) // SY --> - binding.webtoonPrefsGroup.zoomOutWebtoon.bindToPreference(preferences.webtoonEnableZoomOut()) - binding.webtoonPrefsGroup.cropBordersContinuousVertical.bindToPreference(preferences.cropBordersContinuousVertical()) - binding.webtoonPrefsGroup.pageTransitionsWebtoon.bindToPreference(preferences.pageTransitionsWebtoon()) + binding.webtoonPrefsGroup.zoomOutWebtoon.bindToPreference(readerPreferences.webtoonEnableZoomOut()) + binding.webtoonPrefsGroup.cropBordersContinuousVertical.bindToPreference(readerPreferences.cropBordersContinuousVertical()) + binding.webtoonPrefsGroup.pageTransitionsWebtoon.bindToPreference(readerPreferences.pageTransitionsWebtoon()) // SY <-- } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt index 2bb903115..e4e0373cd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt @@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.ui.reader.viewer import eu.kanade.tachiyomi.core.preference.Preference import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode -import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.launchIn @@ -11,7 +11,7 @@ import kotlinx.coroutines.flow.onEach /** * Common configuration for all viewers. */ -abstract class ViewerConfig(preferences: PreferencesHelper, private val scope: CoroutineScope) { +abstract class ViewerConfig(readerPreferences: ReaderPreferences, private val scope: CoroutineScope) { var imagePropertyChangedListener: (() -> Unit)? = null @@ -41,30 +41,30 @@ abstract class ViewerConfig(preferences: PreferencesHelper, private val scope: C protected set init { - preferences.readWithLongTap() + readerPreferences.readWithLongTap() .register({ longTapEnabled = it }) - preferences.doubleTapAnimSpeed() + readerPreferences.doubleTapAnimSpeed() .register({ doubleTapAnimDuration = it }) - preferences.readWithVolumeKeys() + readerPreferences.readWithVolumeKeys() .register({ volumeKeysEnabled = it }) - preferences.readWithVolumeKeysInverted() + readerPreferences.readWithVolumeKeysInverted() .register({ volumeKeysInverted = it }) - preferences.trueColor() + readerPreferences.trueColor() .register({ trueColor = it }, { imagePropertyChangedListener?.invoke() }) - preferences.alwaysShowChapterTransition() + readerPreferences.alwaysShowChapterTransition() .register({ alwaysShowChapterTransition = it }) - forceNavigationOverlay = preferences.showNavigationOverlayNewUser().get() + forceNavigationOverlay = readerPreferences.showNavigationOverlayNewUser().get() if (forceNavigationOverlay) { - preferences.showNavigationOverlayNewUser().set(false) + readerPreferences.showNavigationOverlayNewUser().set(false) } - preferences.showNavigationOverlayOnStart() + readerPreferences.showNavigationOverlayOnStart() .register({ navigationOverlayOnStart = it }) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt index 5c777230b..753c9d33d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt @@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.ui.reader.viewer.pager import android.graphics.Color import androidx.annotation.ColorInt -import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.viewer.ReaderPageImageView import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation @@ -24,10 +24,10 @@ import uy.kohesive.injekt.api.get class PagerConfig( private val viewer: PagerViewer, scope: CoroutineScope, - preferences: PreferencesHelper = Injekt.get(), -) : ViewerConfig(preferences, scope) { + readerPreferences: ReaderPreferences = Injekt.get(), +) : ViewerConfig(readerPreferences, scope) { - var theme = preferences.readerTheme().get() + var theme = readerPreferences.readerTheme().get() private set var automaticBackground = false @@ -57,7 +57,7 @@ class PagerConfig( var shiftDoublePage = false - var doublePages = preferences.pageLayout().get() == PageLayout.DOUBLE_PAGES && !preferences.dualPageSplitPaged().get() + var doublePages = readerPreferences.pageLayout().get() == PageLayout.DOUBLE_PAGES && !readerPreferences.dualPageSplitPaged().get() set(value) { field = value if (!value) { @@ -67,7 +67,7 @@ class PagerConfig( var invertDoublePages = false - var autoDoublePages = preferences.pageLayout().get() == PageLayout.AUTOMATIC + var autoDoublePages = readerPreferences.pageLayout().get() == PageLayout.AUTOMATIC @ColorInt var pageCanvasColor = Color.WHITE @@ -77,7 +77,7 @@ class PagerConfig( // SY <-- init { - preferences.readerTheme() + readerPreferences.readerTheme() .register( { theme = it @@ -86,32 +86,32 @@ class PagerConfig( { imagePropertyChangedListener?.invoke() }, ) - preferences.imageScaleType() + readerPreferences.imageScaleType() .register({ imageScaleType = it }, { imagePropertyChangedListener?.invoke() }) - preferences.zoomStart() + readerPreferences.zoomStart() .register({ zoomTypeFromPreference(it) }, { imagePropertyChangedListener?.invoke() }) - preferences.cropBorders() + readerPreferences.cropBorders() .register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() }) - preferences.navigateToPan() + readerPreferences.navigateToPan() .register({ navigateToPan = it }) - preferences.landscapeZoom() + readerPreferences.landscapeZoom() .register({ landscapeZoom = it }, { imagePropertyChangedListener?.invoke() }) - preferences.navigationModePager() + readerPreferences.navigationModePager() .register({ navigationMode = it }, { updateNavigation(navigationMode) }) - preferences.pagerNavInverted() + readerPreferences.pagerNavInverted() .register({ tappingInverted = it }, { navigator.invertMode = it }) - preferences.pagerNavInverted().changes() + readerPreferences.pagerNavInverted().changes() .drop(1) .onEach { navigationModeChangedListener?.invoke() } .launchIn(scope) - preferences.dualPageSplitPaged() + readerPreferences.dualPageSplitPaged() .register( { dualPageSplit = it }, { @@ -120,13 +120,13 @@ class PagerConfig( }, ) - preferences.dualPageInvertPaged() + readerPreferences.dualPageInvertPaged() .register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() }) // SY --> - preferences.pageTransitionsPager() + readerPreferences.pageTransitionsPager() .register({ usePageTransitions = it }, { imagePropertyChangedListener?.invoke() }) - preferences.readerTheme() + readerPreferences.readerTheme() .register( { themeToColor(it) @@ -136,7 +136,7 @@ class PagerConfig( reloadChapterListener?.invoke(doublePages) }, ) - preferences.pageLayout() + readerPreferences.pageLayout() .register( { autoDoublePages = it == PageLayout.AUTOMATIC @@ -153,10 +153,10 @@ class PagerConfig( }, ) - preferences.centerMarginType() + readerPreferences.centerMarginType() .register({ centerMarginType = it }, { imagePropertyChangedListener?.invoke() }) - preferences.invertDoublePages() + readerPreferences.invertDoublePages() .register({ invertDoublePages = it && dualPageSplit == false }, { imagePropertyChangedListener?.invoke() }) // SY <-- } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt index 83eaf9608..1727a4773 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonConfig.kt @@ -1,6 +1,6 @@ package eu.kanade.tachiyomi.ui.reader.viewer.webtoon -import eu.kanade.tachiyomi.data.preference.PreferencesHelper +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation import eu.kanade.tachiyomi.ui.reader.viewer.navigation.DisabledNavigation @@ -21,8 +21,8 @@ import uy.kohesive.injekt.api.get */ class WebtoonConfig( scope: CoroutineScope, - preferences: PreferencesHelper = Injekt.get(), -) : ViewerConfig(preferences, scope) { + readerPreferences: ReaderPreferences = Injekt.get(), +) : ViewerConfig(readerPreferences, scope) { var themeChangedListener: (() -> Unit)? = null @@ -37,7 +37,7 @@ class WebtoonConfig( var longStripSplitChangedListener: ((Boolean) -> Unit)? = null - val theme = preferences.readerTheme().get() + val theme = readerPreferences.readerTheme().get() // SY --> var usePageTransitions = false @@ -52,29 +52,29 @@ class WebtoonConfig( // SY <-- init { - preferences.cropBordersWebtoon() + readerPreferences.cropBordersWebtoon() .register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() }) - preferences.webtoonSidePadding() + readerPreferences.webtoonSidePadding() .register({ sidePadding = it }, { imagePropertyChangedListener?.invoke() }) - preferences.navigationModeWebtoon() + readerPreferences.navigationModeWebtoon() .register({ navigationMode = it }, { updateNavigation(it) }) - preferences.webtoonNavInverted() + readerPreferences.webtoonNavInverted() .register({ tappingInverted = it }, { navigator.invertMode = it }) - preferences.webtoonNavInverted().changes() + readerPreferences.webtoonNavInverted().changes() .drop(1) .onEach { navigationModeChangedListener?.invoke() } .launchIn(scope) - preferences.dualPageSplitWebtoon() + readerPreferences.dualPageSplitWebtoon() .register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() }) - preferences.dualPageInvertWebtoon() + readerPreferences.dualPageInvertWebtoon() .register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() }) - preferences.longStripSplitWebtoon() + readerPreferences.longStripSplitWebtoon() .register( { longStripSplit = it }, { @@ -83,20 +83,20 @@ class WebtoonConfig( }, ) - preferences.readerTheme().changes() + readerPreferences.readerTheme().changes() .drop(1) .distinctUntilChanged() .onEach { themeChangedListener?.invoke() } .launchIn(scope) // SY --> - preferences.webtoonEnableZoomOut() + readerPreferences.webtoonEnableZoomOut() .register({ enableZoomOut = it }, { zoomPropertyChangedListener?.invoke(it) }) - preferences.cropBordersContinuousVertical() + readerPreferences.cropBordersContinuousVertical() .register({ continuousCropBorders = it }, { imagePropertyChangedListener?.invoke() }) - preferences.pageTransitionsWebtoon() + readerPreferences.pageTransitionsWebtoon() .register({ usePageTransitions = it }, { imagePropertyChangedListener?.invoke() }) // SY <-- } 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 83f19f4f4..9d103be95 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 @@ -12,12 +12,12 @@ import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.WebtoonLayoutManager import eu.kanade.tachiyomi.data.download.DownloadManager -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.reader.ReaderActivity import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.StencilPage import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation.NavigationRegion import eu.kanade.tachiyomi.util.system.logcat @@ -81,7 +81,7 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr val subscriptions = CompositeSubscription() private val threshold: Int = - Injekt.get() + Injekt.get() .readerHideThreshold() .get() .threshold 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 4aa5436fa..cb48a91f4 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 @@ -8,10 +8,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferenceValues.TappingInvertMode -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.reader.setting.OrientationType import eu.kanade.tachiyomi.ui.reader.setting.ReaderBottomButton +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerConfig import eu.kanade.tachiyomi.util.preference.bindTo @@ -27,14 +27,17 @@ import eu.kanade.tachiyomi.util.preference.titleRes import eu.kanade.tachiyomi.util.system.hasDisplayCutout import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get +import uy.kohesive.injekt.injectLazy class SettingsReaderController : SettingsController() { + private val readerPreferences: ReaderPreferences by injectLazy() + override fun setupPreferenceScreen(screen: PreferenceScreen) = screen.apply { titleRes = R.string.pref_category_reader intListPreference { - bindTo(preferences.defaultReadingMode()) + bindTo(readerPreferences.defaultReadingMode()) titleRes = R.string.pref_viewer_type entriesRes = arrayOf( R.string.left_to_right_viewer, @@ -48,44 +51,44 @@ class SettingsReaderController : SettingsController() { summary = "%s" } intListPreference { - bindTo(preferences.doubleTapAnimSpeed()) + bindTo(readerPreferences.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 summary = "%s" } switchPreference { - bindTo(preferences.showReadingMode()) + bindTo(readerPreferences.showReadingMode()) titleRes = R.string.pref_show_reading_mode summaryRes = R.string.pref_show_reading_mode_summary } switchPreference { - bindTo(preferences.showNavigationOverlayOnStart()) + bindTo(readerPreferences.showNavigationOverlayOnStart()) titleRes = R.string.pref_show_navigation_mode summaryRes = R.string.pref_show_navigation_mode_summary } // SY --> switchPreference { - bindTo(preferences.forceHorizontalSeekbar()) + bindTo(readerPreferences.forceHorizontalSeekbar()) titleRes = R.string.pref_force_horz_seekbar summaryRes = R.string.pref_force_horz_seekbar_summary } switchPreference { - bindTo(preferences.landscapeVerticalSeekbar()) + bindTo(readerPreferences.landscapeVerticalSeekbar()) titleRes = R.string.pref_show_vert_seekbar_landscape summaryRes = R.string.pref_show_vert_seekbar_landscape_summary - visibleIf(preferences.forceHorizontalSeekbar()) { !it } + visibleIf(readerPreferences.forceHorizontalSeekbar()) { !it } } switchPreference { - bindTo(preferences.leftVerticalSeekbar()) + bindTo(readerPreferences.leftVerticalSeekbar()) titleRes = R.string.pref_left_handed_vertical_seekbar summaryRes = R.string.pref_left_handed_vertical_seekbar_summary - visibleIf(preferences.forceHorizontalSeekbar()) { !it } + visibleIf(readerPreferences.forceHorizontalSeekbar()) { !it } } // SY <-- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { switchPreference { - bindTo(preferences.trueColor()) + bindTo(readerPreferences.trueColor()) titleRes = R.string.pref_true_color summaryRes = R.string.pref_true_color_summary } @@ -95,7 +98,7 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_category_display intListPreference { - bindTo(preferences.defaultOrientationType()) + bindTo(readerPreferences.defaultOrientationType()) titleRes = R.string.pref_rotation_type entriesRes = arrayOf( R.string.rotation_free, @@ -110,32 +113,32 @@ class SettingsReaderController : SettingsController() { summary = "%s" } intListPreference { - bindTo(preferences.readerTheme()) + bindTo(readerPreferences.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") summary = "%s" } switchPreference { - bindTo(preferences.fullscreen()) + bindTo(readerPreferences.fullscreen()) titleRes = R.string.pref_fullscreen } if (activity?.hasDisplayCutout() == true) { switchPreference { - bindTo(preferences.cutoutShort()) + bindTo(readerPreferences.cutoutShort()) titleRes = R.string.pref_cutout_short - visibleIf(preferences.fullscreen()) { it } + visibleIf(readerPreferences.fullscreen()) { it } } } switchPreference { - bindTo(preferences.keepScreenOn()) + bindTo(readerPreferences.keepScreenOn()) titleRes = R.string.pref_keep_screen_on } switchPreference { - bindTo(preferences.showPageNumber()) + bindTo(readerPreferences.showPageNumber()) titleRes = R.string.pref_show_page_number } } @@ -144,15 +147,15 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_category_reading switchPreference { - bindTo(preferences.skipRead()) + bindTo(readerPreferences.skipRead()) titleRes = R.string.pref_skip_read_chapters } switchPreference { - bindTo(preferences.skipFiltered()) + bindTo(readerPreferences.skipFiltered()) titleRes = R.string.pref_skip_filtered_chapters } switchPreference { - bindTo(preferences.alwaysShowChapterTransition()) + bindTo(readerPreferences.alwaysShowChapterTransition()) titleRes = R.string.pref_always_show_chapter_transition } } @@ -161,7 +164,7 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pager_viewer intListPreference { - bindTo(preferences.navigationModePager()) + bindTo(readerPreferences.navigationModePager()) titleRes = R.string.pref_viewer_nav entries = context.resources.getStringArray(R.array.pager_nav).also { values -> entryValues = values.indices.map { index -> "$index" }.toTypedArray() @@ -169,7 +172,7 @@ class SettingsReaderController : SettingsController() { summary = "%s" } listPreference { - bindTo(preferences.pagerNavInverted()) + bindTo(readerPreferences.pagerNavInverted()) titleRes = R.string.pref_read_with_tapping_inverted entriesRes = arrayOf( R.string.tapping_inverted_none, @@ -184,10 +187,10 @@ class SettingsReaderController : SettingsController() { TappingInvertMode.BOTH.name, ) summary = "%s" - visibleIf(preferences.navigationModePager()) { it != 5 } + visibleIf(readerPreferences.navigationModePager()) { it != 5 } } intListPreference { - bindTo(preferences.imageScaleType()) + bindTo(readerPreferences.imageScaleType()) titleRes = R.string.pref_image_scale_type entriesRes = arrayOf( R.string.scale_type_fit_screen, @@ -201,12 +204,12 @@ class SettingsReaderController : SettingsController() { summary = "%s" } switchPreference { - bindTo(preferences.landscapeZoom()) + bindTo(readerPreferences.landscapeZoom()) titleRes = R.string.pref_landscape_zoom - visibleIf(preferences.imageScaleType()) { it == 1 } + visibleIf(readerPreferences.imageScaleType()) { it == 1 } } intListPreference { - bindTo(preferences.zoomStart()) + bindTo(readerPreferences.zoomStart()) titleRes = R.string.pref_zoom_start entriesRes = arrayOf( R.string.zoom_start_automatic, @@ -218,28 +221,28 @@ class SettingsReaderController : SettingsController() { summary = "%s" } switchPreference { - bindTo(preferences.cropBorders()) + bindTo(readerPreferences.cropBorders()) titleRes = R.string.pref_crop_borders } // SY --> switchPreference { - bindTo(preferences.pageTransitionsPager()) + bindTo(readerPreferences.pageTransitionsPager()) titleRes = R.string.pref_page_transitions } // SY <-- switchPreference { - bindTo(preferences.navigateToPan()) + bindTo(readerPreferences.navigateToPan()) titleRes = R.string.pref_navigate_pan } switchPreference { - bindTo(preferences.dualPageSplitPaged()) + bindTo(readerPreferences.dualPageSplitPaged()) titleRes = R.string.pref_dual_page_split } switchPreference { - bindTo(preferences.dualPageInvertPaged()) + bindTo(readerPreferences.dualPageInvertPaged()) titleRes = R.string.pref_dual_page_invert summaryRes = R.string.pref_dual_page_invert_summary - visibleIf(preferences.dualPageSplitPaged()) { it } + visibleIf(readerPreferences.dualPageSplitPaged()) { it } } } @@ -247,7 +250,7 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.webtoon_viewer intListPreference { - bindTo(preferences.navigationModeWebtoon()) + bindTo(readerPreferences.navigationModeWebtoon()) titleRes = R.string.pref_viewer_nav entries = context.resources.getStringArray(R.array.webtoon_nav).also { values -> entryValues = values.indices.map { index -> "$index" }.toTypedArray() @@ -255,7 +258,7 @@ class SettingsReaderController : SettingsController() { summary = "%s" } listPreference { - bindTo(preferences.webtoonNavInverted()) + bindTo(readerPreferences.webtoonNavInverted()) titleRes = R.string.pref_read_with_tapping_inverted entriesRes = arrayOf( R.string.tapping_inverted_none, @@ -270,10 +273,10 @@ class SettingsReaderController : SettingsController() { TappingInvertMode.BOTH.name, ) summary = "%s" - visibleIf(preferences.navigationModeWebtoon()) { it != 5 } + visibleIf(readerPreferences.navigationModeWebtoon()) { it != 5 } } intListPreference { - bindTo(preferences.webtoonSidePadding()) + bindTo(readerPreferences.webtoonSidePadding()) titleRes = R.string.pref_webtoon_side_padding entriesRes = arrayOf( R.string.webtoon_side_padding_0, @@ -287,7 +290,7 @@ class SettingsReaderController : SettingsController() { summary = "%s" } listPreference { - bindTo(preferences.readerHideThreshold()) + bindTo(readerPreferences.readerHideThreshold()) titleRes = R.string.pref_hide_threshold entriesRes = arrayOf( R.string.pref_highest, @@ -301,31 +304,31 @@ class SettingsReaderController : SettingsController() { summary = "%s" } switchPreference { - bindTo(preferences.cropBordersWebtoon()) + bindTo(readerPreferences.cropBordersWebtoon()) titleRes = R.string.pref_crop_borders } switchPreference { - bindTo(preferences.dualPageSplitWebtoon()) + bindTo(readerPreferences.dualPageSplitWebtoon()) titleRes = R.string.pref_dual_page_split } switchPreference { - bindTo(preferences.dualPageInvertWebtoon()) + bindTo(readerPreferences.dualPageInvertWebtoon()) titleRes = R.string.pref_dual_page_invert summaryRes = R.string.pref_dual_page_invert_summary - visibleIf(preferences.dualPageSplitWebtoon()) { it } + visibleIf(readerPreferences.dualPageSplitWebtoon()) { it } } switchPreference { - bindTo(preferences.longStripSplitWebtoon()) + bindTo(readerPreferences.longStripSplitWebtoon()) titleRes = R.string.pref_long_strip_split summaryRes = R.string.split_tall_images_summary } // SY --> switchPreference { - bindTo(preferences.pageTransitionsWebtoon()) + bindTo(readerPreferences.pageTransitionsWebtoon()) titleRes = R.string.pref_page_transitions } switchPreference { - bindTo(preferences.webtoonEnableZoomOut()) + bindTo(readerPreferences.webtoonEnableZoomOut()) titleRes = R.string.enable_zoom_out } // SY <-- @@ -336,12 +339,12 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.vertical_plus_viewer switchPreference { - bindTo(preferences.continuousVerticalTappingByPage()) + bindTo(readerPreferences.continuousVerticalTappingByPage()) titleRes = R.string.tap_scroll_page summaryRes = R.string.tap_scroll_page_summary } switchPreference { - bindTo(preferences.cropBordersContinuousVertical()) + bindTo(readerPreferences.cropBordersContinuousVertical()) titleRes = R.string.pref_crop_borders } } @@ -351,13 +354,13 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_reader_navigation switchPreference { - bindTo(preferences.readWithVolumeKeys()) + bindTo(readerPreferences.readWithVolumeKeys()) titleRes = R.string.pref_read_with_volume_keys } switchPreference { - bindTo(preferences.readWithVolumeKeysInverted()) + bindTo(readerPreferences.readWithVolumeKeysInverted()) titleRes = R.string.pref_read_with_volume_keys_inverted - visibleIf(preferences.readWithVolumeKeys()) { it } + visibleIf(readerPreferences.readWithVolumeKeys()) { it } } } @@ -365,11 +368,11 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_reader_actions switchPreference { - bindTo(preferences.readWithLongTap()) + bindTo(readerPreferences.readWithLongTap()) titleRes = R.string.pref_read_with_long_tap } switchPreference { - bindTo(preferences.folderPerManga()) + bindTo(readerPreferences.folderPerManga()) titleRes = R.string.pref_create_folder_per_manga summaryRes = R.string.pref_create_folder_per_manga_summary } @@ -380,7 +383,7 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.page_downloading intListPreference { - bindTo(preferences.preloadSize()) + bindTo(readerPreferences.preloadSize()) titleRes = R.string.reader_preload_amount entryValues = arrayOf( "4", @@ -406,7 +409,7 @@ class SettingsReaderController : SettingsController() { } intListPreference { - bindTo(preferences.readerThreads()) + bindTo(readerPreferences.readerThreads()) titleRes = R.string.download_threads entries = arrayOf("1", "2", "3", "4", "5") entryValues = entries @@ -414,7 +417,7 @@ class SettingsReaderController : SettingsController() { } listPreference { - bindTo(preferences.cacheSize()) + bindTo(readerPreferences.cacheSize()) titleRes = R.string.reader_cache_size entryValues = arrayOf( "50", @@ -455,7 +458,7 @@ class SettingsReaderController : SettingsController() { summaryRes = R.string.reader_cache_size_summary } switchPreference { - bindTo(preferences.aggressivePageLoading()) + bindTo(readerPreferences.aggressivePageLoading()) titleRes = R.string.aggressively_load_pages summaryRes = R.string.aggressively_load_pages_summary } @@ -465,17 +468,17 @@ class SettingsReaderController : SettingsController() { titleRes = R.string.pref_category_fork switchPreference { - bindTo(preferences.readerInstantRetry()) + bindTo(readerPreferences.readerInstantRetry()) titleRes = R.string.skip_queue_on_retry summaryRes = R.string.skip_queue_on_retry_summary } switchPreference { - bindTo(preferences.preserveReadingPosition()) + bindTo(readerPreferences.preserveReadingPosition()) titleRes = R.string.preserve_reading_position } switchPreference { - bindTo(preferences.useAutoWebtoon()) + bindTo(readerPreferences.useAutoWebtoon()) titleRes = R.string.auto_webtoon_mode summaryRes = R.string.auto_webtoon_mode_summary } @@ -490,7 +493,7 @@ class SettingsReaderController : SettingsController() { } } intListPreference { - bindTo(preferences.pageLayout()) + bindTo(readerPreferences.pageLayout()) titleRes = R.string.page_layout summaryRes = R.string.automatic_can_still_switch entriesRes = arrayOf( @@ -501,13 +504,13 @@ class SettingsReaderController : SettingsController() { entryValues = arrayOf("0", "1", "2") } switchPreference { - bindTo(preferences.invertDoublePages()) + bindTo(readerPreferences.invertDoublePages()) titleRes = R.string.invert_double_pages - visibleIf(preferences.pageLayout()) { it != PagerConfig.PageLayout.SINGLE_PAGE } + visibleIf(readerPreferences.pageLayout()) { it != PagerConfig.PageLayout.SINGLE_PAGE } } intListPreference { - bindTo(preferences.centerMarginType()) + bindTo(readerPreferences.centerMarginType()) titleRes = R.string.center_margin entriesRes = arrayOf( R.string.center_margin_none, @@ -524,10 +527,10 @@ class SettingsReaderController : SettingsController() { // SY --> class ReaderBottomButtonsDialog : DialogController() { - private val preferences: PreferencesHelper = Injekt.get() + private val readerPreferences: ReaderPreferences = Injekt.get() override fun onCreateDialog(savedViewState: Bundle?): Dialog { - val oldSelection = preferences.readerBottomButtons().get() + val oldSelection = readerPreferences.readerBottomButtons().get() val values = ReaderBottomButton.values() val selection = values.map { it.value in oldSelection } @@ -549,7 +552,7 @@ class SettingsReaderController : SettingsController() { .map { it.value } .toSet() - preferences.readerBottomButtons().set(included) + readerPreferences.readerBottomButtons().set(included) } .setNegativeButton(android.R.string.cancel, null) .create() diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt index 3c3e4b847..bedbc5a27 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/system/ContextExtensions.kt @@ -40,6 +40,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferenceValues import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.base.delegate.ThemingDelegate +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.lang.truncateCenter import logcat.LogPriority import uy.kohesive.injekt.Injekt @@ -295,7 +296,8 @@ fun Context.isNightMode(): Boolean { */ fun Context.createReaderThemeContext(): Context { val preferences = Injekt.get() - val isDarkBackground = when (preferences.readerTheme().get()) { + val readerPreferences = Injekt.get() + val isDarkBackground = when (readerPreferences.readerTheme().get()) { 1, 2 -> true // Black, Gray 3 -> applicationContext.isNightMode() // Automatic bg uses activity background by default else -> false // White diff --git a/app/src/main/java/exh/EXHMigrations.kt b/app/src/main/java/exh/EXHMigrations.kt index 4f4d11602..62f73efcf 100644 --- a/app/src/main/java/exh/EXHMigrations.kt +++ b/app/src/main/java/exh/EXHMigrations.kt @@ -38,6 +38,7 @@ import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.all.Hitomi import eu.kanade.tachiyomi.source.online.all.NHentai import eu.kanade.tachiyomi.ui.reader.setting.OrientationType +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import eu.kanade.tachiyomi.util.preference.minusAssign import eu.kanade.tachiyomi.util.system.DeviceUtil import eu.kanade.tachiyomi.util.system.logcat @@ -98,6 +99,7 @@ object EXHMigrations { sourcePreferences: SourcePreferences, securityPreferences: SecurityPreferences, libraryPreferences: LibraryPreferences, + readerPreferences: ReaderPreferences, ): Boolean { val oldVersion = preferences.ehLastVersionCode().get() try { @@ -265,9 +267,9 @@ object EXHMigrations { } } if (oldVersion under 18) { - val readerTheme = preferences.readerTheme().get() + val readerTheme = readerPreferences.readerTheme().get() if (readerTheme == 4) { - preferences.readerTheme().set(3) + readerPreferences.readerTheme().set(3) } val updateInterval = libraryPreferences.libraryUpdateInterval().get() if (updateInterval == 1 || updateInterval == 2) { @@ -418,8 +420,8 @@ object EXHMigrations { if (oldVersion under 32) { val oldReaderTap = prefs.getBoolean("reader_tap", false) if (!oldReaderTap) { - preferences.navigationModePager().set(5) - preferences.navigationModeWebtoon().set(5) + readerPreferences.navigationModePager().set(5) + readerPreferences.navigationModeWebtoon().set(5) } } if (oldVersion under 38) { diff --git a/app/src/main/java/exh/debug/DebugFunctions.kt b/app/src/main/java/exh/debug/DebugFunctions.kt index d02782d6a..96edb1c2d 100644 --- a/app/src/main/java/exh/debug/DebugFunctions.kt +++ b/app/src/main/java/exh/debug/DebugFunctions.kt @@ -17,6 +17,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.network.NetworkPreferences import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.source.online.all.NHentai +import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences import exh.EXHMigrations import exh.eh.EHentaiThrottleManager import exh.eh.EHentaiUpdateWorker @@ -38,6 +39,7 @@ object DebugFunctions { val sourcePrefs: SourcePreferences by injectLazy() val securityPrefs: SecurityPreferences by injectLazy() val libraryPrefs: LibraryPreferences by injectLazy() + val readerPrefs: ReaderPreferences by injectLazy() val sourceManager: SourceManager by injectLazy() val updateManga: UpdateManga by injectLazy() val getFavorites: GetFavorites by injectLazy() @@ -49,12 +51,12 @@ object DebugFunctions { fun forceUpgradeMigration() { prefs.ehLastVersionCode().set(1) - EXHMigrations.upgrade(app, prefs, networkPrefs, sourcePrefs, securityPrefs, libraryPrefs) + EXHMigrations.upgrade(app, prefs, networkPrefs, sourcePrefs, securityPrefs, libraryPrefs, readerPrefs) } fun forceSetupJobs() { prefs.ehLastVersionCode().set(0) - EXHMigrations.upgrade(app, prefs, networkPrefs, sourcePrefs, securityPrefs, libraryPrefs) + EXHMigrations.upgrade(app, prefs, networkPrefs, sourcePrefs, securityPrefs, libraryPrefs, readerPrefs) } fun resetAgedFlagInEXHManga() {