|
|
- class Menu{ //ContentType (0)
- private:
-
- int sizex; //X size for each option in the menu
- int sizey; //Y size of each option in the menu
- int options = 0; //This indicates the number of options created
- int pos = 0; //This indicates the position of the cursor
- int page = 0; //If the menu is too long, this indicates the page that is being displayed
- Option opt[MAX_OPTIONS];
- int optPPage;
-
- int previousScreen = 0;
- int previousContentType = 0;
-
- public:
-
- void configure(int sizex, int sizey){ //This method configures the menu created from Screen
- this->sizex = sizex;
- this->sizey = sizey;
- this->optPPage = DISP_HEIGHT / this->sizey;
- }
-
- //The following method is used to created an option for the menu
- void createOption(String content, int destinationType, int destinationIndex){
- //The option takes the place in the array defined by the options number variable (options), which is later increased.
- this->opt[this->options].configure(content, this->sizex, this->sizey, this->options++, destinationType, destinationIndex);
- }
-
- int extractDestinationType(){
- int destinationType = this->opt[this->pos].getDestinationType();
- return destinationType;
- }
-
- int extractDestinationIndex(){
- int destinationIndex = this->opt[this->pos].getDestinationIndex();
- return destinationIndex;
- }
-
- //The following method draws the whole menu by drawing every option configured within it
- void drawMenu(){
- display.clearDisplay();
- this->page = pos/this->optPPage; //The current page is obtained by dividing the position by the number of options per page (only integer)
- for(int i = 0; i < options; i++){
- this->opt[i].drawopt(this->page, this->pos, this->optPPage);
- }
- display.display();
- }
- //Methods used by Screen
- int extractPos(){ //Gets the current position of the cursor
- return(this->pos);
- }
-
- int extractOptNumber(){ //Gets the number of options in the menu
- return(this->options);
- }
-
- void increasePos(){ //Increases the position of the cursor
- this->pos++;
- }
-
- void decreasePos(){ //Decreases the position of the cursor
- this->pos--;
- }
-
- //Both of the following methods store the values of the previous screen passed as parameters by Screen
-
- void setPreviousScreen(int prev){
- this->previousScreen = prev;
- }
-
- void setPreviousContentType(int prev){
- this->previousContentType = prev;
- }
-
- //Both of the following methods retrieve the values of the screen previous to the menu containing these data.
- int getPreviousScreen(){
- int prev = this->previousScreen;
- return prev;
- }
-
- int getPreviousContentType(){
- int prev = this->previousContentType;
- return prev;
- }
- };
|