Review changes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user