#pragma once #include #include "../ActivityWithSubactivity.h" #include "activities/home/MyLibraryActivity.h" class Epub; class Txt; class ReaderActivity final : public ActivityWithSubactivity { std::string initialBookPath; std::string currentBookPath; // Track current book path for navigation MyLibraryActivity::Tab libraryTab; // Track which tab to return to const std::function onGoBack; const std::function onGoToLibrary; const std::function onGoToClearCache; const std::function onGoToSettings; static std::unique_ptr loadEpub(const std::string& path); static std::unique_ptr loadTxt(const std::string& path); static bool isTxtFile(const std::string& path); static std::string extractFolderPath(const std::string& filePath); void goToLibrary(const std::string& fromBookPath = ""); void onGoToEpubReader(std::unique_ptr epub); void onGoToTxtReader(std::unique_ptr txt); public: explicit ReaderActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, std::string initialBookPath, MyLibraryActivity::Tab libraryTab, const std::function& onGoBack, const std::function& onGoToLibrary, const std::function& onGoToClearCache = nullptr, const std::function& onGoToSettings = nullptr) : ActivityWithSubactivity("Reader", renderer, mappedInput), initialBookPath(std::move(initialBookPath)), libraryTab(libraryTab), onGoBack(onGoBack), onGoToLibrary(onGoToLibrary), onGoToClearCache(onGoToClearCache), onGoToSettings(onGoToSettings) {} void onEnter() override; };