Library for creating menu systems in displays.
Menu.cpp@9:7828182dbc9f, 2013-05-30 (annotated)
- Committer:
- ollie8
- Date:
- Thu May 30 07:29:33 2013 +0000
- Revision:
- 9:7828182dbc9f
- Parent:
- 7:5bbf520bc14d
Added Menu destructor
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 | 7:5bbf520bc14d | 9 | Menu::Menu(EnterMenu enterAction, SelectionChange selectionChangeAct, char* newName, int size) : MenuNode() { |
ollie8 | 0:3f4d33765f10 | 10 | entered = enterAction; |
ollie8 | 0:3f4d33765f10 | 11 | name = newName; |
ollie8 | 0:3f4d33765f10 | 12 | selection = selectionChangeAct; |
ollie8 | 7:5bbf520bc14d | 13 | selectedNode = 0; |
ollie8 | 7:5bbf520bc14d | 14 | nodeCount = 0; |
ollie8 | 7:5bbf520bc14d | 15 | nodes = new MenuNode*[size]; |
ollie8 | 0:3f4d33765f10 | 16 | } |
ollie8 | 0:3f4d33765f10 | 17 | |
ollie8 | 9:7828182dbc9f | 18 | Menu::~Menu() { |
ollie8 | 9:7828182dbc9f | 19 | for (int i=0; i < sizeof(nodes); i++) { |
ollie8 | 9:7828182dbc9f | 20 | delete nodes[i]; |
ollie8 | 9:7828182dbc9f | 21 | } |
ollie8 | 9:7828182dbc9f | 22 | delete nodes; |
ollie8 | 9:7828182dbc9f | 23 | } |
ollie8 | 9:7828182dbc9f | 24 | |
ollie8 | 7:5bbf520bc14d | 25 | void Menu::addMenuNode(MenuNode & node) { |
ollie8 | 7:5bbf520bc14d | 26 | nodes[nodeCount] = &node; |
ollie8 | 7:5bbf520bc14d | 27 | nodeCount++; |
ollie8 | 0:3f4d33765f10 | 28 | } |
ollie8 | 0:3f4d33765f10 | 29 | |
ollie8 | 0:3f4d33765f10 | 30 | void Menu::enter() { |
ollie8 | 0:3f4d33765f10 | 31 | entered(this); |
ollie8 | 7:5bbf520bc14d | 32 | if (nodeCount > 0) { |
ollie8 | 7:5bbf520bc14d | 33 | nodes[0]->select(); |
ollie8 | 3:ece3d3346330 | 34 | } |
ollie8 | 0:3f4d33765f10 | 35 | } |
ollie8 | 0:3f4d33765f10 | 36 | |
ollie8 | 0:3f4d33765f10 | 37 | void Menu::up() { |
ollie8 | 7:5bbf520bc14d | 38 | if (selectedNode > 0) { |
ollie8 | 7:5bbf520bc14d | 39 | (*(nodes[selectedNode])).selected = false; |
ollie8 | 7:5bbf520bc14d | 40 | (*(nodes[--selectedNode])).select(); |
ollie8 | 0:3f4d33765f10 | 41 | } |
ollie8 | 0:3f4d33765f10 | 42 | } |
ollie8 | 0:3f4d33765f10 | 43 | |
ollie8 | 0:3f4d33765f10 | 44 | void Menu::down() { |
ollie8 | 7:5bbf520bc14d | 45 | if (selectedNode < nodeCount-1) { |
ollie8 | 7:5bbf520bc14d | 46 | (*(nodes[selectedNode])).selected = false; |
ollie8 | 7:5bbf520bc14d | 47 | (*(nodes[++selectedNode])).select(); |
ollie8 | 0:3f4d33765f10 | 48 | } |
ollie8 | 0:3f4d33765f10 | 49 | } |
ollie8 | 0:3f4d33765f10 | 50 | |
ollie8 | 0:3f4d33765f10 | 51 | int Menu::size() { |
ollie8 | 7:5bbf520bc14d | 52 | return sizeof(nodes); |
ollie8 | 0:3f4d33765f10 | 53 | } |
ollie8 | 0:3f4d33765f10 | 54 | |
ollie8 | 7:5bbf520bc14d | 55 | MenuNode & Menu::getSelectedNode() { |
ollie8 | 7:5bbf520bc14d | 56 | return *(nodes[selectedNode]); |
ollie8 | 0:3f4d33765f10 | 57 | } |
ollie8 | 0:3f4d33765f10 | 58 | |
ollie8 | 7:5bbf520bc14d | 59 | MenuNode::MenuNode(EnterMenuNode 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 | 7:5bbf520bc14d | 68 | MenuNode::MenuNode() { |
ollie8 | 0:3f4d33765f10 | 69 | selected = false; |
ollie8 | 0:3f4d33765f10 | 70 | row = 0; |
ollie8 | 0:3f4d33765f10 | 71 | } |
ollie8 | 0:3f4d33765f10 | 72 | |
ollie8 | 7:5bbf520bc14d | 73 | void MenuNode::enter() { |
ollie8 | 0:3f4d33765f10 | 74 | entered(this); |
ollie8 | 0:3f4d33765f10 | 75 | } |
ollie8 | 0:3f4d33765f10 | 76 | |
ollie8 | 7:5bbf520bc14d | 77 | char* MenuNode::getName() { |
ollie8 | 0:3f4d33765f10 | 78 | return name; |
ollie8 | 0:3f4d33765f10 | 79 | } |
ollie8 | 0:3f4d33765f10 | 80 | |
ollie8 | 7:5bbf520bc14d | 81 | void MenuNode::select() { |
ollie8 | 0:3f4d33765f10 | 82 | selected = true; |
ollie8 | 0:3f4d33765f10 | 83 | selection(this); |
ollie8 | 0:3f4d33765f10 | 84 | } |
ollie8 | 9:7828182dbc9f | 85 | |
ollie8 | 7:5bbf520bc14d | 86 | bool MenuNode::isSelected() { |
ollie8 | 0:3f4d33765f10 | 87 | return selected; |
ollie8 | 0:3f4d33765f10 | 88 | } |