Review changes

This commit is contained in:
jpirnay
2026-04-17 15:54:08 +02:00
parent 106e9d31e6
commit 87b9d333f7
4 changed files with 26 additions and 7 deletions
+7 -1
View File
@@ -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<int>(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<int>(action));
break;
}
}
+1
View File
@@ -42,6 +42,7 @@ class HomeActivity final : public Activity {
uint8_t* coverBuffer = nullptr; // HomeActivity's own buffer for cover image
std::vector<RecentBook> recentBooks;
std::vector<MenuEntry> menuEntries;
bool menuEntriesDirty = true;
void onSelectBook(const std::string& path);
void dispatchMenuAction(MenuAction action);
+17 -4
View File
@@ -1,6 +1,7 @@
#pragma once
#include <I18n.h>
#include <cassert>
#include <string>
#include <vector>
@@ -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;
+1 -2
View File
@@ -229,8 +229,7 @@ void SettingsActivity::toggleCurrentSetting() {
[&setting](const SubmenuData& d) { return d.id == setting.nameId; });
if (it != submenuData.end()) {
startActivityForResult(
std::make_unique<SettingsSubmenuActivity>(renderer, mappedInput, setting.nameId, std::move(it->items)),
resultHandler);
std::make_unique<SettingsSubmenuActivity>(renderer, mappedInput, setting.nameId, it->items), resultHandler);
}
} else {
auto activity = createActivityForAction(setting.action, renderer, mappedInput);