From 9e0ac906135e78fce6f05be6a2c329a60d7f9302 Mon Sep 17 00:00:00 2001 From: Atte149 Date: Sun, 28 Jun 2026 00:54:02 +0300 Subject: [PATCH] =?UTF-8?q?feat(reader):=20radical=20UI=20simplification?= =?UTF-8?q?=20=E2=80=94=20only=205=20tools,=20no=20overflow=20menu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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. --- .../reader/epubreader/EpubReaderControls.kt | 43 ++++++++++--------- .../reader/epubreader/EpubReaderScreen.kt | 8 ++++ 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/dueattendant149/bookreader/reader/epubreader/EpubReaderControls.kt b/app/src/main/java/com/dueattendant149/bookreader/reader/epubreader/EpubReaderControls.kt index 3bb0ae3..85699b6 100644 --- a/app/src/main/java/com/dueattendant149/bookreader/reader/epubreader/EpubReaderControls.kt +++ b/app/src/main/java/com/dueattendant149/bookreader/reader/epubreader/EpubReaderControls.kt @@ -275,39 +275,40 @@ internal fun epubOverflowMenuSections( hasDeleteReflow: Boolean, hasFileInfo: Boolean = true ): List = 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 = 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.entries.toList() +internal fun defaultReaderToolOrder(): List = listOf( + ReaderTool.THEME, + ReaderTool.TOC, + ReaderTool.SLIDER, +) internal fun defaultReaderBottomTools(): Set { - return ReaderTool.entries.filter { it.category == "Bottom Bar" }.map { it.name }.toSet() + return setOf(ReaderTool.SLIDER.name, ReaderTool.TOC.name) } internal fun buildReaderToolbarItems( diff --git a/app/src/main/java/com/dueattendant149/bookreader/reader/epubreader/EpubReaderScreen.kt b/app/src/main/java/com/dueattendant149/bookreader/reader/epubreader/EpubReaderScreen.kt index 5bab49c..bf1f35b 100644 --- a/app/src/main/java/com/dueattendant149/bookreader/reader/epubreader/EpubReaderScreen.kt +++ b/app/src/main/java/com/dueattendant149/bookreader/reader/epubreader/EpubReaderScreen.kt @@ -380,6 +380,14 @@ private fun loadHiddenTools(context: Context): Set { 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 }