Move PageLayout to enum and new file

This commit is contained in:
Jays2Kings 2021-05-22 19:29:11 -04:00
parent a99b9b7fcc
commit 1fba86886c
6 changed files with 40 additions and 31 deletions

View File

@ -12,9 +12,9 @@ import com.tfcporciuncula.flow.FlowSharedPreferences
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.track.TrackService
import eu.kanade.tachiyomi.ui.library.filter.FilterBottomSheet
import eu.kanade.tachiyomi.ui.reader.settings.PageLayout
import eu.kanade.tachiyomi.ui.reader.settings.ReaderBottomButton
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PageLayout
import eu.kanade.tachiyomi.ui.recents.RecentMangaAdapter
import eu.kanade.tachiyomi.util.system.Themes
import kotlinx.coroutines.CoroutineScope
@ -173,7 +173,7 @@ class PreferencesHelper(val context: Context) {
fun webtoonNavInverted() = flowPrefs.getEnum(Keys.webtoonNavInverted, ViewerNavigation.TappingInvertMode.NONE)
fun pageLayout() = flowPrefs.getInt(Keys.pageLayout, PageLayout.AUTOMATIC)
fun pageLayout() = flowPrefs.getInt(Keys.pageLayout, PageLayout.AUTOMATIC.value)
fun invertDoublePages() = flowPrefs.getBoolean(Keys.invertDoublePages, false)

View File

@ -52,12 +52,12 @@ import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
import eu.kanade.tachiyomi.ui.reader.settings.OrientationType
import eu.kanade.tachiyomi.ui.reader.settings.PageLayout
import eu.kanade.tachiyomi.ui.reader.settings.ReaderBottomButton
import eu.kanade.tachiyomi.ui.reader.settings.ReadingModeType
import eu.kanade.tachiyomi.ui.reader.settings.TabbedReaderSettingsSheet
import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
import eu.kanade.tachiyomi.ui.reader.viewer.pager.L2RPagerViewer
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PageLayout
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer
import eu.kanade.tachiyomi.ui.reader.viewer.pager.R2LPagerViewer
import eu.kanade.tachiyomi.ui.reader.viewer.pager.VerticalPagerViewer
@ -356,8 +356,8 @@ class ReaderActivity :
}
fun setBottomNavButtons(pageLayout: Int) {
val isDoublePage = pageLayout == PageLayout.DOUBLE_PAGES ||
(pageLayout == PageLayout.AUTOMATIC && (viewer as? PagerViewer)?.config?.doublePages ?: false)
val isDoublePage = pageLayout == PageLayout.DOUBLE_PAGES.value ||
(pageLayout == PageLayout.AUTOMATIC.value && (viewer as? PagerViewer)?.config?.doublePages ?: false)
binding.chaptersSheet.doublePage.setImageDrawable(
ContextCompat.getDrawable(
this,
@ -574,7 +574,7 @@ class ReaderActivity :
with(binding.chaptersSheet) {
doublePage.setOnClickListener {
if (preferences.pageLayout().get() == PageLayout.AUTOMATIC) {
if (preferences.pageLayout().get() == PageLayout.AUTOMATIC.value) {
(viewer as? PagerViewer)?.config?.let { config ->
config.doublePages = !config.doublePages
reloadChapters(config.doublePages, true)
@ -893,7 +893,7 @@ class ReaderActivity :
}
if (newViewer is PagerViewer) {
if (preferences.pageLayout().get() == PageLayout.AUTOMATIC) {
if (preferences.pageLayout().get() == PageLayout.AUTOMATIC.value) {
setDoublePageMode(newViewer)
}
lastShiftDoubleState?.let { newViewer.config.shiftDoublePage = it }

View File

@ -0,0 +1,18 @@
package eu.kanade.tachiyomi.ui.reader.settings
import androidx.annotation.StringRes
import eu.kanade.tachiyomi.R
enum class PageLayout(val value: Int, @StringRes val stringRes: Int, @StringRes private val _fullStringRes: Int? = null) {
SINGLE_PAGE(0, R.string.single_page),
DOUBLE_PAGES(1, R.string.double_pages),
AUTOMATIC(2, R.string.automatic, R.string.automatic_orientation),
;
@StringRes val fullStringRes = _fullStringRes ?: stringRes
companion object {
fun fromPreference(preference: Int): PageLayout =
values().find { it.value == preference } ?: SINGLE_PAGE
}
}

View File

@ -8,7 +8,6 @@ import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.databinding.ReaderPagedLayoutBinding
import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PageLayout
import eu.kanade.tachiyomi.util.bindToPreference
import eu.kanade.tachiyomi.util.lang.addBetaTag
import eu.kanade.tachiyomi.widget.BaseReaderSettingsView
@ -96,6 +95,6 @@ class ReaderPagedView @JvmOverloads constructor(context: Context, attrs: Attribu
false
}
binding.extendPastCutout.isVisible = show && isFullFit && hasCutout
binding.invertDoublePages.isVisible = show && preferences.pageLayout().get() != PageLayout.SINGLE_PAGE
binding.invertDoublePages.isVisible = show && preferences.pageLayout().get() != PageLayout.SINGLE_PAGE.value
}
}

View File

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.reader.viewer.pager
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.reader.settings.PageLayout
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerConfig
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation
import eu.kanade.tachiyomi.ui.reader.viewer.navigation.EdgeNavigation
@ -45,7 +46,7 @@ class PagerConfig(
var shiftDoublePage = false
var doublePages = preferences.pageLayout().get() == PageLayout.DOUBLE_PAGES
var doublePages = preferences.pageLayout().get() == PageLayout.DOUBLE_PAGES.value
set(value) {
field = value
if (!value) {
@ -55,7 +56,7 @@ class PagerConfig(
var invertDoublePages = false
var autoDoublePages = preferences.pageLayout().get() == PageLayout.AUTOMATIC
var autoDoublePages = preferences.pageLayout().get() == PageLayout.AUTOMATIC.value
init {
preferences.pageTransitions()
@ -101,18 +102,18 @@ class PagerConfig(
.asFlow()
.drop(1)
.onEach {
autoDoublePages = it == PageLayout.AUTOMATIC
autoDoublePages = it == PageLayout.AUTOMATIC.value
if (!autoDoublePages) {
doublePages = it == PageLayout.DOUBLE_PAGES
doublePages = it == PageLayout.DOUBLE_PAGES.value
}
reloadChapterListener?.invoke(doublePages)
}
.launchIn(scope)
preferences.pageLayout()
.register({
autoDoublePages = it == PageLayout.AUTOMATIC
autoDoublePages = it == PageLayout.AUTOMATIC.value
if (!autoDoublePages) {
doublePages = it == PageLayout.DOUBLE_PAGES
doublePages = it == PageLayout.DOUBLE_PAGES.value
}
})
@ -182,9 +183,3 @@ class PagerConfig(
const val CUTOUT_IGNORE = 2
}
}
object PageLayout {
const val SINGLE_PAGE = 0
const val DOUBLE_PAGES = 1
const val AUTOMATIC = 2
}

View File

@ -7,8 +7,8 @@ import eu.kanade.tachiyomi.data.preference.asImmediateFlow
import eu.kanade.tachiyomi.data.preference.asImmediateFlowIn
import eu.kanade.tachiyomi.ui.reader.settings.ReaderBottomButton
import eu.kanade.tachiyomi.ui.reader.settings.OrientationType
import eu.kanade.tachiyomi.ui.reader.settings.PageLayout
import eu.kanade.tachiyomi.ui.reader.viewer.ViewerNavigation
import eu.kanade.tachiyomi.ui.reader.viewer.pager.PageLayout
import eu.kanade.tachiyomi.util.lang.addBetaTag
import eu.kanade.tachiyomi.util.system.isTablet
import eu.kanade.tachiyomi.util.view.activityBinding
@ -249,22 +249,19 @@ class SettingsReaderController : SettingsController() {
key = Keys.pageLayout
title = context.getString(R.string.page_layout).addBetaTag(context)
dialogTitleRes = R.string.page_layout
entriesRes = arrayOf(
R.string.single_page,
R.string.double_pages,
R.string.automatic_orientation
)
entryRange = 0..2
defaultValue = 2
val enumConstants = PageLayout.values()
entriesRes = enumConstants.map { it.fullStringRes }.toTypedArray()
entryValues = enumConstants.map { it.value }
defaultValue = PageLayout.AUTOMATIC.value
}
infoPreference(R.string.automatic_can_still_switch).apply {
preferences.pageLayout().asImmediateFlowIn(viewScope) { isVisible = it == PageLayout.AUTOMATIC }
preferences.pageLayout().asImmediateFlowIn(viewScope) { isVisible = it == PageLayout.AUTOMATIC.value }
}
switchPreference {
key = Keys.invertDoublePages
titleRes = R.string.invert_double_pages
defaultValue = false
preferences.pageLayout().asImmediateFlowIn(viewScope) { isVisible = it != PageLayout.SINGLE_PAGE }
preferences.pageLayout().asImmediateFlowIn(viewScope) { isVisible = it != PageLayout.SINGLE_PAGE.value }
}
}
preferenceCategory {