Add vertical chapter navigator for paged reader with height adjustment option (#3531)

This commit is contained in:
AntsyLich
2026-07-09 14:11:56 +06:00
committed by GitHub
parent 8407439b8a
commit 44780e74b5
22 changed files with 261 additions and 64 deletions
@@ -461,8 +461,12 @@ class ReaderActivity : BaseActivity() {
val isPagerType = ReadingMode.isPagerType(viewModel.getMangaReadingMode())
val cropEnabled = if (isPagerType) cropBorderPaged else cropBorderWebtoon
val verticalNavigatorForLongStrip by readerPreferences.verticalNavigatorForLongStrip.collectAsState()
val verticalNavigatorModes by readerPreferences.verticalNavigator.collectAsState()
val verticalNavigator = verticalNavigatorModes.contains(
ReadingMode.fromPreference(viewModel.getMangaReadingMode()),
)
val verticalNavigatorOnLeft by readerPreferences.verticalNavigatorOnLeft.collectAsState()
val verticalNavigatorHeight by readerPreferences.verticalNavigatorHeight.collectAsState()
ReaderAppBars(
visible = state.menuVisible,
@@ -477,7 +481,7 @@ class ReaderActivity : BaseActivity() {
onOpenInBrowser = ::openChapterInBrowser.takeIf { isHttpSource },
onShare = ::shareChapter.takeIf { isHttpSource },
chapterNavigatorType = if (isPagerType || !verticalNavigatorForLongStrip) {
chapterNavigatorType = if (!verticalNavigator) {
if (state.viewer is R2LPagerViewer) {
ChapterNavigatorType.HORIZONTAL_RTL
} else {
@@ -490,6 +494,7 @@ class ReaderActivity : BaseActivity() {
ChapterNavigatorType.VERTICAL_RIGHT
}
},
verticalNavigatorHeight = verticalNavigatorHeight / 100f,
onNextChapter = ::loadNextChapter,
enabledNext = state.viewerChapters?.nextChapter != null,
onPreviousChapter = ::loadPreviousChapter,
@@ -6,6 +6,7 @@ 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.core.common.preference.getEnumSet
import tachiyomi.i18n.MR
class ReaderPreferences(
@@ -28,16 +29,21 @@ class ReaderPreferences(
val showPageNumber: Preference<Boolean> = preferenceStore.getBoolean("pref_show_page_number_key", true)
val verticalNavigatorForLongStrip: Preference<Boolean> = preferenceStore.getBoolean(
"pref_webtoon_vertical_navigator",
true,
val verticalNavigator: Preference<Set<ReadingMode>> = preferenceStore.getEnumSet(
"pref_vertical_navigator",
emptySet(),
)
val verticalNavigatorOnLeft: Preference<Boolean> = preferenceStore.getBoolean(
"pref_webtoon_vertical_navigator_on_left",
"pref_vertical_navigator_on_left",
false,
)
val verticalNavigatorHeight: Preference<Int> = preferenceStore.getInt(
"pref_vertical_navigator_height",
65,
)
val showReadingMode: Preference<Boolean> = preferenceStore.getBoolean("pref_show_reading_mode", true)
val fullscreen: Preference<Boolean> = preferenceStore.getBoolean("fullscreen", true)