#pragma once #include #include #include #include #include #include #include "../Activity.h" #include "RecentBooksStore.h" class RecentBooksActivity final : public Activity { private: TaskHandle_t displayTaskHandle = nullptr; SemaphoreHandle_t renderingMutex = nullptr; size_t selectorIndex = 0; bool updateRequired = false; // Recent tab state std::vector recentBooks; // Callbacks const std::function onSelectBook; const std::function onGoHome; static void taskTrampoline(void* param); [[noreturn]] void displayTaskLoop(); void render() const; // Data loading void loadRecentBooks(); public: explicit RecentBooksActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, const std::function& onGoHome, const std::function& onSelectBook) : Activity("RecentBooks", renderer, mappedInput), onSelectBook(onSelectBook), onGoHome(onGoHome) {} void onEnter() override; void onExit() override; void loop() override; };