diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt index 95f519d598..8cf02c4a96 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferencesHelper.kt @@ -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) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 80c18aab89..a772a8506c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -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 } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/PageLayout.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/PageLayout.kt new file mode 100644 index 0000000000..7fa43319a0 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/PageLayout.kt @@ -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 + } +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/ReaderPagedView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/ReaderPagedView.kt index 37599c0390..448db56c23 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/ReaderPagedView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/settings/ReaderPagedView.kt @@ -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 } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt index bd0973e08a..60a3afa09d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerConfig.kt @@ -2,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 -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt index 8776e16b6b..af225e7ea1 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsReaderController.kt @@ -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 {