Short press will go back to origin / long press will go back to home

This commit is contained in:
jpirnay
2026-04-05 21:37:28 +02:00
parent c86a5fee4c
commit f75bbf5b1e
8 changed files with 32 additions and 23 deletions
+6 -6
View File
@@ -183,20 +183,20 @@ void EpubReaderActivity::loop() {
});
}
// Long press BACK (1s+) goes to file selection
// Long press BACK (1s+) goes to home screen
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= ReaderUtils::GO_HOME_MS) {
activityManager.goToFileBrowser(epub ? epub->getPath() : "");
onGoHome();
return;
}
// Short press BACK goes directly to home (or restores position if viewing footnote)
// Short press BACK returns to the calling activity (or restores position if viewing footnote)
if (mappedInput.wasReleased(MappedInputManager::Button::Back) &&
mappedInput.getHeldTime() < ReaderUtils::GO_HOME_MS) {
if (footnoteDepth > 0) {
restoreSavedPosition();
return;
}
onGoHome();
finish();
return;
}
@@ -205,10 +205,10 @@ void EpubReaderActivity::loop() {
return;
}
// At end of the book, forward button goes home and back button returns to last page
// At end of the book, forward button returns to caller and back button returns to last page
if (currentSpineIndex > 0 && currentSpineIndex >= epub->getSpineItemsCount()) {
if (nextTriggered) {
onGoHome();
finish();
} else {
currentSpineIndex = epub->getSpineItemsCount() - 1;
nextPageNumber = UINT16_MAX;
+8 -4
View File
@@ -88,23 +88,27 @@ void ReaderActivity::goToLibrary(const std::string& fromBookPath) {
void ReaderActivity::onGoToEpubReader(std::unique_ptr<Epub> epub) {
const auto epubPath = epub->getPath();
currentBookPath = epubPath;
activityManager.replaceActivity(std::make_unique<EpubReaderActivity>(renderer, mappedInput, std::move(epub)));
startActivityForResult(std::make_unique<EpubReaderActivity>(renderer, mappedInput, std::move(epub)),
[this](const ActivityResult&) { finish(); });
}
void ReaderActivity::onGoToBmpViewer(const std::string& path) {
activityManager.replaceActivity(std::make_unique<BmpViewerActivity>(renderer, mappedInput, path));
startActivityForResult(std::make_unique<BmpViewerActivity>(renderer, mappedInput, path),
[this](const ActivityResult&) { finish(); });
}
void ReaderActivity::onGoToXtcReader(std::unique_ptr<Xtc> xtc) {
const auto xtcPath = xtc->getPath();
currentBookPath = xtcPath;
activityManager.replaceActivity(std::make_unique<XtcReaderActivity>(renderer, mappedInput, std::move(xtc)));
startActivityForResult(std::make_unique<XtcReaderActivity>(renderer, mappedInput, std::move(xtc)),
[this](const ActivityResult&) { finish(); });
}
void ReaderActivity::onGoToTxtReader(std::unique_ptr<Txt> txt) {
const auto txtPath = txt->getPath();
currentBookPath = txtPath;
activityManager.replaceActivity(std::make_unique<TxtReaderActivity>(renderer, mappedInput, std::move(txt)));
startActivityForResult(std::make_unique<TxtReaderActivity>(renderer, mappedInput, std::move(txt)),
[this](const ActivityResult&) { finish(); });
}
void ReaderActivity::onEnter() {
+5 -5
View File
@@ -117,16 +117,16 @@ void TxtReaderActivity::onExit() {
}
void TxtReaderActivity::loop() {
// Long press BACK (1s+) goes to file selection
// Long press BACK (1s+) goes to home screen
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= ReaderUtils::GO_HOME_MS) {
activityManager.goToFileBrowser(txt ? txt->getPath() : "");
onGoHome();
return;
}
// Short press BACK goes directly to home
// Short press BACK returns to the calling activity
if (mappedInput.wasReleased(MappedInputManager::Button::Back) &&
mappedInput.getHeldTime() < ReaderUtils::GO_HOME_MS) {
onGoHome();
finish();
return;
}
@@ -143,7 +143,7 @@ void TxtReaderActivity::loop() {
currentPage++;
requestUpdate();
} else {
onGoHome();
finish();
}
}
}
+6 -6
View File
@@ -71,15 +71,15 @@ void XtcReaderActivity::loop() {
}
}
// Long press BACK (1s+) goes to file selection
// Long press BACK (1s+) goes to home screen
if (mappedInput.isPressed(MappedInputManager::Button::Back) && mappedInput.getHeldTime() >= goHomeMs) {
activityManager.goToFileBrowser(xtc ? xtc->getPath() : "");
onGoHome();
return;
}
// Short press BACK goes directly to home
// Short press BACK returns to the calling activity
if (mappedInput.wasReleased(MappedInputManager::Button::Back) && mappedInput.getHeldTime() < goHomeMs) {
onGoHome();
finish();
return;
}
@@ -101,10 +101,10 @@ void XtcReaderActivity::loop() {
return;
}
// At end of the book, forward button goes home and back button returns to last page
// At end of the book, forward button returns to caller and back button returns to last page
if (currentPage >= xtc->getPageCount()) {
if (nextTriggered) {
onGoHome();
finish();
} else {
currentPage = xtc->getPageCount() - 1;
requestUpdate();