81 lines
1.4 KiB
C
81 lines
1.4 KiB
C
#ifndef __NUMENU_H
|
|
#define __NUMENU_H
|
|
|
|
//***********************************************************
|
|
|
|
enum MenuType {
|
|
ESub,
|
|
EStateChange,
|
|
};
|
|
|
|
enum MenuEntryFlags {
|
|
ENone = 0,
|
|
EMenuEntryWrap = (1u<<0),
|
|
EMenuEntryCustom = (1u<<1),
|
|
EMenuEntryEnterHandler = (1u<<2),
|
|
};
|
|
|
|
enum MenuPageFlags {
|
|
EMenuPageCustom = (1u<<0),
|
|
EMenuPageRoot = (1u<<1),
|
|
};
|
|
|
|
|
|
struct MenuEntry {
|
|
enum MenuType type;
|
|
const char* title;
|
|
};
|
|
|
|
struct MenuEntrySub;
|
|
typedef const MenuEntrySub& SubMenuRef;
|
|
|
|
struct MenuEntrySub {
|
|
enum MenuType type;
|
|
const char* title;
|
|
const char* subTitle;
|
|
uint16_t* valuePtr;
|
|
uint16_t min;
|
|
uint16_t max;
|
|
uint16_t flags;
|
|
void (*getSubTextFunc)(SubMenuRef, char*textBuffer, const char**label);
|
|
void (*applyFunc)(SubMenuRef);
|
|
bool (*onEnterFunc)(void);
|
|
};
|
|
|
|
struct MenuEntryStateCh {
|
|
enum MenuType type;
|
|
const char* title;
|
|
byte state;
|
|
};
|
|
|
|
struct MenuPage {
|
|
const char* title;
|
|
uint16_t flags;
|
|
byte cursor;
|
|
byte parentPage;
|
|
byte numEntries;
|
|
const MenuEntry** entries;
|
|
};
|
|
|
|
struct MenuPageCustom {
|
|
const char* title;
|
|
uint16_t flags;
|
|
bool (*menuUpdateFunc)(void);
|
|
};
|
|
|
|
//***********************************************************
|
|
|
|
struct AdjustValue {
|
|
uint16_t *value;
|
|
uint16_t limitLow;
|
|
uint16_t limitHigh;
|
|
};
|
|
|
|
struct AdjustMenuEntry {
|
|
const char* title;
|
|
AdjustValue entries[2];
|
|
void (*saveFunc)(const AdjustMenuEntry&);
|
|
};
|
|
|
|
|
|
#endif
|