Release 1.01
Diff: EditTimeMenu.cpp
- Revision:
- 4:7226c43320b5
- Parent:
- 3:8395f7ab6d3e
- Child:
- 5:9f4d4f8ffc00
diff -r 8395f7ab6d3e -r 7226c43320b5 EditTimeMenu.cpp --- a/EditTimeMenu.cpp Thu Jul 25 00:42:49 2019 +0000 +++ b/EditTimeMenu.cpp Thu Sep 12 11:27:50 2019 +0000 @@ -2,11 +2,7 @@ #include "EditTimeMenu.h" #include "TimeUtilities.h" - -RealTimeClock rtc; - - -EditTimeMenu::EditTimeMenu(string id): Menu(id) +EditTimeMenu::EditTimeMenu(char* id): Menu(id) { active_selection = 0; @@ -31,8 +27,14 @@ } +void EditTimeMenu::init() +{ + active_selection = 0; + update_needed = 1; +} -void EditTimeMenu::display(LCD * lcd) + +void EditTimeMenu::display(LCD * lcd) { char setTime = 1; char setDate = 1; @@ -42,61 +44,84 @@ time_t rawtime; struct tm * timeinfo; + int cur_hours,cur_mins,cur_secs,cur_year,cur_month,cur_day; + + time ( &rawtime ); timeinfo = localtime ( &rawtime ); timeinfo = localtime (&rawtime); - if (!active_selection){ - hours = timeinfo->tm_hour; - mins = timeinfo->tm_min; - secs = timeinfo->tm_sec; - years = timeinfo->tm_year+1900; - months = timeinfo->tm_mon + 1; - days = timeinfo->tm_mday; - lcd->setCursorMode (0) ; - } - else - { - // edit mode - secs = timeinfo->tm_sec; - lcd->setCursorMode (1) ; - } + cur_hours = timeinfo->tm_hour; + cur_mins = timeinfo->tm_min; + cur_secs = timeinfo->tm_sec; + cur_year = timeinfo->tm_year+1900; + cur_month = timeinfo->tm_mon + 1; + cur_day = timeinfo->tm_mday; - switch(active_selection) + + + + if ( update_needed ) { - case 1: - lcd->writeLine(0,"Set Time (hours) :"); - break; - case 2: - lcd->writeLine(0,"Set Time (min) :"); - break; - case 3: - lcd->writeLine(0,"Set Time (sec) :"); - break; - case 4: - lcd->writeLine(0,"Set Date (month) :"); - break; - case 5: - lcd->writeLine(0,"Set Date (day) :"); - break; - case 6: - lcd->writeLine(0,"Set Date (year) :"); - break; - default: - lcd->writeLine(0,"Current Time/Date :"); - break; - }; - //rtc.GetTimeString(buf); - //sprintf(current,"%02d:%02d:%02d", timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); + lcd->cls(); + + lcd->locate(0,0); + lcd->printf("Current Time/Date :"); + + time ( &rawtime ); + timeinfo = localtime ( &rawtime ); timeinfo = localtime (&rawtime); + + if (!active_selection) + { + hours = cur_hours; + mins = cur_mins; + secs = cur_secs; + years = cur_year; + months = cur_month; + days = cur_day; + //lcd->setCursorMode (0) ; + } + else + { + // edit mode + secs = timeinfo->tm_sec; + + lcd->locate(2,0); + switch(active_selection) + { + case 1: + lcd->printf("Set Time (hours) : %02d", hours); + break; + case 2: + lcd->printf("Set Time (min) : %02d", mins); + break; + case 3: + lcd->printf("Set Time (sec) : %02d", secs); + break; + case 4: + lcd->printf("Set Date (month) : %02d", months); + break; + case 5: + lcd->printf("Set Date (day) : %02d", days); + break; + case 6: + lcd->printf("Set Date (year) : %02d", years); + break; + default: + break; + }; + + lcd->locate(3,0); + lcd->printf("Updated Time :"); + + lcd->locate(3,20); + lcd->printf(" %02d:%02d %02d/%02d/%04d", hours, mins, months, days, years); + + } + + update_needed = 0; + } + displayCurrentTime(lcd); - if (setTime) { - sprintf(current,"%02d:%02d", hours,mins); - lcd->writeLine(1,current); - } - - if (setDate) { - sprintf(current,"%02d/%02d/%02d", months, days, years); - lcd->writeLine(2,current); - } } @@ -105,7 +130,9 @@ { // advance thru if (active_selection++ > 6 ) - active_selection = 0; + { + active_selection = 0; + } update_needed = 1; }