Compare commits

..

1 Commits

Author SHA1 Message Date
Yaroslav
f64ffe1428
Merge 344f675233 into 3ce11f14ce 2026-01-21 23:35:05 +03:00
7 changed files with 16 additions and 16 deletions

View File

@ -5,8 +5,8 @@
#include <algorithm>
#include "CrossPointSettings.h"
#include "MappedInputManager.h"
#include "CrossPointSettings.h"
#include "RecentBooksStore.h"
#include "ScreenComponents.h"
#include "fontIds.h"

View File

@ -162,7 +162,7 @@ void EpubReaderActivity::loop() {
return;
}
// Detect long-press and schedule skip immediately
// Detect long-press and schedule skip immediately
const bool prevPressed = mappedInput.isPressed(MappedInputManager::Button::PageBack) ||
mappedInput.isPressed(MappedInputManager::Button::Left);
const bool nextPressed = mappedInput.isPressed(MappedInputManager::Button::PageForward) ||
@ -179,7 +179,7 @@ void EpubReaderActivity::loop() {
delayedSkipDir = nextPressed ? +1 : -1;
delayedSkipExecuteAtMs = millis() + 500;
xSemaphoreGive(renderingMutex);
// Block changing page until unpressed skip button
// Block release-based page change until unpressed
awaitingReleaseAfterSkip = true;
return;
}
@ -201,10 +201,6 @@ void EpubReaderActivity::loop() {
return;
}
if (delayedSkipPending) {
return;
}
// any botton press when at end of the book goes back to the last page
if (currentSpineIndex > 0 && currentSpineIndex >= epub->getSpineItemsCount()) {
currentSpineIndex = epub->getSpineItemsCount() - 1;
@ -213,6 +209,7 @@ void EpubReaderActivity::loop() {
return;
}
// No current section, attempt to rerender the book
if (!section) {
updateRequired = true;
@ -255,6 +252,7 @@ void EpubReaderActivity::displayTaskLoop() {
renderScreen();
xSemaphoreGive(renderingMutex);
} else if (delayedSkipPending && now >= delayedSkipExecuteAtMs) {
// Execute the delayed chapter skip now
xSemaphoreTake(renderingMutex, portMAX_DELAY);
nextPageNumber = 0;
currentSpineIndex += delayedSkipDir;

View File

@ -2,12 +2,15 @@
#include <GfxRenderer.h>
#include "CrossPointSettings.h"
#include "KOReaderCredentialStore.h"
#include "KOReaderSyncActivity.h"
#include "CrossPointSettings.h"
#include "MappedInputManager.h"
#include "fontIds.h"
namespace {
} // namespace
bool EpubReaderChapterSelectionActivity::hasSyncOption() const { return KOREADER_STORE.hasCredentials(); }
int EpubReaderChapterSelectionActivity::getTotalItems() const {

View File

@ -110,7 +110,7 @@ void XtcReaderActivity::loop() {
return;
}
// Detect long-press and schedule skip immediately
// Detect long-press and schedule skip immediately
const bool prevPressed = mappedInput.isPressed(MappedInputManager::Button::PageBack) ||
mappedInput.isPressed(MappedInputManager::Button::Left);
const bool nextPressed = mappedInput.isPressed(MappedInputManager::Button::PageForward) ||
@ -128,7 +128,7 @@ void XtcReaderActivity::loop() {
delayedSkipAmount = 10; // long-press skip amount
delayedSkipExecuteAtMs = millis() + 500;
xSemaphoreGive(renderingMutex);
// Block changing page until unpressed skip button
// Block release-based page change until unpressed
awaitingReleaseAfterSkip = true;
return;
}
@ -150,10 +150,6 @@ void XtcReaderActivity::loop() {
return;
}
if (delayedSkipPending) {
return;
}
// Handle end of book
if (currentPage >= xtc->getPageCount()) {
currentPage = xtc->getPageCount() - 1;

View File

@ -24,7 +24,7 @@ class XtcReaderActivity final : public ActivityWithSubactivity {
bool delayedSkipPending = false;
int delayedSkipDir = 0;
uint32_t delayedSkipExecuteAtMs = 0;
uint32_t delayedSkipAmount = 0;
uint32_t delayedSkipAmount = 0;
bool awaitingReleaseAfterSkip = false;
bool skipUnpressed = false;
const std::function<void()> onGoBack;

View File

@ -6,6 +6,9 @@
#include "MappedInputManager.h"
#include "fontIds.h"
namespace {
} // namespace
int XtcReaderChapterSelectionActivity::getPageItems() const {
constexpr int startY = 60;
constexpr int lineHeight = 30;

View File

@ -42,7 +42,7 @@ const SettingInfo controlsSettings[controlsSettingsCount] = {
SettingInfo::Enum("Side Button Layout (reader)", &CrossPointSettings::sideButtonLayout,
{"Prev, Next", "Next, Prev"}),
SettingInfo::Toggle("Long-press Chapter Skip", &CrossPointSettings::longPressChapterSkip),
SettingInfo::Enum("Long-press Duration", &CrossPointSettings::longPressDuration, {"1s", "2s", "3s", "5s", "10s"}),
SettingInfo::Enum("Long-press Duration", &CrossPointSettings::longPressDuration, {"1s", "2s", "3s", "5s", "10s"}),
SettingInfo::Enum("Short Power Button Click", &CrossPointSettings::shortPwrBtn, {"Ignore", "Sleep", "Page Turn"})};
constexpr int systemSettingsCount = 5;