#include "menu.h" #include "menu_main.h" void runActiveMenu(const ButtonPress_e tuner_button, const ButtonPress_e touch_button, const Point touch_point, const int16_t knob) { Menu_t* parent_menu = rootMenu;//rootMenu is it's own parent Menu_t* active_menu = rootMenu; while(nullptr != active_menu->active_submenu){ parent_menu = active_menu; active_menu = parent_menu->active_submenu; } MenuReturn_e mr = active_menu->runMenu(tuner_button,touch_button,touch_point,knob); switch(mr){ case MenuReturn_e::StillActive://Fallthrough intended case MenuReturn_e::ExitedNoRedraw: { //Nothing to do here - just return break; } default://Fallthrough intended. Default to this menu being active case MenuReturn_e::ExitedRedraw: { //Turn off submenu, redraw, then return parent_menu->active_submenu = nullptr; parent_menu->initMenu(); break; } }//end switch } void enterSubmenu(Menu_t *const submenu) { Menu_t* current_menu = rootMenu; while(nullptr != current_menu->active_submenu){ current_menu = current_menu->active_submenu; } current_menu->active_submenu = submenu; submenu->initMenu(); }