Library for creating menu systems in displays.

Dependents:   VS1053Player

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?

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