11class HorizontalMenu :
public Submenu {
13 enum Layout { FIXED, DYNAMIC };
16 std::vector<MenuItem*> items;
19 int32_t visiblePageNumber;
20 int32_t selectedItemPositionOnPage;
21 std::vector<PageInfo> pages;
22 PageInfo& getVisiblePage() {
return pages[visiblePageNumber]; }
29 using Submenu::Submenu;
31 HorizontalMenu(l10n::String newName, std::span<MenuItem*> newItems, Layout layout)
32 : Submenu(newName, newItems), layout(layout), paging{} {}
33 HorizontalMenu(l10n::String newName, std::initializer_list<MenuItem*> newItems, Layout layout)
34 :
Submenu(newName, newItems), layout(layout), paging{} {}
35 HorizontalMenu(l10n::String newName, l10n::String newTitle, std::initializer_list<MenuItem*> newItems,
37 : Submenu(newName, newTitle, newItems), layout(layout), paging{} {}
39 RenderingStyle renderingStyle()
const override;
40 ActionResult
buttonAction(hid::Button b,
bool on,
bool inCardRoutine)
override;
48 Layout layout = DYNAMIC;
49 int32_t lastSelectedItemPosition = kNoSelection;
51 ActionResult switchVisiblePage(int32_t direction);
53 Paging splitMenuItemsByPages()
const;
54 static void displayPopup(
MenuItem* menuItem);
55 static ColumnLabelPosition renderColumnLabel(
MenuItem* menuItem, int32_t labelY, int32_t slotStartX,