Release 1.01
Menu.cpp@3:8395f7ab6d3e, 2019-07-25 (annotated)
- Committer:
- foxbrianr
- Date:
- Thu Jul 25 00:42:49 2019 +0000
- Revision:
- 3:8395f7ab6d3e
- Parent:
- 1:84d263c8932d
- Child:
- 4:7226c43320b5
Baseline for testing
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
pyeh9 | 0:577f0ec71f4c | 1 | #include "mbed.h" |
pyeh9 | 0:577f0ec71f4c | 2 | #include "Menu.h" |
pyeh9 | 0:577f0ec71f4c | 3 | #include "Selection.h" |
pyeh9 | 0:577f0ec71f4c | 4 | |
foxbrianr | 3:8395f7ab6d3e | 5 | Menu::Menu(char *id) : menuID(id), parent(NULL),update_needed(1) |
foxbrianr | 3:8395f7ab6d3e | 6 | { |
foxbrianr | 3:8395f7ab6d3e | 7 | selections.clear(); |
foxbrianr | 3:8395f7ab6d3e | 8 | } |
foxbrianr | 3:8395f7ab6d3e | 9 | |
foxbrianr | 3:8395f7ab6d3e | 10 | Menu::Menu(string id) : menuID(id), parent(NULL),update_needed(1) |
pyeh9 | 0:577f0ec71f4c | 11 | { |
pyeh9 | 0:577f0ec71f4c | 12 | selections.clear(); |
pyeh9 | 0:577f0ec71f4c | 13 | } |
pyeh9 | 0:577f0ec71f4c | 14 | |
pyeh9 | 0:577f0ec71f4c | 15 | void Menu::add(const Selection &toAdd) |
pyeh9 | 0:577f0ec71f4c | 16 | { |
pyeh9 | 0:577f0ec71f4c | 17 | selections.push_back(toAdd); |
pyeh9 | 0:577f0ec71f4c | 18 | } |
pyeh9 | 0:577f0ec71f4c | 19 | |
pyeh9 | 0:577f0ec71f4c | 20 | |
foxbrianr | 3:8395f7ab6d3e | 21 | void Menu::select(void) |
foxbrianr | 3:8395f7ab6d3e | 22 | { |
foxbrianr | 3:8395f7ab6d3e | 23 | } |
foxbrianr | 3:8395f7ab6d3e | 24 | |
foxbrianr | 3:8395f7ab6d3e | 25 | void Menu::display(LCD * lcd) |
foxbrianr | 3:8395f7ab6d3e | 26 | { |
foxbrianr | 3:8395f7ab6d3e | 27 | lcd->writeLine(0,"Default Menu"); |
foxbrianr | 3:8395f7ab6d3e | 28 | #if 0 |
foxbrianr | 3:8395f7ab6d3e | 29 | for ( int i=0; i< lcd->rows();i++) |
foxbrianr | 3:8395f7ab6d3e | 30 | { |
foxbrianr | 3:8395f7ab6d3e | 31 | if ( i < selections.size()) |
foxbrianr | 3:8395f7ab6d3e | 32 | { |
foxbrianr | 3:8395f7ab6d3e | 33 | //if (i==cursorLine) { |
foxbrianr | 3:8395f7ab6d3e | 34 | // lcd->character(i,0,'>'); |
foxbrianr | 3:8395f7ab6d3e | 35 | //} |
foxbrianr | 3:8395f7ab6d3e | 36 | fprintf(stdout, "(%d) i = %s\n\r", selections[i].getText()); |
foxbrianr | 3:8395f7ab6d3e | 37 | lcd->writeLine(i,selections[i].getText()); |
foxbrianr | 3:8395f7ab6d3e | 38 | } |
foxbrianr | 3:8395f7ab6d3e | 39 | } |
foxbrianr | 3:8395f7ab6d3e | 40 | #endif |
foxbrianr | 3:8395f7ab6d3e | 41 | } |
foxbrianr | 3:8395f7ab6d3e | 42 | |
foxbrianr | 3:8395f7ab6d3e | 43 | |
foxbrianr | 3:8395f7ab6d3e | 44 | void Menu::moveUp() |
foxbrianr | 3:8395f7ab6d3e | 45 | { |
foxbrianr | 3:8395f7ab6d3e | 46 | cursorLine--; |
foxbrianr | 3:8395f7ab6d3e | 47 | if (cursorLine < 0 ) { |
foxbrianr | 3:8395f7ab6d3e | 48 | cursorLine = lcd->rows() -1 ; |
foxbrianr | 3:8395f7ab6d3e | 49 | //if (top > 0 ) top -=4; // page menu if needed |
foxbrianr | 3:8395f7ab6d3e | 50 | } |
foxbrianr | 3:8395f7ab6d3e | 51 | |
foxbrianr | 3:8395f7ab6d3e | 52 | |
foxbrianr | 3:8395f7ab6d3e | 53 | if(cursorPos > 0) |
foxbrianr | 3:8395f7ab6d3e | 54 | { |
foxbrianr | 3:8395f7ab6d3e | 55 | cursorPos--; |
foxbrianr | 3:8395f7ab6d3e | 56 | } |
foxbrianr | 3:8395f7ab6d3e | 57 | |
foxbrianr | 3:8395f7ab6d3e | 58 | printCursor(); |
foxbrianr | 3:8395f7ab6d3e | 59 | //printMenu(); |
foxbrianr | 3:8395f7ab6d3e | 60 | |
foxbrianr | 3:8395f7ab6d3e | 61 | |
foxbrianr | 3:8395f7ab6d3e | 62 | printf ("UP:%d %d ", cursorLine , cursorPos ); |
foxbrianr | 3:8395f7ab6d3e | 63 | } |
foxbrianr | 3:8395f7ab6d3e | 64 | |
foxbrianr | 3:8395f7ab6d3e | 65 | void Menu::moveDown() |
foxbrianr | 3:8395f7ab6d3e | 66 | { |
foxbrianr | 3:8395f7ab6d3e | 67 | |
foxbrianr | 3:8395f7ab6d3e | 68 | cursorLine++; |
foxbrianr | 3:8395f7ab6d3e | 69 | if (cursorLine >= lcd->rows() ) { |
foxbrianr | 3:8395f7ab6d3e | 70 | cursorLine = 0; |
foxbrianr | 3:8395f7ab6d3e | 71 | //if (top < activeMenu->selections.size() ) top +=4; // page menu if needed |
foxbrianr | 3:8395f7ab6d3e | 72 | } |
foxbrianr | 3:8395f7ab6d3e | 73 | |
foxbrianr | 3:8395f7ab6d3e | 74 | if(cursorPos < selections.size()){ |
foxbrianr | 3:8395f7ab6d3e | 75 | cursorPos++; |
foxbrianr | 3:8395f7ab6d3e | 76 | } |
foxbrianr | 3:8395f7ab6d3e | 77 | |
foxbrianr | 3:8395f7ab6d3e | 78 | printCursor(); |
foxbrianr | 3:8395f7ab6d3e | 79 | //printMenu(); |
foxbrianr | 3:8395f7ab6d3e | 80 | |
foxbrianr | 3:8395f7ab6d3e | 81 | printf ("DOWN:%d %d ", |
foxbrianr | 3:8395f7ab6d3e | 82 | cursorLine , cursorPos ); |
foxbrianr | 3:8395f7ab6d3e | 83 | } |
foxbrianr | 3:8395f7ab6d3e | 84 | |
foxbrianr | 3:8395f7ab6d3e | 85 | void Menu::pressMode() |
foxbrianr | 3:8395f7ab6d3e | 86 | { |
foxbrianr | 3:8395f7ab6d3e | 87 | |
foxbrianr | 3:8395f7ab6d3e | 88 | } |
foxbrianr | 3:8395f7ab6d3e | 89 | |
foxbrianr | 3:8395f7ab6d3e | 90 | void Menu::pressSet() |
foxbrianr | 3:8395f7ab6d3e | 91 | { |
foxbrianr | 3:8395f7ab6d3e | 92 | |
foxbrianr | 3:8395f7ab6d3e | 93 | } |
foxbrianr | 3:8395f7ab6d3e | 94 | |
foxbrianr | 3:8395f7ab6d3e | 95 | void Menu::pressUp() |
foxbrianr | 3:8395f7ab6d3e | 96 | { |
foxbrianr | 3:8395f7ab6d3e | 97 | |
foxbrianr | 3:8395f7ab6d3e | 98 | } |
foxbrianr | 3:8395f7ab6d3e | 99 | |
foxbrianr | 3:8395f7ab6d3e | 100 | void Menu::pressDown() |
foxbrianr | 3:8395f7ab6d3e | 101 | { |
foxbrianr | 3:8395f7ab6d3e | 102 | |
foxbrianr | 3:8395f7ab6d3e | 103 | } |
foxbrianr | 3:8395f7ab6d3e | 104 | |
foxbrianr | 3:8395f7ab6d3e | 105 | |
foxbrianr | 3:8395f7ab6d3e | 106 | void Menu::pressClear() |
foxbrianr | 3:8395f7ab6d3e | 107 | { |
foxbrianr | 3:8395f7ab6d3e | 108 | |
foxbrianr | 3:8395f7ab6d3e | 109 | } |
foxbrianr | 3:8395f7ab6d3e | 110 | |
foxbrianr | 3:8395f7ab6d3e | 111 | |
foxbrianr | 3:8395f7ab6d3e | 112 | void Menu::printMenu() |
foxbrianr | 3:8395f7ab6d3e | 113 | { |
foxbrianr | 3:8395f7ab6d3e | 114 | for (int i=0;i<lcd->rows();i++) |
foxbrianr | 3:8395f7ab6d3e | 115 | { |
foxbrianr | 3:8395f7ab6d3e | 116 | if ((i) < selections.size()) |
foxbrianr | 3:8395f7ab6d3e | 117 | { |
foxbrianr | 3:8395f7ab6d3e | 118 | lcd->writeLine(i,selections[i].selText); |
foxbrianr | 3:8395f7ab6d3e | 119 | } |
foxbrianr | 3:8395f7ab6d3e | 120 | else |
foxbrianr | 3:8395f7ab6d3e | 121 | { |
foxbrianr | 3:8395f7ab6d3e | 122 | lcd->writeLine(i,""); |
foxbrianr | 3:8395f7ab6d3e | 123 | } |
foxbrianr | 3:8395f7ab6d3e | 124 | } |
foxbrianr | 3:8395f7ab6d3e | 125 | |
foxbrianr | 3:8395f7ab6d3e | 126 | lcd->dump(NULL); |
foxbrianr | 3:8395f7ab6d3e | 127 | } |
foxbrianr | 3:8395f7ab6d3e | 128 | |
foxbrianr | 3:8395f7ab6d3e | 129 | void Menu::printCursor() |
foxbrianr | 3:8395f7ab6d3e | 130 | { |
foxbrianr | 3:8395f7ab6d3e | 131 | |
foxbrianr | 3:8395f7ab6d3e | 132 | for(int i=0;i<lcd->rows();i++) |
foxbrianr | 3:8395f7ab6d3e | 133 | { |
foxbrianr | 3:8395f7ab6d3e | 134 | lcd->locate(i,0); |
foxbrianr | 3:8395f7ab6d3e | 135 | |
foxbrianr | 3:8395f7ab6d3e | 136 | if (i==cursorLine) { |
foxbrianr | 3:8395f7ab6d3e | 137 | lcd->character(i,0,'>'); |
foxbrianr | 3:8395f7ab6d3e | 138 | } |
foxbrianr | 3:8395f7ab6d3e | 139 | else |
foxbrianr | 3:8395f7ab6d3e | 140 | { |
foxbrianr | 3:8395f7ab6d3e | 141 | lcd->character(i,0,' '); |
foxbrianr | 3:8395f7ab6d3e | 142 | } |
foxbrianr | 3:8395f7ab6d3e | 143 | } |
foxbrianr | 3:8395f7ab6d3e | 144 | |
foxbrianr | 3:8395f7ab6d3e | 145 | lcd->dump(NULL); |
foxbrianr | 3:8395f7ab6d3e | 146 | |
foxbrianr | 3:8395f7ab6d3e | 147 | } |