Release 1.01

Dependents:   mbed_escm2000

Menu.h

Committer:
foxbrianr
Date:
2019-09-12
Revision:
4:7226c43320b5
Parent:
3:8395f7ab6d3e
Child:
5:9f4d4f8ffc00

File content as of revision 4:7226c43320b5:

#ifndef MENU_H
#define MENU_H

#include "mbed.h"
#include "LCD.h"

#include <vector>
#include <string>


class Menu {
    private:
    
        Mutex display_mutex;
               
    public:
        static Menu * currentMenu;
        static Menu * getCurrentMenu () ;
        static Menu * setCurrentMenu (Menu * value) ;
        
        LCD  * lcd;
        
        
        int update_needed;
        
        int selectedMenu;  // what selection the cursor points to
        
        int cursorLine; // what line of the lcd the cursor is one
        int cursorIndex; // what line of the lcd the cursor is one
    
        Menu * parent;
        
        vector<Menu*> children;
        
        char* menuID;
        
        Menu(char *id);
        
        void add( Menu *submenu);
        
        virtual void init();
        virtual void select();
        virtual void back();
        
        virtual char* getText() { return "Main"; }
        
        virtual void DrawDisplay(LCD * lcd);
        virtual void display(LCD * lcd);
        void displayCurrentTime (LCD * lcd);
        void displayVersion (LCD * lcd);

        void moveUp();
        void moveDown();
        
        virtual void pressClear();  
        virtual void pressMode();        
        virtual void pressSet();    
        virtual void pressDown();    
        virtual void pressUp();
        
        virtual void lock()   { display_mutex.lock();}
        virtual void unlock() { display_mutex.unlock();}
        
};
#endif