Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool isMenuDisplayed;
- class Menu
- {
- public:
- static int displayedOption;
- int timeEllapsed;
- static char *menuOptions[MAX_MENU_OPTIONS];
- Menu();
- void SetOption(int id, char* name);
- void SetSubMenu(Alarm * monInstance, void (Alarm::*monSubMenu[])(void));
- static void Show();
- static void Hide();
- void MoveOption(int move);
- void ValidOption();
- private:
- void (Alarm::*subMenuFunctions[MAX_MENU_OPTIONS])(void);
- Alarm* subMenuInstance;
- };
- Menu::Menu()
- {
- for(int i; i < MAX_MENU_OPTIONS; i++)
- menuOptions[i] = "No option";
- }
- void Menu::SetOption(int id, char* name)
- {
- menuOptions[id] = name;
- }
- void Menu::SetSubMenu(Alarm * monInstance, void (Alarm::*monSubMenu[])(void))
- {
- subMenuInstance = monInstance;
- *subMenuFunctions = *monSubMenu;
- }
- void Menu::Show()
- {
- isMenuDisplayed = true;
- screen.ClearLine(1);
- screen.ClearLine(2);
- screen.ClearLine(3);
- screen.SendString("** MENU **", 1);
- screen.SendString(menuOptions[displayedOption], 2);
- screen.SendString("<- ->", 3);
- }
- void Menu::Hide()
- {
- isMenuDisplayed = false;
- displayedOption = 1;
- //ResetScreen est appelé lors de l'appui sur la touche EXIT
- }
- void Menu::MoveOption(int move)
- {
- if(displayedOption == MAX_MENU_OPTIONS && move >= 1)
- displayedOption = 1;
- else if(displayedOption == 1 && move <= 1)
- displayedOption = MAX_MENU_OPTIONS;
- else
- displayedOption += move;
- screen.ClearLine(2);
- screen.SendString(menuOptions[displayedOption], 2);
- }
- void Menu::ValidOption()
- {
- ((*subMenuInstance).*subMenuFunctions[displayedOption])();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement