Review changes
This commit is contained in:
@@ -211,6 +211,7 @@ void HomeActivity::onEnter() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Trigger first update
|
// Trigger first update
|
||||||
|
menuEntriesDirty = true;
|
||||||
requestUpdate();
|
requestUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,7 +309,9 @@ void HomeActivity::render(RenderLock&&) {
|
|||||||
|
|
||||||
GUI.drawHeader(renderer, Rect{contentRect.x, metrics.topPadding, contentRect.width, metrics.homeTopPadding}, nullptr);
|
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());
|
const int totalItems = static_cast<int>(recentBooks.size() + menuEntries.size());
|
||||||
if (selectorIndex >= totalItems) {
|
if (selectorIndex >= totalItems) {
|
||||||
@@ -367,5 +370,8 @@ void HomeActivity::dispatchMenuAction(MenuAction action) {
|
|||||||
case MenuAction::Settings:
|
case MenuAction::Settings:
|
||||||
activityManager.goToSettings();
|
activityManager.goToSettings();
|
||||||
break;
|
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
|
uint8_t* coverBuffer = nullptr; // HomeActivity's own buffer for cover image
|
||||||
std::vector<RecentBook> recentBooks;
|
std::vector<RecentBook> recentBooks;
|
||||||
std::vector<MenuEntry> menuEntries;
|
std::vector<MenuEntry> menuEntries;
|
||||||
|
bool menuEntriesDirty = true;
|
||||||
|
|
||||||
void onSelectBook(const std::string& path);
|
void onSelectBook(const std::string& path);
|
||||||
void dispatchMenuAction(MenuAction action);
|
void dispatchMenuAction(MenuAction action);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <I18n.h>
|
#include <I18n.h>
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@@ -63,10 +64,22 @@ struct SettingInfo {
|
|||||||
StringGetterFn stringGetter = nullptr;
|
StringGetterFn stringGetter = nullptr;
|
||||||
StringSetterFn stringSetter = nullptr;
|
StringSetterFn stringSetter = nullptr;
|
||||||
|
|
||||||
uint8_t callValueGetter() const { return valueGetter(accessorCtx); }
|
uint8_t callValueGetter() const {
|
||||||
void callValueSetter(uint8_t v) const { valueSetter(accessorCtx, v); }
|
assert(valueGetter && "SettingInfo::callValueGetter requires a non-null valueGetter");
|
||||||
std::string callStringGetter() const { return stringGetter(accessorCtx); }
|
return valueGetter(accessorCtx);
|
||||||
void callStringSetter(const std::string& v) const { stringSetter(accessorCtx, v); }
|
}
|
||||||
|
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() {
|
SettingInfo& withObfuscated() {
|
||||||
obfuscated = true;
|
obfuscated = true;
|
||||||
|
|||||||
@@ -229,8 +229,7 @@ void SettingsActivity::toggleCurrentSetting() {
|
|||||||
[&setting](const SubmenuData& d) { return d.id == setting.nameId; });
|
[&setting](const SubmenuData& d) { return d.id == setting.nameId; });
|
||||||
if (it != submenuData.end()) {
|
if (it != submenuData.end()) {
|
||||||
startActivityForResult(
|
startActivityForResult(
|
||||||
std::make_unique<SettingsSubmenuActivity>(renderer, mappedInput, setting.nameId, std::move(it->items)),
|
std::make_unique<SettingsSubmenuActivity>(renderer, mappedInput, setting.nameId, it->items), resultHandler);
|
||||||
resultHandler);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
auto activity = createActivityForAction(setting.action, renderer, mappedInput);
|
auto activity = createActivityForAction(setting.action, renderer, mappedInput);
|
||||||
|
|||||||
Reference in New Issue
Block a user