Library for creating menu systems in displays.

Dependents:   VS1053Player

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?

UserRevisionLine numberNew 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 }