Rtc context menu (#78)

<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Add basic RTC context menu.

## Motivation and Context
<!--- What does this sample do? What problem does it solve? -->
<!--- If it fixes/closes/resolves an open issue, please link to the
issue here -->
Improves user experience.

## How Has This Been Tested?
<!-- (if applicable) -->
<!--- Please describe in detail how you tested your sample/changes. -->
<!--- Include details of your testing environment, and the tests you ran
to -->
<!--- see how your change affects other areas of the code, etc. -->

## Screenshots
<!-- (if appropriate): -->

## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [x] Improvement (non-breaking change that adds a new feature)
- [ ] Bug fix (fixes an issue)
- [ ] Breaking change (breaking change)
- [ ] Config and build (change in the configuration and build system,
has no impact on code or features)

## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes
that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
- [ ] My code follows the code style of this project.
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added tests to cover my changes.
- [ ] All new and existing tests passed.

<!--- It would be nice if you could sign off your contribution by
replacing the name with your GitHub user name and GitHub email contact.
-->
Signed-off-by: GITHUB_USER <GITHUB_USER_EMAIL>
This commit is contained in:
Robin Jones 2023-12-22 20:53:38 +00:00 committed by GitHub
parent 70675d085c
commit c4a6d1515d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 77 additions and 0 deletions

View File

@ -62,6 +62,7 @@ SRCS = \
menu/views/startup.c \ menu/views/startup.c \
menu/views/system_info.c \ menu/views/system_info.c \
menu/views/settings_editor.c \ menu/views/settings_editor.c \
menu/views/rtc.c \
utils/fs.c utils/fs.c
FONTS = \ FONTS = \

View File

@ -148,6 +148,7 @@ static struct views_s {
{ view_music_player_init, view_music_player_display }, // MENU_MODE_MUSIC_PLAYER { view_music_player_init, view_music_player_display }, // MENU_MODE_MUSIC_PLAYER
{ view_credits_init, view_credits_display }, // MENU_MODE_CREDITS { view_credits_init, view_credits_display }, // MENU_MODE_CREDITS
{ view_settings_init, view_settings_display }, // MENU_MODE_SETTINGS_EDITOR { 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_rom_init, view_load_rom_display }, // MENU_MODE_LOAD_ROM
{ view_load_disk_init, view_load_disk_display }, // MENU_MODE_LOAD_DISK { view_load_disk_init, view_load_disk_display }, // MENU_MODE_LOAD_DISK
{ view_load_emulator_init, view_load_emulator_display }, // MENU_MODE_LOAD_EMULATOR { view_load_emulator_init, view_load_emulator_display }, // MENU_MODE_LOAD_EMULATOR

View File

@ -32,6 +32,7 @@ typedef enum {
MENU_MODE_MUSIC_PLAYER, MENU_MODE_MUSIC_PLAYER,
MENU_MODE_CREDITS, MENU_MODE_CREDITS,
MENU_MODE_SETTINGS_EDITOR, MENU_MODE_SETTINGS_EDITOR,
MENU_MODE_RTC,
MENU_MODE_LOAD_ROM, MENU_MODE_LOAD_ROM,
MENU_MODE_LOAD_DISK, MENU_MODE_LOAD_DISK,
MENU_MODE_LOAD_EMULATOR, MENU_MODE_LOAD_EMULATOR,

View File

@ -240,11 +240,16 @@ static void show_credits (menu_t *menu) {
menu->next_mode = MENU_MODE_CREDITS; 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 = { static component_context_menu_t settings_context_menu = {
.list = { .list = {
{ .text = "Edit settings", .action = edit_settings }, { .text = "Edit settings", .action = edit_settings },
{ .text = "Show system info", .action = show_system_info }, { .text = "Show system info", .action = show_system_info },
{ .text = "Show credits", .action = show_credits }, { .text = "Show credits", .action = show_credits },
{ .text = "Adjust RTC", .action = edit_rtc },
COMPONENT_CONTEXT_MENU_LIST_END, COMPONENT_CONTEXT_MENU_LIST_END,
} }
}; };

66
src/menu/views/rtc.c Normal file
View File

@ -0,0 +1,66 @@
#include <time.h>
#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);
}

View File

@ -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_init (menu_t *menu);
void view_settings_display (menu_t *menu, surface_t *display); 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_init (menu_t *menu);
void view_load_emulator_display (menu_t *menu, surface_t *display); void view_load_emulator_display (menu_t *menu, surface_t *display);