diff --git a/Makefile b/Makefile index a7caab37..2cc28f62 100644 --- a/Makefile +++ b/Makefile @@ -62,6 +62,7 @@ SRCS = \ menu/views/startup.c \ menu/views/system_info.c \ menu/views/settings_editor.c \ + menu/views/rtc.c \ utils/fs.c FONTS = \ diff --git a/src/menu/menu.c b/src/menu/menu.c index 5f555831..3e695f0d 100644 --- a/src/menu/menu.c +++ b/src/menu/menu.c @@ -148,6 +148,7 @@ static struct views_s { { view_music_player_init, view_music_player_display }, // MENU_MODE_MUSIC_PLAYER { view_credits_init, view_credits_display }, // MENU_MODE_CREDITS { view_settings_init, view_settings_display }, // MENU_MODE_SETTINGS_EDITOR + { view_rtc_init, view_rtc_display }, // MENU_MODE_RTC { view_load_rom_init, view_load_rom_display }, // MENU_MODE_LOAD_ROM { view_load_disk_init, view_load_disk_display }, // MENU_MODE_LOAD_DISK { view_load_emulator_init, view_load_emulator_display }, // MENU_MODE_LOAD_EMULATOR diff --git a/src/menu/menu_state.h b/src/menu/menu_state.h index 7c0c5f10..d29573d4 100644 --- a/src/menu/menu_state.h +++ b/src/menu/menu_state.h @@ -32,6 +32,7 @@ typedef enum { MENU_MODE_MUSIC_PLAYER, MENU_MODE_CREDITS, MENU_MODE_SETTINGS_EDITOR, + MENU_MODE_RTC, MENU_MODE_LOAD_ROM, MENU_MODE_LOAD_DISK, MENU_MODE_LOAD_EMULATOR, diff --git a/src/menu/views/browser.c b/src/menu/views/browser.c index ecc3ac2b..75ab0a4a 100644 --- a/src/menu/views/browser.c +++ b/src/menu/views/browser.c @@ -240,11 +240,16 @@ static void show_credits (menu_t *menu) { menu->next_mode = MENU_MODE_CREDITS; } +static void edit_rtc (menu_t *menu) { + menu->next_mode = MENU_MODE_RTC; +} + static component_context_menu_t settings_context_menu = { .list = { { .text = "Edit settings", .action = edit_settings }, { .text = "Show system info", .action = show_system_info }, { .text = "Show credits", .action = show_credits }, + { .text = "Adjust RTC", .action = edit_rtc }, COMPONENT_CONTEXT_MENU_LIST_END, } }; diff --git a/src/menu/views/rtc.c b/src/menu/views/rtc.c new file mode 100644 index 00000000..caeb9305 --- /dev/null +++ b/src/menu/views/rtc.c @@ -0,0 +1,66 @@ +#include +#include "views.h" + +// FIXME: add implementation! +// struct { +// uint16_t seconds; +// uint16_t minutes; +// uint16_t hours; +// uint16_t day; +// uint16_t month; +// uint16_t year; +// } adjusted_datetime; + +// static void save_adjusted_datetime () { + +// } + +static void process (menu_t *menu) { + if (menu->actions.back) { + menu->next_mode = MENU_MODE_BROWSER; + } +} + +static void draw (menu_t *menu, surface_t *d) { + rdpq_attach(d, NULL); + + component_background_draw(); + + component_layout_draw(); + + component_main_text_draw( + ALIGN_CENTER, VALIGN_TOP, + "ADJUST REAL TIME CLOCK\n" + "\n" + "\n" + "To set the date and time, please use the PC terminal\n" + "application and set via USB.\n\n" + "Current date & time: %s\n", + menu->current_time >= 0 ? ctime(&menu->current_time) : "Unknown\n" + ); + + component_main_text_draw( + ALIGN_LEFT, VALIGN_TOP, + "\n" + "\n" + ); + + + component_actions_bar_text_draw( + ALIGN_LEFT, VALIGN_TOP, + "\n" // "A: Save\n" + "B: Back" + ); + + rdpq_detach_show(); +} + + +void view_rtc_init (menu_t *menu) { + // Nothing to initialize (yet) +} + +void view_rtc_display (menu_t *menu, surface_t *display) { + process(menu); + draw(menu, display); +} diff --git a/src/menu/views/views.h b/src/menu/views/views.h index 58c610d3..2b7e0660 100644 --- a/src/menu/views/views.h +++ b/src/menu/views/views.h @@ -47,6 +47,9 @@ void view_load_disk_display (menu_t *menu, surface_t *display); void view_settings_init (menu_t *menu); void view_settings_display (menu_t *menu, surface_t *display); +void view_rtc_init (menu_t *menu); +void view_rtc_display (menu_t *menu, surface_t *display); + void view_load_emulator_init (menu_t *menu); void view_load_emulator_display (menu_t *menu, surface_t *display);