Brings ~55 mod-exclusive files to the upstream-based mod/master-resync branch: Activities (migrated to new ActivityManager pattern): - Clock/Time: SetTimeActivity, SetTimezoneOffsetActivity, NtpSyncActivity - Dictionary: DictionaryDefinitionActivity, DictionarySuggestionsActivity, DictionaryWordSelectActivity, LookedUpWordsActivity - Bookmark: EpubReaderBookmarkSelectionActivity - Book management: BookManageMenuActivity, EndOfBookMenuActivity - OPDS: OpdsServerListActivity, OpdsSettingsActivity - Utility: DirectoryPickerActivity, NumericStepperActivity Utilities (unchanged): - BookManager, BookSettings, BookmarkStore, BootNtpSync - Dictionary, LookupHistory, TimeSync, OpdsServerStore Libraries: PlaceholderCover, TableData, ChapterXPathIndexer Scripts: inject_mod_version, generate_book_icon, preview_placeholder_cover Docs: KOReader sync XPath mapping Migration changes: - ActivityWithSubactivity -> Activity base class - Callback constructors -> finish()/setResult() pattern - enterNewActivity() -> startActivityForResult() - Activity::RenderLock&& -> RenderLock&& These files won't compile yet - they reference mod settings and I18n strings that will be added in subsequent phases. Made-with: Cursor
3.7 KiB
3.7 KiB
Manage Books Feature - Implementation
Task Description
Implemented the full Manage Books feature plan across 10 commits on the mod/manage-books branch. The feature adds Archive, Delete, Delete Cache, and Reindex book management actions, an interactive End of Book menu, and a bugfix for Clear Reading Cache.
Changes Made (10 commits)
COMMIT 1: feat(hal): expose rename() on HalStorage
lib/hal/HalStorage.h/.cpp— Addedrename(path, newPath)forwarding to SDCardManager for file/directory move operations.
COMMIT 2: feat(i18n): add string keys for book management feature
lib/I18n/translations/english.yaml— Added 15 new string keys (STR_MANAGE_BOOK, STR_ARCHIVE_BOOK, STR_UNARCHIVE_BOOK, etc.)lib/I18n/I18nKeys.h— Regenerated via gen_i18n.py
COMMIT 3: feat: add BookManager utility and RecentBooksStore::clear()
- New:
src/util/BookManager.h/.cpp— Static utility namespace witharchiveBook,unarchiveBook,deleteBook,deleteBookCache,reindexBook,isArchived,getBookCachePath. Archive mirrors directory structure under/.archive/and renames cache dirs to match new path hashes. src/RecentBooksStore.h/.cpp— Addedclear()method.
COMMIT 4: feat: add BookManageMenuActivity popup sub-activity
- New:
src/activities/home/BookManageMenuActivity.h/.cpp— Contextual popup menu with Archive/Unarchive, Delete, Delete Cache Only, Reindex Book. Supports long-press on Reindex for REINDEX_FULL (includes cover/thumb regeneration).
COMMIT 5: refactor: change browse activities to ActivityWithSubactivity
HomeActivity,MyLibraryActivity,RecentBooksActivity— Changed base class fromActivitytoActivityWithSubactivity. AddedsubActivityguard at top ofloop().
COMMIT 6: feat: add long-press Confirm for book management in file browser and recents
MyLibraryActivity/RecentBooksActivity— Long-press Confirm on a book opens BookManageMenuActivity. Actions executed via BookManager, file list refreshed afterward.
COMMIT 7: feat: add long-press on HomeActivity for book management and archive browsing
HomeActivity— Long-press Confirm on recent book opens manage menu. Long-press on Browse Files navigates to/.archive/.main.cpp— WiredonMyLibraryOpenWithPathcallback through to HomeActivity constructor.
COMMIT 8: feat: replace Delete Book Cache with Manage Book in reader menu
EpubReaderMenuActivity— Replaced DELETE_CACHE menu item with MANAGE_BOOK. Opens BookManageMenuActivity as sub-activity. Added ARCHIVE_BOOK, DELETE_BOOK, REINDEX_BOOK, REINDEX_BOOK_FULL action types.EpubReaderActivity— Handles new actions via BookManager.
COMMIT 9: feat: add EndOfBookMenuActivity replacing static end-of-book text
- New:
src/activities/reader/EndOfBookMenuActivity.h/.cpp— Interactive popup with Archive, Delete, Back to Beginning, Close Book, Close Menu options. EpubReaderActivity/XtcReaderActivity— Replaced static "End of Book" text with EndOfBookMenuActivity.TxtReaderActivity— Added end-of-book detection (advance past last page triggers menu).
COMMIT 10: fix: ClearCacheActivity now clears txt_* caches and recents list
ClearCacheActivity.cpp— Addedtxt_*to directory prefix check. CallsRECENT_BOOKS.clear()after cache wipe.
New Files
src/util/BookManager.h/.cppsrc/activities/home/BookManageMenuActivity.h/.cppsrc/activities/reader/EndOfBookMenuActivity.h/.cpp
Follow-up Items
- Test on device: verify all menu interactions, archive/unarchive flow, end-of-book menu behavior
- Verify cache rename works correctly across different book formats
- Consider adding translations for new strings in non-English language files