Library for creating menu systems in displays.
Embed:
(wiki syntax)
Show/hide line numbers
Menu.cpp
00001 /* 00002 * Menu.cpp 00003 * 00004 * Created on: 30 Oct 2011 00005 * Author: ollie 00006 */ 00007 #include "Menu.h" 00008 00009 Menu::Menu(EnterMenu enterAction, SelectionChange selectionChangeAct, char* newName, int size) : MenuNode() { 00010 entered = enterAction; 00011 name = newName; 00012 selection = selectionChangeAct; 00013 selectedNode = 0; 00014 nodeCount = 0; 00015 nodes = new MenuNode*[size]; 00016 } 00017 00018 Menu::~Menu() { 00019 for (int i=0; i < sizeof(nodes); i++) { 00020 delete nodes[i]; 00021 } 00022 delete nodes; 00023 } 00024 00025 void Menu::addMenuNode(MenuNode & node) { 00026 nodes[nodeCount] = &node; 00027 nodeCount++; 00028 } 00029 00030 void Menu::enter() { 00031 entered(this); 00032 if (nodeCount > 0) { 00033 nodes[0]->select(); 00034 } 00035 } 00036 00037 void Menu::up() { 00038 if (selectedNode > 0) { 00039 (*(nodes[selectedNode])).selected = false; 00040 (*(nodes[--selectedNode])).select(); 00041 } 00042 } 00043 00044 void Menu::down() { 00045 if (selectedNode < nodeCount-1) { 00046 (*(nodes[selectedNode])).selected = false; 00047 (*(nodes[++selectedNode])).select(); 00048 } 00049 } 00050 00051 int Menu::size() { 00052 return sizeof(nodes); 00053 } 00054 00055 MenuNode & Menu::getSelectedNode() { 00056 return *(nodes[selectedNode]); 00057 } 00058 00059 MenuNode::MenuNode(EnterMenuNode enterAction, SelectionChange selectionChangeAct, char* newname) { 00060 name = new char[12]; 00061 strcpy(name, newname); 00062 entered = enterAction; 00063 selection = selectionChangeAct; 00064 selected = false; 00065 row = 0; 00066 } 00067 00068 MenuNode::MenuNode() { 00069 selected = false; 00070 row = 0; 00071 } 00072 00073 void MenuNode::enter() { 00074 entered(this); 00075 } 00076 00077 char* MenuNode::getName() { 00078 return name; 00079 } 00080 00081 void MenuNode::select() { 00082 selected = true; 00083 selection(this); 00084 } 00085 00086 bool MenuNode::isSelected() { 00087 return selected; 00088 }
Generated on Wed Jul 13 2022 20:05:17 by 1.7.2