#pragma once #include #include #include #include #include "../Activity.h" class HomeActivity final : public Activity { TaskHandle_t displayTaskHandle = nullptr; SemaphoreHandle_t renderingMutex = nullptr; int selectorIndex = 0; bool updateRequired = false; bool hasContinueReading = false; const std::function onContinueReading; const std::function onReaderOpen; const std::function onSettingsOpen; const std::function onFileTransferOpen; static void taskTrampoline(void* param); [[noreturn]] void displayTaskLoop(); void render() const; int getMenuItemCount() const; public: explicit HomeActivity(GfxRenderer& renderer, InputManager& inputManager, const std::function& onContinueReading, const std::function& onReaderOpen, const std::function& onSettingsOpen, const std::function& onFileTransferOpen) : Activity("Home", renderer, inputManager), onContinueReading(onContinueReading), onReaderOpen(onReaderOpen), onSettingsOpen(onSettingsOpen), onFileTransferOpen(onFileTransferOpen) {} void onEnter() override; void onExit() override; void loop() override; };