MCPcopy Create free account
hub / github.com/crosspoint-reader/crosspoint-reader / loop

Method loop

src/activities/reader/EpubReaderMenuActivity.cpp:52–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50void EpubReaderMenuActivity::onExit() { Activity::onExit(); }
51
52void EpubReaderMenuActivity::loop() {
53 // Handle navigation
54 buttonNavigator.onNext([this] {
55 selectedIndex = ButtonNavigator::nextIndex(selectedIndex, static_cast<int>(menuItems.size()));
56 requestUpdate();
57 });
58
59 buttonNavigator.onPrevious([this] {
60 selectedIndex = ButtonNavigator::previousIndex(selectedIndex, static_cast<int>(menuItems.size()));
61 requestUpdate();
62 });
63
64 if (mappedInput.wasReleased(MappedInputManager::Button::Confirm)) {
65 const auto selectedAction = menuItems[selectedIndex].action;
66 if (selectedAction == MenuAction::ROTATE_SCREEN) {
67 // Cycle orientation preview locally; actual rotation happens on menu exit.
68 pendingOrientation = (pendingOrientation + 1) % orientationLabels.size();
69 requestUpdate();
70 return;
71 }
72
73 if (selectedAction == MenuAction::AUTO_PAGE_TURN) {
74 selectedPageTurnOption = (selectedPageTurnOption + 1) % pageTurnLabels.size();
75 requestUpdate();
76 return;
77 }
78
79 setResult(MenuResult{static_cast<int>(selectedAction), pendingOrientation, selectedPageTurnOption});
80 finish();
81 return;
82 } else if (mappedInput.wasReleased(MappedInputManager::Button::Back)) {
83 ActivityResult result;
84 result.isCancelled = true;
85 result.data = MenuResult{-1, pendingOrientation, selectedPageTurnOption};
86 setResult(std::move(result));
87 finish();
88 return;
89 }
90}
91
92void EpubReaderMenuActivity::render(RenderLock&&) {
93 renderer.clearScreen();

Callers

nothing calls this directly

Calls 4

onNextMethod · 0.80
onPreviousMethod · 0.80
sizeMethod · 0.45
wasReleasedMethod · 0.45

Tested by

no test coverage detected