Library for creating menu systems in displays.
Menu.cpp@0:3f4d33765f10, 2013-05-29 (annotated)
- Committer:
- ollie8
- Date:
- Wed May 29 13:14:53 2013 +0000
- Revision:
- 0:3f4d33765f10
- Child:
- 3:ece3d3346330
Fist check in of lib menu
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ollie8 | 0:3f4d33765f10 | 1 | /* |
ollie8 | 0:3f4d33765f10 | 2 | * Menu.cpp |
ollie8 | 0:3f4d33765f10 | 3 | * |
ollie8 | 0:3f4d33765f10 | 4 | * Created on: 30 Oct 2011 |
ollie8 | 0:3f4d33765f10 | 5 | * Author: ollie |
ollie8 | 0:3f4d33765f10 | 6 | */ |
ollie8 | 0:3f4d33765f10 | 7 | #include "Menu.h" |
ollie8 | 0:3f4d33765f10 | 8 | |
ollie8 | 0:3f4d33765f10 | 9 | Menu::Menu(EnterMenu enterAction, SelectionChange selectionChangeAct, char* newName, int size) : MenuItem() { |
ollie8 | 0:3f4d33765f10 | 10 | entered = enterAction; |
ollie8 | 0:3f4d33765f10 | 11 | name = newName; |
ollie8 | 0:3f4d33765f10 | 12 | selection = selectionChangeAct; |
ollie8 | 0:3f4d33765f10 | 13 | selectedItem = 0; |
ollie8 | 0:3f4d33765f10 | 14 | itemCount = 0; |
ollie8 | 0:3f4d33765f10 | 15 | items = new MenuItem*[size]; |
ollie8 | 0:3f4d33765f10 | 16 | } |
ollie8 | 0:3f4d33765f10 | 17 | |
ollie8 | 0:3f4d33765f10 | 18 | Menu::Menu(char* newName, int size) { |
ollie8 | 0:3f4d33765f10 | 19 | selectedItem = 0; |
ollie8 | 0:3f4d33765f10 | 20 | itemCount = 0; |
ollie8 | 0:3f4d33765f10 | 21 | name = newName; |
ollie8 | 0:3f4d33765f10 | 22 | items = new MenuItem*[size]; |
ollie8 | 0:3f4d33765f10 | 23 | } |
ollie8 | 0:3f4d33765f10 | 24 | |
ollie8 | 0:3f4d33765f10 | 25 | void Menu::addMenuItem(MenuItem & item) { |
ollie8 | 0:3f4d33765f10 | 26 | item.setRowNo(itemCount); |
ollie8 | 0:3f4d33765f10 | 27 | items[itemCount] = &item; |
ollie8 | 0:3f4d33765f10 | 28 | itemCount++; |
ollie8 | 0:3f4d33765f10 | 29 | } |
ollie8 | 0:3f4d33765f10 | 30 | |
ollie8 | 0:3f4d33765f10 | 31 | void Menu::enter() { |
ollie8 | 0:3f4d33765f10 | 32 | entered(this); |
ollie8 | 0:3f4d33765f10 | 33 | } |
ollie8 | 0:3f4d33765f10 | 34 | |
ollie8 | 0:3f4d33765f10 | 35 | void Menu::up() { |
ollie8 | 0:3f4d33765f10 | 36 | if (selectedItem > 0) { |
ollie8 | 0:3f4d33765f10 | 37 | (*(items[selectedItem])).deSelect(); |
ollie8 | 0:3f4d33765f10 | 38 | (*(items[--selectedItem])).select(); |
ollie8 | 0:3f4d33765f10 | 39 | } |
ollie8 | 0:3f4d33765f10 | 40 | } |
ollie8 | 0:3f4d33765f10 | 41 | |
ollie8 | 0:3f4d33765f10 | 42 | void Menu::down() { |
ollie8 | 0:3f4d33765f10 | 43 | if (selectedItem < itemCount-1) { |
ollie8 | 0:3f4d33765f10 | 44 | (*(items[selectedItem])).deSelect(); |
ollie8 | 0:3f4d33765f10 | 45 | (*(items[++selectedItem])).select(); |
ollie8 | 0:3f4d33765f10 | 46 | } |
ollie8 | 0:3f4d33765f10 | 47 | } |
ollie8 | 0:3f4d33765f10 | 48 | |
ollie8 | 0:3f4d33765f10 | 49 | int Menu::size() { |
ollie8 | 0:3f4d33765f10 | 50 | return sizeof(items); |
ollie8 | 0:3f4d33765f10 | 51 | } |
ollie8 | 0:3f4d33765f10 | 52 | |
ollie8 | 0:3f4d33765f10 | 53 | MenuItem & Menu::getItem(int item) { |
ollie8 | 0:3f4d33765f10 | 54 | return *(items[item]); |
ollie8 | 0:3f4d33765f10 | 55 | } |
ollie8 | 0:3f4d33765f10 | 56 | |
ollie8 | 0:3f4d33765f10 | 57 | MenuItem & Menu::selectedRow() { |
ollie8 | 0:3f4d33765f10 | 58 | return *(items[selectedItem]); |
ollie8 | 0:3f4d33765f10 | 59 | } |
ollie8 | 0:3f4d33765f10 | 60 | |
ollie8 | 0:3f4d33765f10 | 61 | MenuItem::MenuItem(EnterMenuItem enterAction, SelectionChange selectionChangeAct, char* newname) { |
ollie8 | 0:3f4d33765f10 | 62 | name = new char[12]; |
ollie8 | 0:3f4d33765f10 | 63 | strcpy(name, newname); |
ollie8 | 0:3f4d33765f10 | 64 | entered = enterAction; |
ollie8 | 0:3f4d33765f10 | 65 | selection = selectionChangeAct; |
ollie8 | 0:3f4d33765f10 | 66 | selected = false; |
ollie8 | 0:3f4d33765f10 | 67 | row = 0; |
ollie8 | 0:3f4d33765f10 | 68 | } |
ollie8 | 0:3f4d33765f10 | 69 | |
ollie8 | 0:3f4d33765f10 | 70 | MenuItem::MenuItem() { |
ollie8 | 0:3f4d33765f10 | 71 | selected = false; |
ollie8 | 0:3f4d33765f10 | 72 | row = 0; |
ollie8 | 0:3f4d33765f10 | 73 | } |
ollie8 | 0:3f4d33765f10 | 74 | |
ollie8 | 0:3f4d33765f10 | 75 | void MenuItem::enter() { |
ollie8 | 0:3f4d33765f10 | 76 | entered(this); |
ollie8 | 0:3f4d33765f10 | 77 | } |
ollie8 | 0:3f4d33765f10 | 78 | |
ollie8 | 0:3f4d33765f10 | 79 | char* MenuItem::getName() { |
ollie8 | 0:3f4d33765f10 | 80 | return name; |
ollie8 | 0:3f4d33765f10 | 81 | } |
ollie8 | 0:3f4d33765f10 | 82 | |
ollie8 | 0:3f4d33765f10 | 83 | void MenuItem::select() { |
ollie8 | 0:3f4d33765f10 | 84 | selected = true; |
ollie8 | 0:3f4d33765f10 | 85 | selection(this); |
ollie8 | 0:3f4d33765f10 | 86 | } |
ollie8 | 0:3f4d33765f10 | 87 | |
ollie8 | 0:3f4d33765f10 | 88 | void MenuItem::deSelect() { |
ollie8 | 0:3f4d33765f10 | 89 | selected = false; |
ollie8 | 0:3f4d33765f10 | 90 | } |
ollie8 | 0:3f4d33765f10 | 91 | |
ollie8 | 0:3f4d33765f10 | 92 | bool MenuItem::isSelected() { |
ollie8 | 0:3f4d33765f10 | 93 | return selected; |
ollie8 | 0:3f4d33765f10 | 94 | } |
ollie8 | 0:3f4d33765f10 | 95 | |
ollie8 | 0:3f4d33765f10 | 96 | void MenuItem::setRowNo(int r) { |
ollie8 | 0:3f4d33765f10 | 97 | row = r; |
ollie8 | 0:3f4d33765f10 | 98 | } |
ollie8 | 0:3f4d33765f10 | 99 | |
ollie8 | 0:3f4d33765f10 | 100 | int MenuItem::getRowNo() { |
ollie8 | 0:3f4d33765f10 | 101 | return row; |
ollie8 | 0:3f4d33765f10 | 102 | } |