Library for creating menu systems in displays.
Menu.h@1:2084d862196c, 2013-05-29 (annotated)
- Committer:
- ollie8
- Date:
- Wed May 29 19:20:19 2013 +0000
- Revision:
- 1:2084d862196c
- Parent:
- 0:3f4d33765f10
- Child:
- 2:feaf1471cda0
Updated documentation
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ollie8 | 0:3f4d33765f10 | 1 | #ifndef MENU_H |
ollie8 | 0:3f4d33765f10 | 2 | #define MENU_H |
ollie8 | 0:3f4d33765f10 | 3 | |
ollie8 | 1:2084d862196c | 4 | #include <string.h> |
ollie8 | 1:2084d862196c | 5 | /** MenuItem represents an entry in a menu. Each menu item is instantiated with |
ollie8 | 1:2084d862196c | 6 | * two callbacks, one for selecting the item and one for entering the item. |
ollie8 | 1:2084d862196c | 7 | * Methods are provided for determining whether the item is selected |
ollie8 | 1:2084d862196c | 8 | * |
ollie8 | 1:2084d862196c | 9 | */ |
ollie8 | 0:3f4d33765f10 | 10 | class MenuItem { |
ollie8 | 0:3f4d33765f10 | 11 | |
ollie8 | 0:3f4d33765f10 | 12 | private: |
ollie8 | 0:3f4d33765f10 | 13 | typedef void (*EnterMenuItem)(MenuItem*); |
ollie8 | 0:3f4d33765f10 | 14 | void (*entered)(MenuItem*); |
ollie8 | 0:3f4d33765f10 | 15 | bool selected; |
ollie8 | 0:3f4d33765f10 | 16 | int row; |
ollie8 | 0:3f4d33765f10 | 17 | public: |
ollie8 | 0:3f4d33765f10 | 18 | typedef void (*SelectionChange)(MenuItem*); |
ollie8 | 0:3f4d33765f10 | 19 | MenuItem(); |
ollie8 | 0:3f4d33765f10 | 20 | MenuItem(EnterMenuItem, SelectionChange, char*); |
ollie8 | 0:3f4d33765f10 | 21 | char* getName(); |
ollie8 | 0:3f4d33765f10 | 22 | virtual void enter(); |
ollie8 | 0:3f4d33765f10 | 23 | bool isSelected(); |
ollie8 | 0:3f4d33765f10 | 24 | void select(); |
ollie8 | 0:3f4d33765f10 | 25 | void deSelect(); |
ollie8 | 1:2084d862196c | 26 | int getRowNo(); |
ollie8 | 0:3f4d33765f10 | 27 | void setRowNo(int); |
ollie8 | 0:3f4d33765f10 | 28 | protected: |
ollie8 | 0:3f4d33765f10 | 29 | char* name; |
ollie8 | 0:3f4d33765f10 | 30 | void (*selection)(MenuItem*); |
ollie8 | 0:3f4d33765f10 | 31 | }; |
ollie8 | 0:3f4d33765f10 | 32 | |
ollie8 | 0:3f4d33765f10 | 33 | class Menu : public MenuItem { |
ollie8 | 0:3f4d33765f10 | 34 | |
ollie8 | 0:3f4d33765f10 | 35 | private: |
ollie8 | 0:3f4d33765f10 | 36 | typedef void (*EnterMenu)(Menu*); |
ollie8 | 0:3f4d33765f10 | 37 | MenuItem **items; |
ollie8 | 0:3f4d33765f10 | 38 | void (*entered)(Menu*); |
ollie8 | 0:3f4d33765f10 | 39 | int selectedItem; |
ollie8 | 0:3f4d33765f10 | 40 | int itemCount; |
ollie8 | 0:3f4d33765f10 | 41 | public: |
ollie8 | 0:3f4d33765f10 | 42 | Menu(EnterMenu, SelectionChange, char*, int); |
ollie8 | 0:3f4d33765f10 | 43 | Menu(char*, int); |
ollie8 | 0:3f4d33765f10 | 44 | void addMenuItem(MenuItem&); |
ollie8 | 0:3f4d33765f10 | 45 | MenuItem & getItem(int); |
ollie8 | 0:3f4d33765f10 | 46 | MenuItem & selectedRow(); |
ollie8 | 0:3f4d33765f10 | 47 | int size(); |
ollie8 | 0:3f4d33765f10 | 48 | virtual void enter(); |
ollie8 | 0:3f4d33765f10 | 49 | void up(); |
ollie8 | 0:3f4d33765f10 | 50 | void down(); |
ollie8 | 0:3f4d33765f10 | 51 | }; |
ollie8 | 0:3f4d33765f10 | 52 | |
ollie8 | 0:3f4d33765f10 | 53 | #endif |