#pragma once #include #include #include #include #include "activities/ActivityWithSubactivity.h" #include "util/ButtonNavigator.h" /** * Submenu for KOReader Sync settings. * Shows username, password, and authenticate options. */ class KOReaderSettingsActivity final : public ActivityWithSubactivity { public: explicit KOReaderSettingsActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, const std::function& onBack) : ActivityWithSubactivity("KOReaderSettings", renderer, mappedInput), onBack(onBack) {} void onEnter() override; void onExit() override; void loop() override; private: TaskHandle_t displayTaskHandle = nullptr; SemaphoreHandle_t renderingMutex = nullptr; ButtonNavigator buttonNavigator; bool updateRequired = false; int selectedIndex = 0; const std::function onBack; static void taskTrampoline(void* param); [[noreturn]] void displayTaskLoop(); void render(); void handleSelection(); };