Library for creating menu systems in displays.
Menu.cpp@3:ece3d3346330, 2013-05-29 (annotated)
- Committer:
- ollie8
- Date:
- Wed May 29 19:55:00 2013 +0000
- Revision:
- 3:ece3d3346330
- Parent:
- 0:3f4d33765f10
- Child:
- 7:5bbf520bc14d
Documentation update
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 | items[itemCount] = &item; |
ollie8 | 0:3f4d33765f10 | 27 | itemCount++; |
ollie8 | 0:3f4d33765f10 | 28 | } |
ollie8 | 0:3f4d33765f10 | 29 | |
ollie8 | 0:3f4d33765f10 | 30 | void Menu::enter() { |
ollie8 | 0:3f4d33765f10 | 31 | entered(this); |
ollie8 | 3:ece3d3346330 | 32 | if (itemCount > 0) { |
ollie8 | 3:ece3d3346330 | 33 | items[0]->select(); |
ollie8 | 3:ece3d3346330 | 34 | } |
ollie8 | 0:3f4d33765f10 | 35 | } |
ollie8 | 0:3f4d33765f10 | 36 | |
ollie8 | 0:3f4d33765f10 | 37 | void Menu::up() { |
ollie8 | 0:3f4d33765f10 | 38 | if (selectedItem > 0) { |
ollie8 | 0:3f4d33765f10 | 39 | (*(items[selectedItem])).deSelect(); |
ollie8 | 0:3f4d33765f10 | 40 | (*(items[--selectedItem])).select(); |
ollie8 | 0:3f4d33765f10 | 41 | } |
ollie8 | 0:3f4d33765f10 | 42 | } |
ollie8 | 0:3f4d33765f10 | 43 | |
ollie8 | 0:3f4d33765f10 | 44 | void Menu::down() { |
ollie8 | 0:3f4d33765f10 | 45 | if (selectedItem < itemCount-1) { |
ollie8 | 0:3f4d33765f10 | 46 | (*(items[selectedItem])).deSelect(); |
ollie8 | 0:3f4d33765f10 | 47 | (*(items[++selectedItem])).select(); |
ollie8 | 0:3f4d33765f10 | 48 | } |
ollie8 | 0:3f4d33765f10 | 49 | } |
ollie8 | 0:3f4d33765f10 | 50 | |
ollie8 | 0:3f4d33765f10 | 51 | int Menu::size() { |
ollie8 | 0:3f4d33765f10 | 52 | return sizeof(items); |
ollie8 | 0:3f4d33765f10 | 53 | } |
ollie8 | 0:3f4d33765f10 | 54 | |
ollie8 | 0:3f4d33765f10 | 55 | MenuItem & Menu::selectedRow() { |
ollie8 | 0:3f4d33765f10 | 56 | return *(items[selectedItem]); |
ollie8 | 0:3f4d33765f10 | 57 | } |
ollie8 | 0:3f4d33765f10 | 58 | |
ollie8 | 0:3f4d33765f10 | 59 | MenuItem::MenuItem(EnterMenuItem enterAction, SelectionChange selectionChangeAct, char* newname) { |
ollie8 | 0:3f4d33765f10 | 60 | name = new char[12]; |
ollie8 | 0:3f4d33765f10 | 61 | strcpy(name, newname); |
ollie8 | 0:3f4d33765f10 | 62 | entered = enterAction; |
ollie8 | 0:3f4d33765f10 | 63 | selection = selectionChangeAct; |
ollie8 | 0:3f4d33765f10 | 64 | selected = false; |
ollie8 | 0:3f4d33765f10 | 65 | row = 0; |
ollie8 | 0:3f4d33765f10 | 66 | } |
ollie8 | 0:3f4d33765f10 | 67 | |
ollie8 | 0:3f4d33765f10 | 68 | MenuItem::MenuItem() { |
ollie8 | 0:3f4d33765f10 | 69 | selected = false; |
ollie8 | 0:3f4d33765f10 | 70 | row = 0; |
ollie8 | 0:3f4d33765f10 | 71 | } |
ollie8 | 0:3f4d33765f10 | 72 | |
ollie8 | 0:3f4d33765f10 | 73 | void MenuItem::enter() { |
ollie8 | 0:3f4d33765f10 | 74 | entered(this); |
ollie8 | 0:3f4d33765f10 | 75 | } |
ollie8 | 0:3f4d33765f10 | 76 | |
ollie8 | 0:3f4d33765f10 | 77 | char* MenuItem::getName() { |
ollie8 | 0:3f4d33765f10 | 78 | return name; |
ollie8 | 0:3f4d33765f10 | 79 | } |
ollie8 | 0:3f4d33765f10 | 80 | |
ollie8 | 0:3f4d33765f10 | 81 | void MenuItem::select() { |
ollie8 | 0:3f4d33765f10 | 82 | selected = true; |
ollie8 | 0:3f4d33765f10 | 83 | selection(this); |
ollie8 | 0:3f4d33765f10 | 84 | } |
ollie8 | 0:3f4d33765f10 | 85 | |
ollie8 | 0:3f4d33765f10 | 86 | void MenuItem::deSelect() { |
ollie8 | 0:3f4d33765f10 | 87 | selected = false; |
ollie8 | 0:3f4d33765f10 | 88 | } |
ollie8 | 0:3f4d33765f10 | 89 | |
ollie8 | 0:3f4d33765f10 | 90 | bool MenuItem::isSelected() { |
ollie8 | 0:3f4d33765f10 | 91 | return selected; |
ollie8 | 0:3f4d33765f10 | 92 | } |