Advertisement
Guest User

Class Menu

a guest
Jul 13th, 2016
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. bool isMenuDisplayed;
  2.        
  3. class Menu
  4. {
  5.     public:
  6.         static int displayedOption;
  7.         int timeEllapsed;
  8.         static char *menuOptions[MAX_MENU_OPTIONS];
  9.        
  10.         Menu();
  11.        
  12.         void SetOption(int id, char* name);
  13.         void SetSubMenu(Alarm * monInstance, void (Alarm::*monSubMenu[])(void));
  14.        
  15.         static void Show();
  16.         static void Hide();
  17.        
  18.         void MoveOption(int move);
  19.         void ValidOption();
  20.        
  21.     private:
  22.         void (Alarm::*subMenuFunctions[MAX_MENU_OPTIONS])(void);
  23.         Alarm* subMenuInstance;
  24. };
  25. Menu::Menu()
  26. {
  27.     for(int i; i < MAX_MENU_OPTIONS; i++)
  28.         menuOptions[i] = "No option";
  29. }
  30.  
  31. void Menu::SetOption(int id, char* name)
  32. {
  33.     menuOptions[id] = name;
  34. }
  35.  
  36. void Menu::SetSubMenu(Alarm * monInstance, void (Alarm::*monSubMenu[])(void))
  37. {
  38.     subMenuInstance = monInstance;
  39.     *subMenuFunctions = *monSubMenu;
  40. }
  41.  
  42. void Menu::Show()
  43. {
  44.     isMenuDisplayed = true;
  45.     screen.ClearLine(1);
  46.     screen.ClearLine(2);
  47.     screen.ClearLine(3);
  48.     screen.SendString("** MENU **", 1);
  49.     screen.SendString(menuOptions[displayedOption], 2);
  50.     screen.SendString("<-     ->", 3);
  51. }
  52.  
  53. void Menu::Hide()
  54. {
  55.     isMenuDisplayed = false;
  56.     displayedOption = 1;
  57.     //ResetScreen est appelé lors de l'appui sur la touche EXIT
  58. }
  59.  
  60. void Menu::MoveOption(int move)
  61. {
  62.     if(displayedOption == MAX_MENU_OPTIONS && move >= 1)
  63.         displayedOption = 1;
  64.     else if(displayedOption == 1 && move <= 1)
  65.         displayedOption = MAX_MENU_OPTIONS;
  66.     else
  67.         displayedOption += move;
  68.    
  69.     screen.ClearLine(2);
  70.     screen.SendString(menuOptions[displayedOption], 2);
  71. }
  72.  
  73. void Menu::ValidOption()
  74. {
  75.     ((*subMenuInstance).*subMenuFunctions[displayedOption])();
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement