Split reader preferences from PreferencesHelper (#8042)
(cherry picked from commit e275897bf9f3def5ccf17978d64b2969c8c85de7) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderGeneralSettings.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/setting/ReaderReadingModeSettings.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/ViewerConfig.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt # app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt
This commit is contained in:
parent
9a3c4e9d13
commit
bcc3a40b36
@ -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,
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -147,6 +147,7 @@ class MainActivity : BaseActivity() {
|
||||
sourcePreferences = sourcePreferences,
|
||||
securityPreferences = Injekt.get(),
|
||||
libraryPreferences = libraryPreferences,
|
||||
readerPreferences = Injekt.get(),
|
||||
)
|
||||
} else {
|
||||
false
|
||||
|
@ -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 {
|
||||
|
@ -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<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() }
|
||||
@ -561,7 +564,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||
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<ReaderPresenter>() {
|
||||
// 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<ReaderPresenter>() {
|
||||
}
|
||||
}
|
||||
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<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)
|
||||
|
||||
@ -666,14 +669,14 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||
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<ReaderPresenter>() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
binding.ehAutoscrollFreq.setText(
|
||||
preferences.autoscrollInterval().get().let {
|
||||
readerPreferences.autoscrollInterval().get().let {
|
||||
if (it == -1f) {
|
||||
""
|
||||
} else {
|
||||
@ -713,11 +716,11 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||
|
||||
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<ReaderPresenter>() {
|
||||
}
|
||||
|
||||
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<ReaderPresenter>() {
|
||||
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<ReaderPresenter>() {
|
||||
|
||||
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<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
|
||||
}
|
||||
@ -1000,7 +1003,7 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||
|
||||
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<ReaderPresenter>() {
|
||||
binding.readerMenuBottom.startAnimation(bottomAnimation)
|
||||
}
|
||||
|
||||
if (preferences.showPageNumber().get()) {
|
||||
if (readerPreferences.showPageNumber().get()) {
|
||||
config?.setPageNumberVisibility(true)
|
||||
}
|
||||
}
|
||||
@ -1064,22 +1067,22 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||
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<ReaderPresenter>() {
|
||||
// --> 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<ReaderPresenter>() {
|
||||
// --> 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<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()
|
||||
@ -1523,41 +1526,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)
|
||||
@ -1565,18 +1568,18 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
|
||||
.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<ReaderPresenter>() {
|
||||
*/
|
||||
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<ReaderPresenter>() {
|
||||
*/
|
||||
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<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) {
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
) {
|
||||
|
@ -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 {
|
||||
|
@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 <--
|
||||
}
|
||||
}
|
||||
|
@ -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 <--
|
||||
}
|
@ -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 <--
|
||||
}
|
||||
}
|
||||
|
@ -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 })
|
||||
}
|
||||
|
||||
|
@ -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 <--
|
||||
}
|
||||
|
@ -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 <--
|
||||
}
|
||||
|
@ -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<PreferencesHelper>()
|
||||
Injekt.get<ReaderPreferences>()
|
||||
.readerHideThreshold()
|
||||
.get()
|
||||
.threshold
|
||||
|
@ -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()
|
||||
|
@ -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<PreferencesHelper>()
|
||||
val isDarkBackground = when (preferences.readerTheme().get()) {
|
||||
val readerPreferences = Injekt.get<ReaderPreferences>()
|
||||
val isDarkBackground = when (readerPreferences.readerTheme().get()) {
|
||||
1, 2 -> true // Black, Gray
|
||||
3 -> applicationContext.isNightMode() // Automatic bg uses activity background by default
|
||||
else -> false // White
|
||||
|
@ -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) {
|
||||
|
@ -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() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user