Skip to content

Commit

Permalink
Split reader preferences from PreferencesHelper (#8042)
Browse files Browse the repository at this point in the history
  • Loading branch information
ghostbear authored Sep 20, 2022
1 parent 2b08964 commit e275897
Show file tree
Hide file tree
Showing 16 changed files with 309 additions and 268 deletions.
4 changes: 4 additions & 0 deletions app/src/main/java/eu/kanade/tachiyomi/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,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 io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory
import kotlinx.serialization.json.Json
Expand Down Expand Up @@ -151,6 +152,9 @@ class PreferenceModule(val application: Application) : InjektModule {
addSingletonFactory {
LibraryPreferences(get())
}
addSingletonFactory {
ReaderPreferences(get())
}
addSingletonFactory {
PreferencesHelper(
context = application,
Expand Down
6 changes: 4 additions & 2 deletions app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -42,6 +43,7 @@ object Migrations {
sourcePreferences: SourcePreferences,
securityPreferences: SecurityPreferences,
libraryPreferences: LibraryPreferences,
readerPreferences: ReaderPreferences,
): Boolean {
val oldVersion = preferences.lastVersionCode().get()
if (oldVersion < BuildConfig.VERSION_CODE) {
Expand Down Expand Up @@ -269,8 +271,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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +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.ReadingModeType
import eu.kanade.tachiyomi.util.system.DeviceUtil
import eu.kanade.tachiyomi.util.system.isDynamicColorAvailable
import java.io.File
Expand Down Expand Up @@ -59,90 +57,6 @@ class PreferencesHelper(

fun themeDarkAmoled() = preferenceStore.getBoolean("pref_theme_dark_amoled_key", false)

fun pageTransitions() = preferenceStore.getBoolean("pref_enable_transitions_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", 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 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), "")
Expand Down Expand Up @@ -175,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)
Expand All @@ -203,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)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ class MainActivity : BaseActivity() {
sourcePreferences = sourcePreferences,
securityPreferences = Injekt.get(),
libraryPreferences = libraryPreferences,
readerPreferences = Injekt.get(),
)
} else {
false
Expand Down
62 changes: 33 additions & 29 deletions app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
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.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
Expand All @@ -85,6 +86,7 @@ import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.flow.sample
import logcat.LogPriority
import nucleus.factory.RequiresPresenter
import uy.kohesive.injekt.injectLazy
import kotlin.math.abs
import kotlin.math.max

Expand Down Expand Up @@ -112,6 +114,8 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
const val SHARED_ELEMENT_NAME = "reader_shared_element_root"
}

private val readerPreferences: ReaderPreferences by injectLazy()

lateinit var binding: ReaderActivityBinding

val hasCutout by lazy { hasDisplayCutout() }
Expand Down Expand Up @@ -446,7 +450,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
presenter.setMangaReadingMode(newReadingMode.flagValue)

menuToggleToast?.cancel()
if (!preferences.showReadingMode().get()) {
if (!readerPreferences.showReadingMode().get()) {
menuToggleToast = toast(newReadingMode.stringRes)
}

Expand All @@ -462,9 +466,9 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
setOnClickListener {
val isPagerType = ReadingModeType.isPagerType(presenter.getMangaReadingMode())
val enabled = if (isPagerType) {
preferences.cropBorders().toggle()
readerPreferences.cropBorders().toggle()
} else {
preferences.cropBordersWebtoon().toggle()
readerPreferences.cropBordersWebtoon().toggle()
}

menuToggleToast?.cancel()
Expand All @@ -478,7 +482,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
}
}
updateCropBordersShortcut()
listOf(preferences.cropBorders(), preferences.cropBordersWebtoon())
listOf(readerPreferences.cropBorders(), readerPreferences.cropBordersWebtoon())
.forEach { pref ->
pref.changes()
.onEach { updateCropBordersShortcut() }
Expand All @@ -493,7 +497,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
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)

Expand Down Expand Up @@ -530,9 +534,9 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
private fun updateCropBordersShortcut() {
val isPagerType = ReadingModeType.isPagerType(presenter.getMangaReadingMode())
val enabled = if (isPagerType) {
preferences.cropBorders().get()
readerPreferences.cropBorders().get()
} else {
preferences.cropBordersWebtoon().get()
readerPreferences.cropBordersWebtoon().get()
}

binding.actionCropBorders.setImageResource(
Expand Down Expand Up @@ -572,11 +576,11 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
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
}
Expand All @@ -598,7 +602,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
binding.readerMenuBottom.startAnimation(bottomAnimation)
}

if (preferences.showPageNumber().get()) {
if (readerPreferences.showPageNumber().get()) {
config?.setPageNumberVisibility(true)
}
}
Expand Down Expand Up @@ -632,10 +636,10 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
binding.viewerContainer.removeAllViews()
}
viewer = newViewer
updateViewerInset(preferences.fullscreen().get())
updateViewerInset(readerPreferences.fullscreen().get())
binding.viewerContainer.addView(newViewer.getView())

if (preferences.showReadingMode().get()) {
if (readerPreferences.showReadingMode().get()) {
showReadingModeToast(presenter.getMangaReadingMode())
}

Expand Down Expand Up @@ -949,10 +953,10 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
* 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()
Expand All @@ -962,41 +966,41 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
}
.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)
Expand Down Expand Up @@ -1060,7 +1064,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
*/
private fun setCustomBrightness(enabled: Boolean) {
if (enabled) {
preferences.customBrightnessValue().changes()
readerPreferences.customBrightnessValue().changes()
.sample(100)
.onEach { setCustomBrightnessValue(it) }
.launchIn(lifecycleScope)
Expand All @@ -1074,7 +1078,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
*/
private fun setColorFilter(enabled: Boolean) {
if (enabled) {
preferences.colorFilterValue().changes()
readerPreferences.colorFilterValue().changes()
.sample(100)
.onEach { setColorFilterValue(it) }
.launchIn(lifecycleScope)
Expand Down Expand Up @@ -1118,7 +1122,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
*/
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) {
Expand Down
Loading

0 comments on commit e275897

Please sign in to comment.