#pragma once #include #include #include #include "../ActivityWithSubactivity.h" #include "util/ButtonNavigator.h" class LookedUpWordsActivity final : public ActivityWithSubactivity { public: explicit LookedUpWordsActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, const std::string& cachePath, int readerFontId, uint8_t orientation, const std::function& onBack, const std::function& onDone, bool initialSkipRelease = false) : ActivityWithSubactivity("LookedUpWords", renderer, mappedInput), cachePath(cachePath), readerFontId(readerFontId), orientation(orientation), onBack(onBack), onDone(onDone), ignoreNextConfirmRelease(initialSkipRelease) {} void onEnter() override; void onExit() override; void loop() override; void render(Activity::RenderLock&&) override; private: std::string cachePath; int readerFontId; uint8_t orientation; const std::function onBack; const std::function onDone; std::vector words; int selectedIndex = 0; bool pendingBackFromDef = false; bool pendingExitToReader = false; ButtonNavigator buttonNavigator; // Delete confirmation state bool deleteConfirmMode = false; bool ignoreNextConfirmRelease = false; int pendingDeleteIndex = 0; // Sentinel index: the "Delete Dictionary Cache" entry at the end of the list. // -1 if not present (shouldn't happen when dictionary exists). int deleteDictCacheIndex = -1; int getPageItems() const; };