menu redesign: hierarchical entries
This commit is contained in:
+33
-9
@@ -12,18 +12,42 @@ Step nextSequence[NUM_TRACKS][NUM_STEPS];
|
||||
volatile bool sequenceChangeScheduled = false;
|
||||
volatile bool needsPanic = false;
|
||||
|
||||
UIState currentState = UI_MENU_RANDOMIZE;
|
||||
UIState currentState = UI_MENU_MAIN;
|
||||
|
||||
// Menus
|
||||
const char* mainMenu[] = { "Randomize", "Setup" };
|
||||
extern const int mainMenuCount = sizeof(mainMenu) / sizeof(char*);
|
||||
MenuItem menuItems[] = {
|
||||
{ "Main", MENU_ID_GROUP_MAIN, true, true, 0 },
|
||||
{ "Melody", MENU_ID_MELODY, false, false, 1 },
|
||||
{ "Scale", MENU_ID_SCALE, false, false, 1 },
|
||||
{ "Tempo", MENU_ID_TEMPO, false, false, 1 },
|
||||
{ "Song Mode", MENU_ID_SONG_MODE, false, false, 1 },
|
||||
{ "Track", MENU_ID_GROUP_TRACK, true, true, 0 },
|
||||
{ "Track", MENU_ID_TRACK_SELECT, false, false, 1 },
|
||||
{ "Mute", MENU_ID_MUTE, false, false, 1 },
|
||||
{ "Flavour", MENU_ID_FLAVOUR, false, false, 1 },
|
||||
{ "Mutation", MENU_ID_MUTATION, false, false, 1 },
|
||||
{ "Theme 1", MENU_ID_THEME_1, false, false, 1 },
|
||||
{ "Theme 2", MENU_ID_THEME_2, false, false, 1 },
|
||||
{ "Theme 3", MENU_ID_THEME_3, false, false, 1 },
|
||||
{ "Theme 4", MENU_ID_THEME_4, false, false, 1 },
|
||||
{ "Theme 5", MENU_ID_THEME_5, false, false, 1 },
|
||||
{ "Theme 6", MENU_ID_THEME_6, false, false, 1 },
|
||||
{ "Theme 7", MENU_ID_THEME_7, false, false, 1 },
|
||||
{ "Setup", MENU_ID_GROUP_SETUP, true, false, 0 },
|
||||
{ "Channel", MENU_ID_CHANNEL, false, false, 1 },
|
||||
{ "Reset", MENU_ID_RESET, false, false, 1 }
|
||||
};
|
||||
extern const int menuItemsCount = sizeof(menuItems) / sizeof(MenuItem);
|
||||
|
||||
const char* randomizeMenuPoly[] = { "Setup", "Melody", "Scale", "Tempo", "Song Mode", "Track", "Mute", "Flavour", "Mutation", "Theme 1", "Theme 2", "Theme 3", "Theme 4", "Theme 5", "Theme 6", "Theme 7" };
|
||||
extern const int randomizeMenuPolyCount = sizeof(randomizeMenuPoly) / sizeof(char*);
|
||||
extern const int THEME_1_INDEX_POLY = 9;
|
||||
|
||||
const char* setupMenu[] = { "Back", "Channel", "Factory Reset" };
|
||||
extern const int setupMenuCount = sizeof(setupMenu) / sizeof(char*);
|
||||
bool isItemVisible(int index) {
|
||||
if (menuItems[index].indentLevel == 0) return true;
|
||||
for (int i = index - 1; i >= 0; i--) {
|
||||
if (menuItems[i].indentLevel < menuItems[index].indentLevel) {
|
||||
return menuItems[i].expanded;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
int menuSelection = 0;
|
||||
volatile bool trackMute[NUM_TRACKS];
|
||||
|
||||
Reference in New Issue
Block a user