Replace preference getter functions with properties (#3091)
This commit is contained in:
@@ -192,7 +192,7 @@ class ReaderActivity : BaseActivity() {
|
||||
setMenuVisibility(viewModel.state.value.menuVisible)
|
||||
|
||||
// Finish when incognito mode is disabled
|
||||
preferences.incognitoMode().changes()
|
||||
preferences.incognitoMode.changes()
|
||||
.drop(1)
|
||||
.onEach { if (!it) finish() }
|
||||
.launchIn(lifecycleScope)
|
||||
@@ -248,7 +248,7 @@ class ReaderActivity : BaseActivity() {
|
||||
|
||||
private fun ReaderActivityBinding.setComposeOverlay(): Unit = composeOverlay.setComposeContent {
|
||||
val state by viewModel.state.collectAsState()
|
||||
val showPageNumber by readerPreferences.showPageNumber().collectAsState()
|
||||
val showPageNumber by readerPreferences.showPageNumber.collectAsState()
|
||||
val settingsScreenModel = remember {
|
||||
ReaderSettingsScreenModel(
|
||||
readerState = viewModel.state,
|
||||
@@ -304,7 +304,7 @@ class ReaderActivity : BaseActivity() {
|
||||
screenModel = settingsScreenModel,
|
||||
onChange = { stringRes ->
|
||||
menuToggleToast?.cancel()
|
||||
if (!readerPreferences.showReadingMode().get()) {
|
||||
if (!readerPreferences.showReadingMode.get()) {
|
||||
menuToggleToast = toast(stringRes)
|
||||
}
|
||||
},
|
||||
@@ -425,11 +425,11 @@ class ReaderActivity : BaseActivity() {
|
||||
|
||||
@Composable
|
||||
private fun ContentOverlay(state: ReaderViewModel.State) {
|
||||
val flashOnPageChange by readerPreferences.flashOnPageChange().collectAsState()
|
||||
val flashOnPageChange by readerPreferences.flashOnPageChange.collectAsState()
|
||||
|
||||
val colorOverlayEnabled by readerPreferences.colorFilter().collectAsState()
|
||||
val colorOverlay by readerPreferences.colorFilterValue().collectAsState()
|
||||
val colorOverlayMode by readerPreferences.colorFilterMode().collectAsState()
|
||||
val colorOverlayEnabled by readerPreferences.colorFilter.collectAsState()
|
||||
val colorOverlay by readerPreferences.colorFilterValue.collectAsState()
|
||||
val colorOverlayMode by readerPreferences.colorFilterMode.collectAsState()
|
||||
val colorOverlayBlendMode = remember(colorOverlayMode) {
|
||||
ReaderPreferences.ColorFilterMode.getOrNull(colorOverlayMode)?.second
|
||||
}
|
||||
@@ -453,8 +453,8 @@ class ReaderActivity : BaseActivity() {
|
||||
|
||||
val isHttpSource = viewModel.getSource() is HttpSource
|
||||
|
||||
val cropBorderPaged by readerPreferences.cropBorders().collectAsState()
|
||||
val cropBorderWebtoon by readerPreferences.cropBordersWebtoon().collectAsState()
|
||||
val cropBorderPaged by readerPreferences.cropBorders.collectAsState()
|
||||
val cropBorderWebtoon by readerPreferences.cropBordersWebtoon.collectAsState()
|
||||
val isPagerType = ReadingMode.isPagerType(viewModel.getMangaReadingMode())
|
||||
val cropEnabled = if (isPagerType) cropBorderPaged else cropBorderWebtoon
|
||||
|
||||
@@ -508,7 +508,7 @@ class ReaderActivity : BaseActivity() {
|
||||
viewModel.showMenus(visible)
|
||||
if (visible) {
|
||||
windowInsetsController.show(WindowInsetsCompat.Type.systemBars())
|
||||
} else if (readerPreferences.fullscreen().get()) {
|
||||
} else if (readerPreferences.fullscreen.get()) {
|
||||
windowInsetsController.hide(WindowInsetsCompat.Type.systemBars())
|
||||
}
|
||||
}
|
||||
@@ -535,10 +535,10 @@ class ReaderActivity : BaseActivity() {
|
||||
binding.viewerContainer.removeAllViews()
|
||||
}
|
||||
viewModel.onViewerLoaded(newViewer)
|
||||
updateViewerInset(readerPreferences.fullscreen().get(), readerPreferences.drawUnderCutout().get())
|
||||
updateViewerInset(readerPreferences.fullscreen.get(), readerPreferences.drawUnderCutout.get())
|
||||
binding.viewerContainer.addView(newViewer.getView())
|
||||
|
||||
if (readerPreferences.showReadingMode().get()) {
|
||||
if (readerPreferences.showReadingMode.get()) {
|
||||
showReadingModeToast(viewModel.getMangaReadingMode())
|
||||
}
|
||||
|
||||
@@ -839,7 +839,7 @@ class ReaderActivity : BaseActivity() {
|
||||
* Initializes the reader subscriptions.
|
||||
*/
|
||||
init {
|
||||
readerPreferences.readerTheme().changes()
|
||||
readerPreferences.readerTheme.changes()
|
||||
.onEach { theme ->
|
||||
binding.readerContainer.setBackgroundColor(
|
||||
when (theme) {
|
||||
@@ -852,21 +852,21 @@ class ReaderActivity : BaseActivity() {
|
||||
}
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
preferences.displayProfile().changes()
|
||||
preferences.displayProfile.changes()
|
||||
.onEach { setDisplayProfile(it) }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
readerPreferences.keepScreenOn().changes()
|
||||
readerPreferences.keepScreenOn.changes()
|
||||
.onEach(::setKeepScreenOn)
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
readerPreferences.customBrightness().changes()
|
||||
readerPreferences.customBrightness.changes()
|
||||
.onEach(::setCustomBrightness)
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
combine(
|
||||
readerPreferences.grayscale().changes(),
|
||||
readerPreferences.invertedColors().changes(),
|
||||
readerPreferences.grayscale.changes(),
|
||||
readerPreferences.invertedColors.changes(),
|
||||
) { grayscale, invertedColors -> grayscale to invertedColors }
|
||||
.onEach { (grayscale, invertedColors) ->
|
||||
setLayerPaint(grayscale, invertedColors)
|
||||
@@ -874,8 +874,8 @@ class ReaderActivity : BaseActivity() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
combine(
|
||||
readerPreferences.fullscreen().changes(),
|
||||
readerPreferences.drawUnderCutout().changes(),
|
||||
readerPreferences.fullscreen.changes(),
|
||||
readerPreferences.drawUnderCutout.changes(),
|
||||
) { fullscreen, drawUnderCutout -> fullscreen to drawUnderCutout }
|
||||
.onEach { (fullscreen, drawUnderCutout) ->
|
||||
updateViewerInset(fullscreen, drawUnderCutout)
|
||||
@@ -929,7 +929,7 @@ class ReaderActivity : BaseActivity() {
|
||||
*/
|
||||
private fun setCustomBrightness(enabled: Boolean) {
|
||||
if (enabled) {
|
||||
readerPreferences.customBrightnessValue().changes()
|
||||
readerPreferences.customBrightnessValue.changes()
|
||||
.sample(100)
|
||||
.onEach(::setCustomBrightnessValue)
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
@@ -169,11 +169,11 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
?: error("Requested chapter of id $chapterId not found in chapter list")
|
||||
|
||||
val chaptersForReader = when {
|
||||
(readerPreferences.skipRead().get() || readerPreferences.skipFiltered().get()) -> {
|
||||
(readerPreferences.skipRead.get() || readerPreferences.skipFiltered.get()) -> {
|
||||
val filteredChapters = chapters.filterNot {
|
||||
when {
|
||||
readerPreferences.skipRead().get() && it.read -> true
|
||||
readerPreferences.skipFiltered().get() -> {
|
||||
readerPreferences.skipRead.get() && it.read -> true
|
||||
readerPreferences.skipFiltered.get() -> {
|
||||
(manga.unreadFilterRaw == Manga.CHAPTER_SHOW_READ && !it.read) ||
|
||||
(manga.unreadFilterRaw == Manga.CHAPTER_SHOW_UNREAD && it.read) ||
|
||||
(
|
||||
@@ -215,14 +215,14 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
val result = chaptersForReader
|
||||
.sortedWith(getChapterSort(manga, sortDescending = false))
|
||||
.run {
|
||||
if (readerPreferences.skipDupe().get()) {
|
||||
if (readerPreferences.skipDupe.get()) {
|
||||
removeDuplicates(selectedChapter)
|
||||
} else {
|
||||
this
|
||||
}
|
||||
}
|
||||
.run {
|
||||
if (basePreferences.downloadedOnly().get()) {
|
||||
if (basePreferences.downloadedOnly.get()) {
|
||||
filterDownloaded(manga)
|
||||
} else {
|
||||
this
|
||||
@@ -235,7 +235,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
private val incognitoMode: Boolean by lazy { getIncognitoState.await(manga?.source) }
|
||||
private val downloadAheadAmount = downloadPreferences.autoDownloadWhileReading().get()
|
||||
private val downloadAheadAmount = downloadPreferences.autoDownloadWhileReading.get()
|
||||
|
||||
init {
|
||||
// To save state
|
||||
@@ -492,7 +492,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
if (!isNextChapterDownloaded) return@launchIO
|
||||
|
||||
val chaptersToDownload = getNextChapters.await(manga.id, nextChapter.id!!).run {
|
||||
if (readerPreferences.skipDupe().get()) {
|
||||
if (readerPreferences.skipDupe.get()) {
|
||||
removeDuplicates(nextChapter.toDomainChapter()!!)
|
||||
} else {
|
||||
this
|
||||
@@ -522,7 +522,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
* @param currentChapter current chapter, which is going to be marked as read.
|
||||
*/
|
||||
private suspend fun deleteChapterIfNeeded(currentChapter: ReaderChapter) {
|
||||
val removeAfterReadSlots = downloadPreferences.removeAfterReadSlots().get()
|
||||
val removeAfterReadSlots = downloadPreferences.removeAfterReadSlots.get()
|
||||
if (removeAfterReadSlots == -1) return
|
||||
|
||||
// Determine which chapter should be deleted and enqueue
|
||||
@@ -573,7 +573,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
updateTrackChapterRead(readerChapter)
|
||||
deleteChapterIfNeeded(readerChapter)
|
||||
|
||||
val markDuplicateAsRead = libraryPreferences.markDuplicateReadChapterAsRead().get()
|
||||
val markDuplicateAsRead = libraryPreferences.markDuplicateReadChapterAsRead.get()
|
||||
.contains(LibraryPreferences.MARK_DUPLICATE_CHAPTER_READ_EXISTING)
|
||||
if (!markDuplicateAsRead) return
|
||||
|
||||
@@ -677,7 +677,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
* Returns the viewer position used by this manga or the default one.
|
||||
*/
|
||||
fun getMangaReadingMode(resolveDefault: Boolean = true): Int {
|
||||
val default = readerPreferences.defaultReadingMode().get()
|
||||
val default = readerPreferences.defaultReadingMode.get()
|
||||
val readingMode = ReadingMode.fromPreference(manga?.readingMode?.toInt())
|
||||
return when {
|
||||
resolveDefault && readingMode == ReadingMode.DEFAULT -> default
|
||||
@@ -713,7 +713,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
* Returns the orientation type used by this manga or the default one.
|
||||
*/
|
||||
fun getMangaOrientation(resolveDefault: Boolean = true): Int {
|
||||
val default = readerPreferences.defaultOrientationType().get()
|
||||
val default = readerPreferences.defaultOrientationType.get()
|
||||
val orientation = ReaderOrientation.fromPreference(manga?.readerOrientation?.toInt())
|
||||
return when {
|
||||
resolveDefault && orientation == ReaderOrientation.DEFAULT -> default
|
||||
@@ -749,9 +749,9 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
fun toggleCropBorders(): Boolean {
|
||||
val isPagerType = ReadingMode.isPagerType(getMangaReadingMode())
|
||||
return if (isPagerType) {
|
||||
readerPreferences.cropBorders().toggle()
|
||||
readerPreferences.cropBorders.toggle()
|
||||
} else {
|
||||
readerPreferences.cropBordersWebtoon().toggle()
|
||||
readerPreferences.cropBordersWebtoon.toggle()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -818,7 +818,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
val filename = generateFilename(manga, page)
|
||||
|
||||
// Pictures directory.
|
||||
val relativePath = if (readerPreferences.folderPerManga().get()) {
|
||||
val relativePath = if (readerPreferences.folderPerManga.get()) {
|
||||
DiskUtil.buildValidFilename(
|
||||
manga.title,
|
||||
)
|
||||
@@ -922,7 +922,7 @@ class ReaderViewModel @JvmOverloads constructor(
|
||||
*/
|
||||
private fun updateTrackChapterRead(readerChapter: ReaderChapter) {
|
||||
if (incognitoMode) return
|
||||
if (!trackPreferences.autoUpdateTrack().get()) return
|
||||
if (!trackPreferences.autoUpdateTrack.get()) return
|
||||
|
||||
val manga = manga ?: return
|
||||
val context = Injekt.get<Application>()
|
||||
|
||||
@@ -3,139 +3,173 @@ package eu.kanade.tachiyomi.ui.reader.setting
|
||||
import android.os.Build
|
||||
import androidx.compose.ui.graphics.BlendMode
|
||||
import dev.icerock.moko.resources.StringResource
|
||||
import tachiyomi.core.common.preference.Preference
|
||||
import tachiyomi.core.common.preference.PreferenceStore
|
||||
import tachiyomi.core.common.preference.getEnum
|
||||
import tachiyomi.i18n.MR
|
||||
|
||||
class ReaderPreferences(
|
||||
private val preferenceStore: PreferenceStore,
|
||||
preferenceStore: PreferenceStore,
|
||||
) {
|
||||
|
||||
// region General
|
||||
|
||||
fun pageTransitions() = preferenceStore.getBoolean("pref_enable_transitions_key", true)
|
||||
val pageTransitions: Preference<Boolean> = preferenceStore.getBoolean("pref_enable_transitions_key", true)
|
||||
|
||||
fun flashOnPageChange() = preferenceStore.getBoolean("pref_reader_flash", false)
|
||||
val flashOnPageChange: Preference<Boolean> = preferenceStore.getBoolean("pref_reader_flash", false)
|
||||
|
||||
fun flashDurationMillis() = preferenceStore.getInt("pref_reader_flash_duration", MILLI_CONVERSION)
|
||||
val flashDurationMillis: Preference<Int> = preferenceStore.getInt("pref_reader_flash_duration", MILLI_CONVERSION)
|
||||
|
||||
fun flashPageInterval() = preferenceStore.getInt("pref_reader_flash_interval", 1)
|
||||
val flashPageInterval: Preference<Int> = preferenceStore.getInt("pref_reader_flash_interval", 1)
|
||||
|
||||
fun flashColor() = preferenceStore.getEnum("pref_reader_flash_mode", FlashColor.BLACK)
|
||||
val flashColor: Preference<FlashColor> = preferenceStore.getEnum("pref_reader_flash_mode", FlashColor.BLACK)
|
||||
|
||||
fun doubleTapAnimSpeed() = preferenceStore.getInt("pref_double_tap_anim_speed", 500)
|
||||
val doubleTapAnimSpeed: Preference<Int> = preferenceStore.getInt("pref_double_tap_anim_speed", 500)
|
||||
|
||||
fun showPageNumber() = preferenceStore.getBoolean("pref_show_page_number_key", true)
|
||||
val showPageNumber: Preference<Boolean> = preferenceStore.getBoolean("pref_show_page_number_key", true)
|
||||
|
||||
fun showReadingMode() = preferenceStore.getBoolean("pref_show_reading_mode", true)
|
||||
val showReadingMode: Preference<Boolean> = preferenceStore.getBoolean("pref_show_reading_mode", true)
|
||||
|
||||
fun fullscreen() = preferenceStore.getBoolean("fullscreen", true)
|
||||
val fullscreen: Preference<Boolean> = preferenceStore.getBoolean("fullscreen", true)
|
||||
|
||||
fun drawUnderCutout() = preferenceStore.getBoolean("cutout_short", true)
|
||||
val drawUnderCutout: Preference<Boolean> = preferenceStore.getBoolean("cutout_short", true)
|
||||
|
||||
fun keepScreenOn() = preferenceStore.getBoolean("pref_keep_screen_on_key", false)
|
||||
val keepScreenOn: Preference<Boolean> = preferenceStore.getBoolean("pref_keep_screen_on_key", false)
|
||||
|
||||
fun defaultReadingMode() = preferenceStore.getInt(
|
||||
val defaultReadingMode: Preference<Int> = preferenceStore.getInt(
|
||||
"pref_default_reading_mode_key",
|
||||
ReadingMode.RIGHT_TO_LEFT.flagValue,
|
||||
)
|
||||
|
||||
fun defaultOrientationType() = preferenceStore.getInt(
|
||||
val defaultOrientationType: Preference<Int> = preferenceStore.getInt(
|
||||
"pref_default_orientation_type_key",
|
||||
ReaderOrientation.FREE.flagValue,
|
||||
)
|
||||
|
||||
fun webtoonDoubleTapZoomEnabled() = preferenceStore.getBoolean("pref_enable_double_tap_zoom_webtoon", true)
|
||||
val webtoonDoubleTapZoomEnabled: Preference<Boolean> = preferenceStore.getBoolean(
|
||||
"pref_enable_double_tap_zoom_webtoon",
|
||||
true,
|
||||
)
|
||||
|
||||
fun imageScaleType() = preferenceStore.getInt("pref_image_scale_type_key", 1)
|
||||
val imageScaleType: Preference<Int> = preferenceStore.getInt("pref_image_scale_type_key", 1)
|
||||
|
||||
fun zoomStart() = preferenceStore.getInt("pref_zoom_start_key", 1)
|
||||
val zoomStart: Preference<Int> = preferenceStore.getInt("pref_zoom_start_key", 1)
|
||||
|
||||
fun readerTheme() = preferenceStore.getInt("pref_reader_theme_key", 1)
|
||||
val readerTheme: Preference<Int> = preferenceStore.getInt("pref_reader_theme_key", 1)
|
||||
|
||||
fun alwaysShowChapterTransition() = preferenceStore.getBoolean("always_show_chapter_transition", true)
|
||||
val alwaysShowChapterTransition: Preference<Boolean> = preferenceStore.getBoolean(
|
||||
"always_show_chapter_transition",
|
||||
true,
|
||||
)
|
||||
|
||||
fun cropBorders() = preferenceStore.getBoolean("crop_borders", false)
|
||||
val cropBorders: Preference<Boolean> = preferenceStore.getBoolean("crop_borders", false)
|
||||
|
||||
fun navigateToPan() = preferenceStore.getBoolean("navigate_pan", true)
|
||||
val navigateToPan: Preference<Boolean> = preferenceStore.getBoolean("navigate_pan", true)
|
||||
|
||||
fun landscapeZoom() = preferenceStore.getBoolean("landscape_zoom", true)
|
||||
val landscapeZoom: Preference<Boolean> = preferenceStore.getBoolean("landscape_zoom", true)
|
||||
|
||||
fun cropBordersWebtoon() = preferenceStore.getBoolean("crop_borders_webtoon", false)
|
||||
val cropBordersWebtoon: Preference<Boolean> = preferenceStore.getBoolean("crop_borders_webtoon", false)
|
||||
|
||||
fun webtoonSidePadding() = preferenceStore.getInt("webtoon_side_padding", WEBTOON_PADDING_MIN)
|
||||
val webtoonSidePadding: Preference<Int> = preferenceStore.getInt("webtoon_side_padding", WEBTOON_PADDING_MIN)
|
||||
|
||||
fun readerHideThreshold() = preferenceStore.getEnum("reader_hide_threshold", ReaderHideThreshold.LOW)
|
||||
val readerHideThreshold: Preference<ReaderHideThreshold> = preferenceStore.getEnum(
|
||||
"reader_hide_threshold",
|
||||
ReaderHideThreshold.LOW,
|
||||
)
|
||||
|
||||
fun folderPerManga() = preferenceStore.getBoolean("create_folder_per_manga", false)
|
||||
val folderPerManga: Preference<Boolean> = preferenceStore.getBoolean("create_folder_per_manga", false)
|
||||
|
||||
fun skipRead() = preferenceStore.getBoolean("skip_read", false)
|
||||
val skipRead: Preference<Boolean> = preferenceStore.getBoolean("skip_read", false)
|
||||
|
||||
fun skipFiltered() = preferenceStore.getBoolean("skip_filtered", true)
|
||||
val skipFiltered: Preference<Boolean> = preferenceStore.getBoolean("skip_filtered", true)
|
||||
|
||||
fun skipDupe() = preferenceStore.getBoolean("skip_dupe", false)
|
||||
val skipDupe: Preference<Boolean> = preferenceStore.getBoolean("skip_dupe", false)
|
||||
|
||||
fun webtoonDisableZoomOut() = preferenceStore.getBoolean("webtoon_disable_zoom_out", false)
|
||||
val webtoonDisableZoomOut: Preference<Boolean> = preferenceStore.getBoolean("webtoon_disable_zoom_out", false)
|
||||
|
||||
// endregion
|
||||
|
||||
// region Split two page spread
|
||||
// region Split two-page spread
|
||||
|
||||
fun dualPageSplitPaged() = preferenceStore.getBoolean("pref_dual_page_split", false)
|
||||
val dualPageSplitPaged: Preference<Boolean> = preferenceStore.getBoolean("pref_dual_page_split", false)
|
||||
|
||||
fun dualPageInvertPaged() = preferenceStore.getBoolean("pref_dual_page_invert", false)
|
||||
val dualPageInvertPaged: Preference<Boolean> = preferenceStore.getBoolean("pref_dual_page_invert", false)
|
||||
|
||||
fun dualPageSplitWebtoon() = preferenceStore.getBoolean("pref_dual_page_split_webtoon", false)
|
||||
val dualPageSplitWebtoon: Preference<Boolean> = preferenceStore.getBoolean("pref_dual_page_split_webtoon", false)
|
||||
|
||||
fun dualPageInvertWebtoon() = preferenceStore.getBoolean("pref_dual_page_invert_webtoon", false)
|
||||
val dualPageInvertWebtoon: Preference<Boolean> = preferenceStore.getBoolean("pref_dual_page_invert_webtoon", false)
|
||||
|
||||
fun dualPageRotateToFit() = preferenceStore.getBoolean("pref_dual_page_rotate", false)
|
||||
val dualPageRotateToFit: Preference<Boolean> = preferenceStore.getBoolean("pref_dual_page_rotate", false)
|
||||
|
||||
fun dualPageRotateToFitInvert() = preferenceStore.getBoolean("pref_dual_page_rotate_invert", false)
|
||||
val dualPageRotateToFitInvert: Preference<Boolean> = preferenceStore.getBoolean(
|
||||
"pref_dual_page_rotate_invert",
|
||||
false,
|
||||
)
|
||||
|
||||
fun dualPageRotateToFitWebtoon() = preferenceStore.getBoolean("pref_dual_page_rotate_webtoon", false)
|
||||
val dualPageRotateToFitWebtoon: Preference<Boolean> = preferenceStore.getBoolean(
|
||||
"pref_dual_page_rotate_webtoon",
|
||||
false,
|
||||
)
|
||||
|
||||
fun dualPageRotateToFitInvertWebtoon() = preferenceStore.getBoolean("pref_dual_page_rotate_invert_webtoon", false)
|
||||
val dualPageRotateToFitInvertWebtoon: Preference<Boolean> = preferenceStore.getBoolean(
|
||||
"pref_dual_page_rotate_invert_webtoon",
|
||||
false,
|
||||
)
|
||||
|
||||
// endregion
|
||||
|
||||
// region Color filter
|
||||
|
||||
fun customBrightness() = preferenceStore.getBoolean("pref_custom_brightness_key", false)
|
||||
val customBrightness: Preference<Boolean> = preferenceStore.getBoolean("pref_custom_brightness_key", false)
|
||||
|
||||
fun customBrightnessValue() = preferenceStore.getInt("custom_brightness_value", 0)
|
||||
val customBrightnessValue: Preference<Int> = preferenceStore.getInt("custom_brightness_value", 0)
|
||||
|
||||
fun colorFilter() = preferenceStore.getBoolean("pref_color_filter_key", false)
|
||||
val colorFilter: Preference<Boolean> = preferenceStore.getBoolean("pref_color_filter_key", false)
|
||||
|
||||
fun colorFilterValue() = preferenceStore.getInt("color_filter_value", 0)
|
||||
val colorFilterValue: Preference<Int> = preferenceStore.getInt("color_filter_value", 0)
|
||||
|
||||
fun colorFilterMode() = preferenceStore.getInt("color_filter_mode", 0)
|
||||
val colorFilterMode: Preference<Int> = preferenceStore.getInt("color_filter_mode", 0)
|
||||
|
||||
fun grayscale() = preferenceStore.getBoolean("pref_grayscale", false)
|
||||
val grayscale: Preference<Boolean> = preferenceStore.getBoolean("pref_grayscale", false)
|
||||
|
||||
fun invertedColors() = preferenceStore.getBoolean("pref_inverted_colors", false)
|
||||
val invertedColors: Preference<Boolean> = preferenceStore.getBoolean("pref_inverted_colors", false)
|
||||
|
||||
// endregion
|
||||
|
||||
// region Controls
|
||||
|
||||
fun readWithLongTap() = preferenceStore.getBoolean("reader_long_tap", true)
|
||||
val readWithLongTap: Preference<Boolean> = preferenceStore.getBoolean("reader_long_tap", true)
|
||||
|
||||
fun readWithVolumeKeys() = preferenceStore.getBoolean("reader_volume_keys", false)
|
||||
val readWithVolumeKeys: Preference<Boolean> = preferenceStore.getBoolean("reader_volume_keys", false)
|
||||
|
||||
fun readWithVolumeKeysInverted() = preferenceStore.getBoolean("reader_volume_keys_inverted", false)
|
||||
val readWithVolumeKeysInverted: Preference<Boolean> = preferenceStore.getBoolean(
|
||||
"reader_volume_keys_inverted",
|
||||
false,
|
||||
)
|
||||
|
||||
fun navigationModePager() = preferenceStore.getInt("reader_navigation_mode_pager", 0)
|
||||
val navigationModePager: Preference<Int> = preferenceStore.getInt("reader_navigation_mode_pager", 0)
|
||||
|
||||
fun navigationModeWebtoon() = preferenceStore.getInt("reader_navigation_mode_webtoon", 0)
|
||||
val navigationModeWebtoon: Preference<Int> = preferenceStore.getInt("reader_navigation_mode_webtoon", 0)
|
||||
|
||||
fun pagerNavInverted() = preferenceStore.getEnum("reader_tapping_inverted", TappingInvertMode.NONE)
|
||||
val pagerNavInverted: Preference<TappingInvertMode> = preferenceStore.getEnum(
|
||||
"reader_tapping_inverted",
|
||||
TappingInvertMode.NONE,
|
||||
)
|
||||
|
||||
fun webtoonNavInverted() = preferenceStore.getEnum("reader_tapping_inverted_webtoon", TappingInvertMode.NONE)
|
||||
val webtoonNavInverted: Preference<TappingInvertMode> = preferenceStore.getEnum(
|
||||
"reader_tapping_inverted_webtoon",
|
||||
TappingInvertMode.NONE,
|
||||
)
|
||||
|
||||
fun showNavigationOverlayNewUser() = preferenceStore.getBoolean("reader_navigation_overlay_new_user", true)
|
||||
val showNavigationOverlayNewUser: Preference<Boolean> = preferenceStore.getBoolean(
|
||||
"reader_navigation_overlay_new_user",
|
||||
true,
|
||||
)
|
||||
|
||||
fun showNavigationOverlayOnStart() = preferenceStore.getBoolean("reader_navigation_overlay_on_start", false)
|
||||
val showNavigationOverlayOnStart: Preference<Boolean> = preferenceStore.getBoolean(
|
||||
"reader_navigation_overlay_on_start",
|
||||
false,
|
||||
)
|
||||
|
||||
// endregion
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ open class ReaderPageImageView @JvmOverloads constructor(
|
||||
) : FrameLayout(context, attrs, defStyleAttrs, defStyleRes) {
|
||||
|
||||
private val alwaysDecodeLongStripWithSSIV by lazy {
|
||||
Injekt.get<BasePreferences>().alwaysDecodeLongStripWithSSIV().get()
|
||||
Injekt.get<BasePreferences>().alwaysDecodeLongStripWithSSIV.get()
|
||||
}
|
||||
|
||||
private var pageView: View? = null
|
||||
|
||||
@@ -46,30 +46,30 @@ abstract class ViewerConfig(readerPreferences: ReaderPreferences, private val sc
|
||||
protected set
|
||||
|
||||
init {
|
||||
readerPreferences.readWithLongTap()
|
||||
readerPreferences.readWithLongTap
|
||||
.register({ longTapEnabled = it })
|
||||
|
||||
readerPreferences.pageTransitions()
|
||||
readerPreferences.pageTransitions
|
||||
.register({ usePageTransitions = it })
|
||||
|
||||
readerPreferences.doubleTapAnimSpeed()
|
||||
readerPreferences.doubleTapAnimSpeed
|
||||
.register({ doubleTapAnimDuration = it })
|
||||
|
||||
readerPreferences.readWithVolumeKeys()
|
||||
readerPreferences.readWithVolumeKeys
|
||||
.register({ volumeKeysEnabled = it })
|
||||
|
||||
readerPreferences.readWithVolumeKeysInverted()
|
||||
readerPreferences.readWithVolumeKeysInverted
|
||||
.register({ volumeKeysInverted = it })
|
||||
|
||||
readerPreferences.alwaysShowChapterTransition()
|
||||
readerPreferences.alwaysShowChapterTransition
|
||||
.register({ alwaysShowChapterTransition = it })
|
||||
|
||||
forceNavigationOverlay = readerPreferences.showNavigationOverlayNewUser().get()
|
||||
forceNavigationOverlay = readerPreferences.showNavigationOverlayNewUser.get()
|
||||
if (forceNavigationOverlay) {
|
||||
readerPreferences.showNavigationOverlayNewUser().set(false)
|
||||
readerPreferences.showNavigationOverlayNewUser.set(false)
|
||||
}
|
||||
|
||||
readerPreferences.showNavigationOverlayOnStart()
|
||||
readerPreferences.showNavigationOverlayOnStart
|
||||
.register({ navigationOverlayOnStart = it })
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ class PagerConfig(
|
||||
readerPreferences: ReaderPreferences = Injekt.get(),
|
||||
) : ViewerConfig(readerPreferences, scope) {
|
||||
|
||||
var theme = readerPreferences.readerTheme().get()
|
||||
var theme = readerPreferences.readerTheme.get()
|
||||
private set
|
||||
|
||||
var automaticBackground = false
|
||||
@@ -49,7 +49,7 @@ class PagerConfig(
|
||||
private set
|
||||
|
||||
init {
|
||||
readerPreferences.readerTheme()
|
||||
readerPreferences.readerTheme
|
||||
.register(
|
||||
{
|
||||
theme = it
|
||||
@@ -58,32 +58,32 @@ class PagerConfig(
|
||||
{ imagePropertyChangedListener?.invoke() },
|
||||
)
|
||||
|
||||
readerPreferences.imageScaleType()
|
||||
readerPreferences.imageScaleType
|
||||
.register({ imageScaleType = it }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.zoomStart()
|
||||
readerPreferences.zoomStart
|
||||
.register({ zoomTypeFromPreference(it) }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.cropBorders()
|
||||
readerPreferences.cropBorders
|
||||
.register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.navigateToPan()
|
||||
readerPreferences.navigateToPan
|
||||
.register({ navigateToPan = it })
|
||||
|
||||
readerPreferences.landscapeZoom()
|
||||
readerPreferences.landscapeZoom
|
||||
.register({ landscapeZoom = it }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.navigationModePager()
|
||||
readerPreferences.navigationModePager
|
||||
.register({ navigationMode = it }, { updateNavigation(navigationMode) })
|
||||
|
||||
readerPreferences.pagerNavInverted()
|
||||
readerPreferences.pagerNavInverted
|
||||
.register({ tappingInverted = it }, { navigator.invertMode = it })
|
||||
readerPreferences.pagerNavInverted().changes()
|
||||
readerPreferences.pagerNavInverted.changes()
|
||||
.drop(1)
|
||||
.onEach { navigationModeChangedListener?.invoke() }
|
||||
.launchIn(scope)
|
||||
|
||||
readerPreferences.dualPageSplitPaged()
|
||||
readerPreferences.dualPageSplitPaged
|
||||
.register(
|
||||
{ dualPageSplit = it },
|
||||
{
|
||||
@@ -92,16 +92,16 @@ class PagerConfig(
|
||||
},
|
||||
)
|
||||
|
||||
readerPreferences.dualPageInvertPaged()
|
||||
readerPreferences.dualPageInvertPaged
|
||||
.register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.dualPageRotateToFit()
|
||||
readerPreferences.dualPageRotateToFit
|
||||
.register(
|
||||
{ dualPageRotateToFit = it },
|
||||
{ imagePropertyChangedListener?.invoke() },
|
||||
)
|
||||
|
||||
readerPreferences.dualPageRotateToFitInvert()
|
||||
readerPreferences.dualPageRotateToFitInvert
|
||||
.register(
|
||||
{ dualPageRotateToFitInvert = it },
|
||||
{ imagePropertyChangedListener?.invoke() },
|
||||
|
||||
@@ -42,56 +42,56 @@ class WebtoonConfig(
|
||||
|
||||
var doubleTapZoomChangedListener: ((Boolean) -> Unit)? = null
|
||||
|
||||
val theme = readerPreferences.readerTheme().get()
|
||||
val theme = readerPreferences.readerTheme.get()
|
||||
|
||||
init {
|
||||
readerPreferences.cropBordersWebtoon()
|
||||
readerPreferences.cropBordersWebtoon
|
||||
.register({ imageCropBorders = it }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.webtoonSidePadding()
|
||||
readerPreferences.webtoonSidePadding
|
||||
.register({ sidePadding = it }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.navigationModeWebtoon()
|
||||
readerPreferences.navigationModeWebtoon
|
||||
.register({ navigationMode = it }, { updateNavigation(it) })
|
||||
|
||||
readerPreferences.webtoonNavInverted()
|
||||
readerPreferences.webtoonNavInverted
|
||||
.register({ tappingInverted = it }, { navigator.invertMode = it })
|
||||
readerPreferences.webtoonNavInverted().changes()
|
||||
readerPreferences.webtoonNavInverted.changes()
|
||||
.drop(1)
|
||||
.onEach { navigationModeChangedListener?.invoke() }
|
||||
.launchIn(scope)
|
||||
|
||||
readerPreferences.dualPageSplitWebtoon()
|
||||
readerPreferences.dualPageSplitWebtoon
|
||||
.register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.dualPageInvertWebtoon()
|
||||
readerPreferences.dualPageInvertWebtoon
|
||||
.register({ dualPageInvert = it }, { imagePropertyChangedListener?.invoke() })
|
||||
|
||||
readerPreferences.dualPageRotateToFitWebtoon()
|
||||
readerPreferences.dualPageRotateToFitWebtoon
|
||||
.register(
|
||||
{ dualPageRotateToFit = it },
|
||||
{ imagePropertyChangedListener?.invoke() },
|
||||
)
|
||||
|
||||
readerPreferences.dualPageRotateToFitInvertWebtoon()
|
||||
readerPreferences.dualPageRotateToFitInvertWebtoon
|
||||
.register(
|
||||
{ dualPageRotateToFitInvert = it },
|
||||
{ imagePropertyChangedListener?.invoke() },
|
||||
)
|
||||
|
||||
readerPreferences.webtoonDisableZoomOut()
|
||||
readerPreferences.webtoonDisableZoomOut
|
||||
.register(
|
||||
{ zoomOutDisabled = it },
|
||||
{ zoomPropertyChangedListener?.invoke(it) },
|
||||
)
|
||||
|
||||
readerPreferences.webtoonDoubleTapZoomEnabled()
|
||||
readerPreferences.webtoonDoubleTapZoomEnabled
|
||||
.register(
|
||||
{ doubleTapZoom = it },
|
||||
{ doubleTapZoomChangedListener?.invoke(it) },
|
||||
)
|
||||
|
||||
readerPreferences.readerTheme().changes()
|
||||
readerPreferences.readerTheme.changes()
|
||||
.drop(1)
|
||||
.distinctUntilChanged()
|
||||
.onEach { themeChangedListener?.invoke() }
|
||||
|
||||
@@ -74,7 +74,7 @@ class WebtoonViewer(val activity: ReaderActivity, val isContinuous: Boolean = tr
|
||||
|
||||
private val threshold: Int =
|
||||
Injekt.get<ReaderPreferences>()
|
||||
.readerHideThreshold()
|
||||
.readerHideThreshold
|
||||
.get()
|
||||
.threshold
|
||||
|
||||
|
||||
Reference in New Issue
Block a user