From 87b9d333f76e4bd46a5b1ebbca5bfa80aa951d88 Mon Sep 17 00:00:00 2001 From: jpirnay Date: Fri, 17 Apr 2026 15:54:08 +0200 Subject: [PATCH] Review changes --- src/activities/home/HomeActivity.cpp | 8 +++++++- src/activities/home/HomeActivity.h | 1 + src/activities/settings/SettingInfo.h | 21 ++++++++++++++++---- src/activities/settings/SettingsActivity.cpp | 3 +-- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/src/activities/home/HomeActivity.cpp b/src/activities/home/HomeActivity.cpp index 554830af..4f3450a3 100644 --- a/src/activities/home/HomeActivity.cpp +++ b/src/activities/home/HomeActivity.cpp @@ -211,6 +211,7 @@ void HomeActivity::onEnter() { } // Trigger first update + menuEntriesDirty = true; requestUpdate(); } @@ -308,7 +309,9 @@ void HomeActivity::render(RenderLock&&) { GUI.drawHeader(renderer, Rect{contentRect.x, metrics.topPadding, contentRect.width, metrics.homeTopPadding}, nullptr); - rebuildMenuEntries(); + if (menuEntriesDirty) { + rebuildMenuEntries(); + } const int totalItems = static_cast(recentBooks.size() + menuEntries.size()); if (selectorIndex >= totalItems) { @@ -367,5 +370,8 @@ void HomeActivity::dispatchMenuAction(MenuAction action) { case MenuAction::Settings: activityManager.goToSettings(); break; + default: + LOG_ERR("HOME", "Unexpected menu action: %d", static_cast(action)); + break; } } diff --git a/src/activities/home/HomeActivity.h b/src/activities/home/HomeActivity.h index 692fbd69..c4fad72a 100644 --- a/src/activities/home/HomeActivity.h +++ b/src/activities/home/HomeActivity.h @@ -42,6 +42,7 @@ class HomeActivity final : public Activity { uint8_t* coverBuffer = nullptr; // HomeActivity's own buffer for cover image std::vector recentBooks; std::vector menuEntries; + bool menuEntriesDirty = true; void onSelectBook(const std::string& path); void dispatchMenuAction(MenuAction action); diff --git a/src/activities/settings/SettingInfo.h b/src/activities/settings/SettingInfo.h index 498cbb6d..9d8f1696 100644 --- a/src/activities/settings/SettingInfo.h +++ b/src/activities/settings/SettingInfo.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -63,10 +64,22 @@ struct SettingInfo { StringGetterFn stringGetter = nullptr; StringSetterFn stringSetter = nullptr; - uint8_t callValueGetter() const { return valueGetter(accessorCtx); } - void callValueSetter(uint8_t v) const { valueSetter(accessorCtx, v); } - std::string callStringGetter() const { return stringGetter(accessorCtx); } - void callStringSetter(const std::string& v) const { stringSetter(accessorCtx, v); } + uint8_t callValueGetter() const { + assert(valueGetter && "SettingInfo::callValueGetter requires a non-null valueGetter"); + return valueGetter(accessorCtx); + } + void callValueSetter(uint8_t v) const { + assert(valueSetter && "SettingInfo::callValueSetter requires a non-null valueSetter"); + valueSetter(accessorCtx, v); + } + std::string callStringGetter() const { + assert(stringGetter && "SettingInfo::callStringGetter requires a non-null stringGetter"); + return stringGetter(accessorCtx); + } + void callStringSetter(const std::string& v) const { + assert(stringSetter && "SettingInfo::callStringSetter requires a non-null stringSetter"); + stringSetter(accessorCtx, v); + } SettingInfo& withObfuscated() { obfuscated = true; diff --git a/src/activities/settings/SettingsActivity.cpp b/src/activities/settings/SettingsActivity.cpp index 91b9051d..789b38e2 100644 --- a/src/activities/settings/SettingsActivity.cpp +++ b/src/activities/settings/SettingsActivity.cpp @@ -229,8 +229,7 @@ void SettingsActivity::toggleCurrentSetting() { [&setting](const SubmenuData& d) { return d.id == setting.nameId; }); if (it != submenuData.end()) { startActivityForResult( - std::make_unique(renderer, mappedInput, setting.nameId, std::move(it->items)), - resultHandler); + std::make_unique(renderer, mappedInput, setting.nameId, it->items), resultHandler); } } else { auto activity = createActivityForAction(setting.action, renderer, mappedInput);