Migrate 5 mod Activity subclasses from old polling-based display task pattern to the upstream render() super-class pattern with freeRTOS notification: - EpubReaderBookmarkSelectionActivity - DictionaryWordSelectActivity - DictionarySuggestionsActivity - DictionaryDefinitionActivity - LookedUpWordsActivity Changes: remove own TaskHandle/SemaphoreHandle/updateRequired, use requestUpdate() + render(RenderLock&&) override, fix potential deadlocks around enterNewActivity() calls. Also fix stale conflict marker in EpubReaderMenuActivity.h. Co-authored-by: Cursor <cursoragent@cursor.com>
46 lines
1.7 KiB
C++
46 lines
1.7 KiB
C++
#pragma once
|
|
#include <Epub.h>
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
#include "../ActivityWithSubactivity.h"
|
|
#include "util/BookmarkStore.h"
|
|
#include "util/ButtonNavigator.h"
|
|
|
|
class EpubReaderBookmarkSelectionActivity final : public ActivityWithSubactivity {
|
|
std::shared_ptr<Epub> epub;
|
|
std::vector<Bookmark> bookmarks;
|
|
std::string cachePath;
|
|
ButtonNavigator buttonNavigator;
|
|
int selectorIndex = 0;
|
|
bool deleteConfirmMode = false;
|
|
bool ignoreNextConfirmRelease = false;
|
|
int pendingDeleteIndex = 0;
|
|
const std::function<void()> onGoBack;
|
|
const std::function<void(int newSpineIndex, int newPage)> onSelectBookmark;
|
|
|
|
int getPageItems() const;
|
|
int getTotalItems() const;
|
|
std::string getBookmarkPrefix(const Bookmark& bookmark) const;
|
|
static std::string getPageSuffix(const Bookmark& bookmark);
|
|
|
|
public:
|
|
explicit EpubReaderBookmarkSelectionActivity(GfxRenderer& renderer, MappedInputManager& mappedInput,
|
|
const std::shared_ptr<Epub>& epub,
|
|
std::vector<Bookmark> bookmarks,
|
|
const std::string& cachePath,
|
|
const std::function<void()>& onGoBack,
|
|
const std::function<void(int newSpineIndex, int newPage)>& onSelectBookmark)
|
|
: ActivityWithSubactivity("EpubReaderBookmarkSelection", renderer, mappedInput),
|
|
epub(epub),
|
|
bookmarks(std::move(bookmarks)),
|
|
cachePath(cachePath),
|
|
onGoBack(onGoBack),
|
|
onSelectBookmark(onSelectBookmark) {}
|
|
void onEnter() override;
|
|
void onExit() override;
|
|
void loop() override;
|
|
void render(Activity::RenderLock&&) override;
|
|
};
|