A fork of https://github.com/crosspoint-reader/crosspoint-reader
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Show end of book screen when navigating past last page

+22 -1
+22 -1
src/screens/EpubReaderScreen.cpp
··· 79 79 return; 80 80 } 81 81 82 + // any botton press when at end of the book goes back to the last page 83 + if (currentSpineIndex > 0 && currentSpineIndex >= epub->getSpineItemsCount()) { 84 + currentSpineIndex = epub->getSpineItemsCount() - 1; 85 + nextPageNumber = UINT16_MAX; 86 + updateRequired = true; 87 + return; 88 + } 89 + 82 90 const bool skipChapter = inputManager.getHeldTime() > SKIP_CHAPTER_MS; 83 91 84 92 if (skipChapter) { ··· 143 151 return; 144 152 } 145 153 146 - if (currentSpineIndex >= epub->getSpineItemsCount() || currentSpineIndex < 0) { 154 + // edge case handling for sub-zero spine index 155 + if (currentSpineIndex < 0) { 147 156 currentSpineIndex = 0; 157 + } 158 + // based bounds of book, show end of book screen 159 + if (currentSpineIndex > epub->getSpineItemsCount()) { 160 + currentSpineIndex = epub->getSpineItemsCount(); 161 + } 162 + 163 + // Show end of book screen 164 + if (currentSpineIndex == epub->getSpineItemsCount()) { 165 + renderer.clearScreen(); 166 + renderer.drawCenteredText(READER_FONT_ID, 300, "End of book", true, BOLD); 167 + renderer.displayBuffer(); 168 + return; 148 169 } 149 170 150 171 if (!section) {