Release 1.01
DisplayCodesMenu.cpp
- Committer:
- foxbrianr
- Date:
- 2019-09-12
- Revision:
- 4:7226c43320b5
- Parent:
- 3:8395f7ab6d3e
- Child:
- 5:9f4d4f8ffc00
File content as of revision 4:7226c43320b5:
#include "mbed.h" #include "DisplayCodesMenu.h" #include "TimeUtilities.h" #include "ESCMControlApp.h" DisplayCodesMenu::DisplayCodesMenu(char* id): Menu(id) { active_selection = 0; row=0; column=0; update_needed=1; current_index=0; current_line = 1; top = 0; } void DisplayCodesMenu::init() { active_selection = 0; row=0; column=0; update_needed=1; current_index= 0; current_line = 1; top = 0; } void DisplayCodesMenu::display(LCD * lcd) { static int lastPos = 0; static int lastSize = 0; int update_page = 0; char buf[40]; //displayCurrentTime(lcd); if(escmEventLog.head_ != lastPos ) { current_index = 0; top = current_index; bottom = top + 2; lastPos = escmEventLog.head_; lastSize = escmEventLog.size(); update_needed=1; } // paging if (current_index < top ) { top = current_index ; bottom = current_index + 2; update_page = 1; update_needed=1; } else if (current_index > bottom) { top = current_index - 2; bottom = current_index; update_page = 1; update_needed=1; } else { } if (update_needed) { lock(); switch (active_selection ) { case 1: lcd->cls(); lcd->locate(1,0); lcd->printf("Are you sure you want to erase"); lcd->locate(2,0); lcd->printf("all events (Press Mode)?"); update_needed = 0; break; case 2: lcd->cls(); lcd->locate(1,0); lcd->printf("Deleting Events..."); erase_log = 0; escmEventLog.reset(); escmEventLog.save(); update_needed = 1; active_selection = 0; current_index = 0; break; default: lcd->cls(); lcd->locate(0,0); #if 1 lcd->printf(" ID | Port | Unit | Time"); #else lcd->locate(0,0); lcd->printf("size= %d, index=%d, %d, %d %d", escmEventLog.size(), current_index, current_line, top, bottom); #endif // update display for(int i=0; i<3; i++) { int index = top + i; int line = (1+i); int selected = current_index == index; ESCM_Event *event = escmEventLog.index (index) ; if (event != NULL && index < escmEventLog.size() ) { sprintf(buf,"%02d | %02d | %02d | %02d:%02d:%02d %02d/%02d/%04d", index + 1, event->port, event->address, event->hours, event->mins, event->secs, event->month, event->day, event->year ); } else { sprintf(buf,"%-s | %-s | %-s | %-s", "--", "--", "--", "- N/A -"); } if(selected) { lcd->locate(line,0); lcd->printf(">%-39s",buf); } else { lcd->locate(line,0); lcd->printf(" %-39s",buf); } //lcd->locate(line,2); //lcd->printf(buf); } update_page = 0; update_needed=0; break; } unlock(); } } void DisplayCodesMenu::pressSet() { switch(active_selection) { case 0: { // normal /* ESCM_Event *event = escmEventLog.index(current_index); if (event!=NULL) { ESCMControlApp::say( "%s is open", addressMap.getDescription(event->address)); } */ update_needed = 0; break; } case 1: // press yes active_selection = 2; update_needed = 1; break; default: active_selection = 0; break; } } void DisplayCodesMenu::pressMode() { switch(active_selection) { case 0: // normal active_selection = 1; update_needed = 1; break; default: active_selection = 0; update_needed = 1; break; } } void DisplayCodesMenu::pressDown() { current_line++; current_index++; if (current_index >= escmEventLog.size() ) current_index = 0; if (current_line > 3 ) current_line = 3; update_needed=1; } void DisplayCodesMenu::pressUp() { current_line--; current_index--; if (current_index < 0) current_index = escmEventLog.size()-1; if (current_line < 1 ) current_line = 1; update_needed =1; }