Navigation settings and split invert tapping for webtoon and pager (#4233)

This commit is contained in:
Andreas E
2021-01-03 16:50:38 +01:00
committed by GitHub
parent cea4911c4d
commit 3bf7c74f93
10 changed files with 345 additions and 243 deletions
@@ -4,7 +4,7 @@ import android.os.Bundle
import android.widget.CompoundButton
import android.widget.Spinner
import androidx.annotation.ArrayRes
import androidx.core.view.isInvisible
import androidx.core.view.isGone
import androidx.core.view.isVisible
import androidx.core.widget.NestedScrollView
import com.google.android.material.bottomsheet.BottomSheetDialog
@@ -39,7 +39,6 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
super.onCreate(savedInstanceState)
initGeneralPreferences()
initNavigationPreferences()
when (activity.viewer) {
is PagerViewer -> initPagerPreferences()
@@ -83,36 +82,33 @@ class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDia
* Init the preferences for the pager reader.
*/
private fun initPagerPreferences() {
binding.webtoonPrefsGroup.isInvisible = true
binding.pagerPrefsGroup.isVisible = true
binding.webtoonPrefsGroup.root.isGone = true
binding.pagerPrefsGroup.root.isVisible = true
binding.pagerNav.bindToPreference(preferences.navigationModePager())
binding.scaleType.bindToPreference(preferences.imageScaleType(), 1)
binding.zoomStart.bindToPreference(preferences.zoomStart(), 1)
binding.cropBorders.bindToPreference(preferences.cropBorders())
binding.pagerPrefsGroup.tappingPrefsGroup.isVisible = preferences.readWithTapping().get()
binding.pagerPrefsGroup.tappingInverted.bindToPreference(preferences.pagerNavInverted())
binding.pagerPrefsGroup.pagerNav.bindToPreference(preferences.navigationModePager())
binding.pagerPrefsGroup.scaleType.bindToPreference(preferences.imageScaleType(), 1)
binding.pagerPrefsGroup.zoomStart.bindToPreference(preferences.zoomStart(), 1)
binding.pagerPrefsGroup.cropBorders.bindToPreference(preferences.cropBorders())
}
/**
* Init the preferences for the webtoon reader.
*/
private fun initWebtoonPreferences() {
binding.pagerPrefsGroup.isInvisible = true
binding.webtoonPrefsGroup.isVisible = true
binding.pagerPrefsGroup.root.isGone = true
binding.webtoonPrefsGroup.root.isVisible = true
binding.webtoonNav.bindToPreference(preferences.navigationModeWebtoon())
binding.cropBordersWebtoon.bindToPreference(preferences.cropBordersWebtoon())
binding.webtoonSidePadding.bindToIntPreference(preferences.webtoonSidePadding(), R.array.webtoon_side_padding_values)
}
binding.webtoonPrefsGroup.tappingPrefsGroup.isVisible = preferences.readWithTapping().get()
/**
* Init the preferences for navigation.
*/
private fun initNavigationPreferences() {
if (!preferences.readWithTapping().get()) {
binding.navigationPrefsGroup.isVisible = false
}
binding.webtoonPrefsGroup.tappingInverted.bindToPreference(preferences.webtoonNavInverted())
binding.tappingInverted.bindToPreference(preferences.readWithTappingInverted())
binding.webtoonPrefsGroup.webtoonNav.bindToPreference(preferences.navigationModeWebtoon())
binding.webtoonPrefsGroup.cropBordersWebtoon.bindToPreference(preferences.cropBordersWebtoon())
binding.webtoonPrefsGroup.webtoonSidePadding.bindToIntPreference(preferences.webtoonSidePadding(), R.array.webtoon_side_padding_values)
}
/**
@@ -38,9 +38,6 @@ abstract class ViewerConfig(preferences: PreferencesHelper) {
preferences.readWithTapping()
.register({ tappingEnabled = it })
preferences.readWithTappingInverted()
.register({ tappingInverted = it }, { navigator.invertMode = it })
preferences.readWithLongTap()
.register({ longTapEnabled = it })
@@ -36,6 +36,9 @@ class PagerConfig(private val viewer: PagerViewer, preferences: PreferencesHelpe
preferences.navigationModePager()
.register({ navigationMode = it }, { updateNavigation(navigationMode) })
preferences.pagerNavInverted()
.register({ tappingInverted = it }, { navigator.invertMode = it })
}
private fun zoomTypeFromPreference(value: Int) {
@@ -29,6 +29,9 @@ class WebtoonConfig(preferences: PreferencesHelper = Injekt.get()) : ViewerConfi
preferences.navigationModeWebtoon()
.register({ navigationMode = it }, { updateNavigation(it) })
preferences.webtoonNavInverted()
.register({ tappingInverted = it }, { navigator.invertMode = it })
}
override var navigator: ViewerNavigation = defaultNavigation()