feat(reader): radical UI simplification — only 5 tools, no overflow menu

- epubOverflowMenuSections: removed CUSTOMIZE_TOOLBAR, HIDDEN_TOOLS,
  TAP_TO_TURN, VOLUME_SCROLL, PAGE_TURN_ANIM, KEEP_SCREEN_ON,
  VISUAL_OPTIONS, AUTO_SCROLL, TTS_SETTINGS, BOOK_REPLACEMENTS, FILE_INFO
- defaultReaderHiddenTools: hide everything except THEME, SLIDER, TOC,
  BOOKMARK, READING_MODE
- defaultReaderToolOrder: only THEME, TOC, SLIDER (top bar)
- defaultReaderBottomTools: only SLIDER, TOC (bottom bar)
- loadHiddenTools: merge new defaults into saved prefs on upgrade
- Result: reader shows only font/theme, navigation slider, chapters (TOC),
  bookmark, reading mode — like Myne/Book's Story
- ':app:assembleOssDebug' passes, APK deployed.
This commit is contained in:
Atte149 2026-06-28 00:54:02 +03:00
parent bf964b3ee8
commit 9e0ac90613
2 changed files with 30 additions and 21 deletions

View file

@ -275,39 +275,40 @@ internal fun epubOverflowMenuSections(
hasDeleteReflow: Boolean,
hasFileInfo: Boolean = true
): List<EpubOverflowMenuSection> = buildList {
add(EpubOverflowMenuSection.CUSTOMIZE_TOOLBAR)
if (hasHiddenToolbarTools) add(EpubOverflowMenuSection.HIDDEN_TOOLS)
if (hasToggleReflow) add(EpubOverflowMenuSection.VIEW_ORIGINAL_PDF)
if (hasDeleteReflow) add(EpubOverflowMenuSection.DELETE_TEXT_VIEW)
if (!hiddenTools.contains(ReaderTool.READING_MODE.name)) add(EpubOverflowMenuSection.READING_MODE)
if (!hiddenTools.contains(ReaderTool.BOOKMARK.name)) add(EpubOverflowMenuSection.BOOKMARK)
if (!hiddenTools.contains(ReaderTool.TAP_TO_TURN.name)) add(EpubOverflowMenuSection.TAP_TO_TURN)
if (!hiddenTools.contains(ReaderTool.VOLUME_SCROLL.name)) add(EpubOverflowMenuSection.VOLUME_SCROLL)
if (!hiddenTools.contains(ReaderTool.PAGE_TURN_ANIM.name)) add(EpubOverflowMenuSection.PAGE_TURN_ANIM)
if (!hiddenTools.contains(ReaderTool.KEEP_SCREEN_ON.name)) add(EpubOverflowMenuSection.KEEP_SCREEN_ON)
if (!hiddenTools.contains(ReaderTool.VISUAL_OPTIONS.name)) add(EpubOverflowMenuSection.VISUAL_OPTIONS)
if (!hiddenTools.contains(ReaderTool.AUTO_SCROLL.name)) add(EpubOverflowMenuSection.AUTO_SCROLL)
if (!hiddenTools.contains(ReaderTool.BOOK_REPLACEMENTS.name)) add(EpubOverflowMenuSection.BOOK_REPLACEMENTS)
if (
!hiddenTools.contains(ReaderTool.TTS_SETTINGS.name) ||
!hiddenTools.contains(ReaderTool.TTS_REPLACEMENTS.name)
) {
add(EpubOverflowMenuSection.TTS_SETTINGS)
}
if (hasFileInfo && !hiddenTools.contains(ReaderTool.FILE_INFO.name)) {
add(EpubOverflowMenuSection.FILE_INFO)
}
}
internal fun defaultReaderHiddenTools(): Set<String> = setOf(
ReaderTool.SCREEN_ORIENTATION.name,
ReaderTool.BRIGHTNESS.name
ReaderTool.BRIGHTNESS.name,
ReaderTool.DICTIONARY.name,
ReaderTool.FORMAT.name,
ReaderTool.SEARCH.name,
ReaderTool.AI_FEATURES.name,
ReaderTool.TTS_CONTROLS.name,
ReaderTool.FILE_INFO.name,
ReaderTool.TAP_TO_TURN.name,
ReaderTool.VOLUME_SCROLL.name,
ReaderTool.PAGE_TURN_ANIM.name,
ReaderTool.KEEP_SCREEN_ON.name,
ReaderTool.VISUAL_OPTIONS.name,
ReaderTool.AUTO_SCROLL.name,
ReaderTool.TTS_SETTINGS.name,
ReaderTool.TTS_REPLACEMENTS.name,
ReaderTool.BOOK_REPLACEMENTS.name,
)
internal fun defaultReaderToolOrder(): List<ReaderTool> = ReaderTool.entries.toList()
internal fun defaultReaderToolOrder(): List<ReaderTool> = listOf(
ReaderTool.THEME,
ReaderTool.TOC,
ReaderTool.SLIDER,
)
internal fun defaultReaderBottomTools(): Set<String> {
return ReaderTool.entries.filter { it.category == "Bottom Bar" }.map { it.name }.toSet()
return setOf(ReaderTool.SLIDER.name, ReaderTool.TOC.name)
}
internal fun buildReaderToolbarItems(

View file

@ -380,6 +380,14 @@ private fun loadHiddenTools(context: Context): Set<String> {
return minimalHidden
}
// If saved tools don't include the new defaults, merge them in
val allShouldBeHidden = defaultReaderHiddenTools()
val merged = savedHiddenTools + allShouldBeHidden
if (merged != savedHiddenTools) {
prefs.edit { putStringSet(HIDDEN_TOOLS_KEY, merged) }
return merged
}
return savedHiddenTools
}