feat(reader): add smaller tap zone preference for navigation regions (#867)
This commit is contained in:
parent
24b6c4aa3c
commit
5f762beb90
11 changed files with 58 additions and 11 deletions
|
|
@ -16,6 +16,7 @@ import kotlinx.collections.immutable.persistentListOf
|
||||||
import kotlinx.collections.immutable.persistentMapOf
|
import kotlinx.collections.immutable.persistentMapOf
|
||||||
import kotlinx.collections.immutable.toImmutableMap
|
import kotlinx.collections.immutable.toImmutableMap
|
||||||
import tachiyomi.i18n.MR
|
import tachiyomi.i18n.MR
|
||||||
|
import tachiyomi.i18n.kmk.KMR
|
||||||
import tachiyomi.i18n.sy.SYMR
|
import tachiyomi.i18n.sy.SYMR
|
||||||
import tachiyomi.presentation.core.i18n.pluralStringResource
|
import tachiyomi.presentation.core.i18n.pluralStringResource
|
||||||
import tachiyomi.presentation.core.i18n.stringResource
|
import tachiyomi.presentation.core.i18n.stringResource
|
||||||
|
|
@ -65,6 +66,12 @@ object SettingsReaderScreen : SearchableSettings {
|
||||||
title = stringResource(MR.strings.pref_show_navigation_mode),
|
title = stringResource(MR.strings.pref_show_navigation_mode),
|
||||||
subtitle = stringResource(MR.strings.pref_show_navigation_mode_summary),
|
subtitle = stringResource(MR.strings.pref_show_navigation_mode_summary),
|
||||||
),
|
),
|
||||||
|
// KMK -->
|
||||||
|
Preference.PreferenceItem.SwitchPreference(
|
||||||
|
preference = readerPref.smallerTapZone(),
|
||||||
|
title = stringResource(KMR.strings.pref_viewer_nav_smaller_tap_zone),
|
||||||
|
),
|
||||||
|
// KMK <--
|
||||||
// SY -->
|
// SY -->
|
||||||
Preference.PreferenceItem.SwitchPreference(
|
Preference.PreferenceItem.SwitchPreference(
|
||||||
preference = readerPref.forceHorizontalSeekbar(),
|
preference = readerPref.forceHorizontalSeekbar(),
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel
|
||||||
import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode
|
import eu.kanade.tachiyomi.ui.reader.setting.ReadingMode
|
||||||
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
|
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer
|
||||||
import tachiyomi.i18n.MR
|
import tachiyomi.i18n.MR
|
||||||
|
import tachiyomi.i18n.kmk.KMR
|
||||||
import tachiyomi.i18n.sy.SYMR
|
import tachiyomi.i18n.sy.SYMR
|
||||||
import tachiyomi.presentation.core.components.CheckboxItem
|
import tachiyomi.presentation.core.components.CheckboxItem
|
||||||
import tachiyomi.presentation.core.components.HeadingItem
|
import tachiyomi.presentation.core.components.HeadingItem
|
||||||
|
|
@ -111,6 +112,13 @@ private fun ColumnScope.PagerViewerSettings(screenModel: ReaderSettingsScreenMod
|
||||||
}
|
}
|
||||||
// SY <--
|
// SY <--
|
||||||
|
|
||||||
|
// KMK -->
|
||||||
|
CheckboxItem(
|
||||||
|
label = stringResource(KMR.strings.pref_viewer_nav_smaller_tap_zone),
|
||||||
|
pref = screenModel.preferences.smallerTapZone(),
|
||||||
|
)
|
||||||
|
// KMK <--
|
||||||
|
|
||||||
CheckboxItem(
|
CheckboxItem(
|
||||||
label = stringResource(MR.strings.pref_crop_borders),
|
label = stringResource(MR.strings.pref_crop_borders),
|
||||||
pref = screenModel.preferences.cropBorders(),
|
pref = screenModel.preferences.cropBorders(),
|
||||||
|
|
@ -203,6 +211,13 @@ private fun ColumnScope.WebtoonViewerSettings(screenModel: ReaderSettingsScreenM
|
||||||
pillColor = MaterialTheme.colorScheme.surfaceContainerHighest,
|
pillColor = MaterialTheme.colorScheme.surfaceContainerHighest,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// KMK -->
|
||||||
|
CheckboxItem(
|
||||||
|
label = stringResource(KMR.strings.pref_viewer_nav_smaller_tap_zone),
|
||||||
|
pref = screenModel.preferences.smallerTapZone(),
|
||||||
|
)
|
||||||
|
// KMK <--
|
||||||
|
|
||||||
CheckboxItem(
|
CheckboxItem(
|
||||||
label = stringResource(MR.strings.pref_crop_borders),
|
label = stringResource(MR.strings.pref_crop_borders),
|
||||||
pref = screenModel.preferences.cropBordersWebtoon(),
|
pref = screenModel.preferences.cropBordersWebtoon(),
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,10 @@ class ReaderPreferences(
|
||||||
|
|
||||||
fun showNavigationOverlayOnStart() = preferenceStore.getBoolean("reader_navigation_overlay_on_start", false)
|
fun showNavigationOverlayOnStart() = preferenceStore.getBoolean("reader_navigation_overlay_on_start", false)
|
||||||
|
|
||||||
|
// KMK -->
|
||||||
|
fun smallerTapZone() = preferenceStore.getBoolean("reader_navigation_smaller_tap_zone", false)
|
||||||
|
// KMK <--
|
||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import dev.icerock.moko.resources.StringResource
|
||||||
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
|
import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
|
||||||
import eu.kanade.tachiyomi.util.lang.invert
|
import eu.kanade.tachiyomi.util.lang.invert
|
||||||
import tachiyomi.i18n.MR
|
import tachiyomi.i18n.MR
|
||||||
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
abstract class ViewerNavigation {
|
abstract class ViewerNavigation {
|
||||||
|
|
||||||
|
|
@ -51,4 +52,11 @@ abstract class ViewerNavigation {
|
||||||
else -> NavigationRegion.MENU
|
else -> NavigationRegion.MENU
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// KMK -->
|
||||||
|
private val readerPreferences: ReaderPreferences by injectLazy()
|
||||||
|
protected val regionSize1
|
||||||
|
get() = if (readerPreferences.smallerTapZone().get()) 0.25f else 0.33f
|
||||||
|
protected val regionSize2 = 1f - regionSize1
|
||||||
|
// KMK <--
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,15 +17,15 @@ class EdgeNavigation : ViewerNavigation() {
|
||||||
|
|
||||||
override var regionList: List<Region> = listOf(
|
override var regionList: List<Region> = listOf(
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0f, 0f, 0.33f, 1f),
|
rectF = RectF(0f, 0f, regionSize1, 1f),
|
||||||
type = NavigationRegion.NEXT,
|
type = NavigationRegion.NEXT,
|
||||||
),
|
),
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0.33f, 0.66f, 0.66f, 1f),
|
rectF = RectF(regionSize1, regionSize2, regionSize2, 1f),
|
||||||
type = NavigationRegion.PREV,
|
type = NavigationRegion.PREV,
|
||||||
),
|
),
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0.66f, 0f, 1f, 1f),
|
rectF = RectF(regionSize2, 0f, 1f, 1f),
|
||||||
type = NavigationRegion.NEXT,
|
type = NavigationRegion.NEXT,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,11 @@ class KindlishNavigation : ViewerNavigation() {
|
||||||
|
|
||||||
override var regionList: List<Region> = listOf(
|
override var regionList: List<Region> = listOf(
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0.33f, 0.33f, 1f, 1f),
|
rectF = RectF(regionSize1, regionSize1, 1f, 1f),
|
||||||
type = NavigationRegion.NEXT,
|
type = NavigationRegion.NEXT,
|
||||||
),
|
),
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0f, 0.33f, 0.33f, 1f),
|
rectF = RectF(0f, regionSize1, regionSize1, 1f),
|
||||||
type = NavigationRegion.PREV,
|
type = NavigationRegion.PREV,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,19 +17,19 @@ open class LNavigation : ViewerNavigation() {
|
||||||
|
|
||||||
override var regionList: List<Region> = listOf(
|
override var regionList: List<Region> = listOf(
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0f, 0.33f, 0.33f, 0.66f),
|
rectF = RectF(0f, regionSize1, regionSize1, regionSize2),
|
||||||
type = NavigationRegion.PREV,
|
type = NavigationRegion.PREV,
|
||||||
),
|
),
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0f, 0f, 1f, 0.33f),
|
rectF = RectF(0f, 0f, 1f, regionSize1),
|
||||||
type = NavigationRegion.PREV,
|
type = NavigationRegion.PREV,
|
||||||
),
|
),
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0.66f, 0.33f, 1f, 0.66f),
|
rectF = RectF(regionSize2, regionSize1, 1f, regionSize2),
|
||||||
type = NavigationRegion.NEXT,
|
type = NavigationRegion.NEXT,
|
||||||
),
|
),
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0f, 0.66f, 1f, 1f),
|
rectF = RectF(0f, regionSize2, 1f, 1f),
|
||||||
type = NavigationRegion.NEXT,
|
type = NavigationRegion.NEXT,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,11 @@ class RightAndLeftNavigation : ViewerNavigation() {
|
||||||
|
|
||||||
override var regionList: List<Region> = listOf(
|
override var regionList: List<Region> = listOf(
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0f, 0f, 0.33f, 1f),
|
rectF = RectF(0f, 0f, regionSize1, 1f),
|
||||||
type = NavigationRegion.LEFT,
|
type = NavigationRegion.LEFT,
|
||||||
),
|
),
|
||||||
Region(
|
Region(
|
||||||
rectF = RectF(0.66f, 0f, 1f, 1f),
|
rectF = RectF(regionSize2, 0f, 1f, 1f),
|
||||||
type = NavigationRegion.RIGHT,
|
type = NavigationRegion.RIGHT,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,12 @@ class PagerConfig(
|
||||||
.drop(1)
|
.drop(1)
|
||||||
.onEach { navigationModeChangedListener?.invoke() }
|
.onEach { navigationModeChangedListener?.invoke() }
|
||||||
.launchIn(scope)
|
.launchIn(scope)
|
||||||
|
// KMK -->
|
||||||
|
readerPreferences.smallerTapZone().changes()
|
||||||
|
.drop(1)
|
||||||
|
.onEach { updateNavigation(navigationMode) }
|
||||||
|
.launchIn(scope)
|
||||||
|
// KMK <--
|
||||||
|
|
||||||
readerPreferences.dualPageSplitPaged()
|
readerPreferences.dualPageSplitPaged()
|
||||||
.register(
|
.register(
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,12 @@ class WebtoonConfig(
|
||||||
.drop(1)
|
.drop(1)
|
||||||
.onEach { navigationModeChangedListener?.invoke() }
|
.onEach { navigationModeChangedListener?.invoke() }
|
||||||
.launchIn(scope)
|
.launchIn(scope)
|
||||||
|
// KMK -->
|
||||||
|
readerPreferences.smallerTapZone().changes()
|
||||||
|
.drop(1)
|
||||||
|
.onEach { updateNavigation(navigationMode) }
|
||||||
|
.launchIn(scope)
|
||||||
|
// KMK <--
|
||||||
|
|
||||||
readerPreferences.dualPageSplitWebtoon()
|
readerPreferences.dualPageSplitWebtoon()
|
||||||
.register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() })
|
.register({ dualPageSplit = it }, { imagePropertyChangedListener?.invoke() })
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
<string name="action_copy_to_clipboard_first_page">Copy first page to clipboard</string>
|
<string name="action_copy_to_clipboard_first_page">Copy first page to clipboard</string>
|
||||||
<string name="action_copy_to_clipboard_second_page">Copy second page to clipboard</string>
|
<string name="action_copy_to_clipboard_second_page">Copy second page to clipboard</string>
|
||||||
<string name="action_copy_to_clipboard_combined_page">Copy combined page to clipboard</string>
|
<string name="action_copy_to_clipboard_combined_page">Copy combined page to clipboard</string>
|
||||||
|
<string name="pref_viewer_nav_smaller_tap_zone">Smaller tap zones</string>
|
||||||
<!-- Preferences -->
|
<!-- Preferences -->
|
||||||
<!-- Appearance section -->
|
<!-- Appearance section -->
|
||||||
<string name="pref_custom_theme_style">Custom theme style</string>
|
<string name="pref_custom_theme_style">Custom theme style</string>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue