From fbde017d88e91193208f1a7f9348201db4754c1c Mon Sep 17 00:00:00 2001 From: jpirnay Date: Fri, 17 Apr 2026 18:00:30 +0200 Subject: [PATCH] Fix usage --- src/SettingsList.h | 27 ++++++++++++++++--- .../settings/KOReaderSettingsActivity.cpp | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/SettingsList.h b/src/SettingsList.h index 071c28db..1e3be86d 100644 --- a/src/SettingsList.h +++ b/src/SettingsList.h @@ -34,6 +34,22 @@ // deep inside the heap allocator chain — enough stack to overflow the 8 KB loop task stack // when called from inside SETTINGS.loadFromFile() at boot time. namespace SettingsListDetail { +inline uint8_t getKoReaderMatchMethod(const void*) { + return static_cast(KOREADER_STORE.getMatchMethod()); +} + +inline std::string getKoReaderServerUrl(void*) { + return KOREADER_STORE.getServerUrl(); +} + +inline std::string getKoReaderUsername(void*) { + return KOREADER_STORE.getUsername(); +} + +inline std::string getKoReaderPassword(void*) { + return KOREADER_STORE.getPassword(); +} + inline const std::vector list = { // --- Display --- SettingInfo::Enum(StrId::STR_TIME_TO_SLEEP, &CrossPointSettings::sleepTimeout, @@ -151,21 +167,24 @@ inline const std::vector list = { // --- KOReader Sync (web-only, uses KOReaderCredentialStore) --- SettingInfo::DynamicString( - StrId::STR_SYNC_SERVER_URL, [](void*) { return KOREADER_STORE.getServerUrl(); }, + StrId::STR_SYNC_SERVER_URL, + static_cast(getKoReaderServerUrl), [](void*, const std::string& v) { KOREADER_STORE.setServerUrl(v); KOREADER_STORE.saveToFile(); }, "koServerUrl", StrId::STR_KOREADER_SYNC), SettingInfo::DynamicString( - StrId::STR_KOREADER_USERNAME, [](void*) { return KOREADER_STORE.getUsername(); }, + StrId::STR_KOREADER_USERNAME, + static_cast(getKoReaderUsername), [](void*, const std::string& v) { KOREADER_STORE.setCredentials(v, KOREADER_STORE.getPassword()); KOREADER_STORE.saveToFile(); }, "koUsername", StrId::STR_KOREADER_SYNC), SettingInfo::DynamicString( - StrId::STR_KOREADER_PASSWORD, [](void*) { return KOREADER_STORE.getPassword(); }, + StrId::STR_KOREADER_PASSWORD, + static_cast(getKoReaderPassword), [](void*, const std::string& v) { KOREADER_STORE.setCredentials(KOREADER_STORE.getUsername(), v); KOREADER_STORE.saveToFile(); @@ -174,7 +193,7 @@ inline const std::vector list = { .withObfuscated(), SettingInfo::DynamicEnum( StrId::STR_DOCUMENT_MATCHING, {StrId::STR_FILENAME, StrId::STR_BINARY}, - [](void*) { return static_cast(KOREADER_STORE.getMatchMethod()); }, + getKoReaderMatchMethod, [](void*, uint8_t v) { KOREADER_STORE.setMatchMethod(static_cast(v)); KOREADER_STORE.saveToFile(); diff --git a/src/activities/settings/KOReaderSettingsActivity.cpp b/src/activities/settings/KOReaderSettingsActivity.cpp index ff56e73d..0c82424b 100644 --- a/src/activities/settings/KOReaderSettingsActivity.cpp +++ b/src/activities/settings/KOReaderSettingsActivity.cpp @@ -26,7 +26,7 @@ void KOReaderSettingsActivity::buildMenuItems() { // Document matching: DynamicEnum toggling between Filename and Binary menuItems.push_back(SettingInfo::DynamicEnum( StrId::STR_DOCUMENT_MATCHING, {StrId::STR_FILENAME, StrId::STR_BINARY}, - [](void*) { return static_cast(KOREADER_STORE.getMatchMethod()); }, + static_cast([](const void*) -> uint8_t { return static_cast(KOREADER_STORE.getMatchMethod()); }), [](void*, uint8_t v) { KOREADER_STORE.setMatchMethod(static_cast(v)); KOREADER_STORE.saveToFile();