#pragma once #include #include #include #include #include #include #include "Screen.h" class FileSelectionScreen final : public Screen { TaskHandle_t displayTaskHandle = nullptr; SemaphoreHandle_t renderingMutex = nullptr; std::string basepath = "/"; std::vector files; int selectorIndex = 0; bool updateRequired = false; const std::function onSelect; const std::function onSettingsOpen; static void taskTrampoline(void* param); [[noreturn]] void displayTaskLoop(); void render() const; void loadFiles(); public: explicit FileSelectionScreen(GfxRenderer& renderer, InputManager& inputManager, const std::function& onSelect, const std::function& onSettingsOpen) : Screen(renderer, inputManager), onSelect(onSelect), onSettingsOpen(onSettingsOpen) {} void onEnter() override; void onExit() override; void handleInput() override; };