Release 1.01

Dependents:   mbed_escm2000

Revision:
4:7226c43320b5
Parent:
3:8395f7ab6d3e
Child:
5:9f4d4f8ffc00
--- 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;
 }