From 7888a7e39854e664e19bfa8474796076eb3c59bc Mon Sep 17 00:00:00 2001 From: Federico Amedeo Izzo Date: Tue, 22 Dec 2020 17:49:00 +0100 Subject: [PATCH] UI: Add time and date settings, cannot be set right now --- openrtx/include/ui.h | 1 + openrtx/src/ui.c | 55 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/openrtx/include/ui.h b/openrtx/include/ui.h index d8929728..e43081cb 100644 --- a/openrtx/include/ui.h +++ b/openrtx/include/ui.h @@ -37,6 +37,7 @@ enum uiScreen MENU_SMS, MENU_GPS, MENU_SETTINGS, + SETTINGS_TIMEDATE, LOW_BAT }; diff --git a/openrtx/src/ui.c b/openrtx/src/ui.c index 2003708e..3b7f9e5a 100644 --- a/openrtx/src/ui.c +++ b/openrtx/src/ui.c @@ -348,8 +348,8 @@ bool _ui_drawMainVFO(state_t* last_state) void _ui_drawMenuTop() { - // Print "Menu" on top bar gfx_clearScreen(); + // Print "Menu" on top bar gfx_print(layout.top_pos, "Menu", layout.top_font, TEXT_ALIGN_CENTER, color_white); // Print menu entries @@ -359,8 +359,8 @@ void _ui_drawMenuTop() void _ui_drawMenuSettings() { - // Print "Settings" on top bar gfx_clearScreen(); + // Print "Settings" on top bar gfx_print(layout.top_pos, "Settings", layout.top_font, TEXT_ALIGN_CENTER, color_white); // Print menu entries @@ -368,6 +368,25 @@ void _ui_drawMenuSettings() _ui_drawMenuList(pos, settings_items, SETTINGS_NUM, menu_selected); } +void _ui_drawSettingsTimeDate(state_t* last_state) +{ + gfx_clearScreen(); + // Print "Time&Date" on top bar + gfx_print(layout.top_pos, "Time&Date", layout.top_font, + TEXT_ALIGN_CENTER, color_white); + // Print current time and date + char date_buf[12] = ""; + char time_buf[9] = ""; + snprintf(date_buf, sizeof(date_buf), "%02d/%02d/%02d", + last_state->time.date, last_state->time.month, last_state->time.year); + snprintf(time_buf, sizeof(time_buf), "%02d:%02d:%02d", + last_state->time.hour, last_state->time.minute, last_state->time.second); + gfx_print(layout.line2_pos, date_buf, layout.line2_font, TEXT_ALIGN_CENTER, + color_white); + gfx_print(layout.line3_pos, time_buf, layout.line3_font, TEXT_ALIGN_CENTER, + color_white); +} + void ui_init() { redraw_needed = true; @@ -491,7 +510,22 @@ void ui_updateFSM(event_t event, bool *sync_rtx) break; // Settings menu screen case MENU_SETTINGS: - if(msg.keys & KEY_ESC) + if(msg.keys & KEY_ENTER) + { + // Open selected menu item + switch(menu_selected) + { + // TODO: Add missing submenu states + case 0: + state.ui_screen = SETTINGS_TIMEDATE; + break; + default: + state.ui_screen = MENU_TOP; + } + // Reset menu selection + menu_selected = 0; + } + else if(msg.keys & KEY_ESC) { // Return to top menu state.ui_screen = MENU_TOP; @@ -499,6 +533,16 @@ void ui_updateFSM(event_t event, bool *sync_rtx) menu_selected = 0; } break; + // Time&Date settingsscreen + case SETTINGS_TIMEDATE: + if(msg.keys & KEY_ESC) + { + // Return to settings menu + state.ui_screen = MENU_SETTINGS; + // Reset menu selection + menu_selected = 0; + } + break; } } } @@ -529,6 +573,11 @@ bool ui_updateGUI(state_t last_state) _ui_drawMenuSettings(); screen_update = true; break; + // Time&Date settings screen + case SETTINGS_TIMEDATE: + _ui_drawSettingsTimeDate(&last_state); + screen_update = true; + break; // Low battery screen case LOW_BAT: screen_update = _ui_drawLowBatteryScreen();