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;
|
|
}
|
|
};
|