#pragma once #include #include #include #include "../Activity.h" class EpubReaderMenuActivity final : public Activity { public: enum MenuOption { CHAPTERS, FOOTNOTES }; private: TaskHandle_t displayTaskHandle = nullptr; SemaphoreHandle_t renderingMutex = nullptr; int selectorIndex = 0; bool updateRequired = false; const std::function onGoBack; const std::function onSelectOption; static void taskTrampoline(void* param); [[noreturn]] void displayTaskLoop(); void renderScreen(); public: explicit EpubReaderMenuActivity(GfxRenderer& renderer, InputManager& inputManager, const std::function& onGoBack, const std::function& onSelectOption) : Activity(renderer, inputManager), onGoBack(onGoBack), onSelectOption(onSelectOption) {} void onEnter() override; void onExit() override; void loop() override; };