X-Git-Url: https://git.karo-electronics.de/?p=oswald.git;a=blobdiff_plain;f=ui%2Foswald_main.c;h=dc8cfa1c34401f5ad4553937f2c05dc4f4ea7331;hp=9dd69ccac87166010f2d9aac62b1045af1ce4132;hb=013b763c4c6740bb48dfcb28c2dd8547ff7e7697;hpb=e09935ae9396421171a3bc4e32320874a0bfd193 diff --git a/ui/oswald_main.c b/ui/oswald_main.c index 9dd69cc..dc8cfa1 100644 --- a/ui/oswald_main.c +++ b/ui/oswald_main.c @@ -1,5 +1,7 @@ #include "oswald.h" #include "oswald_watch_faces.h" +#include "Fonts.h" +#include "LcdDisplay.h" #include "oswald_main.h" @@ -13,21 +15,13 @@ watch_state OswaldState; void update_screen(void) { - switch (OswaldState.screen) { - case IDLE_SCREEN: - if (OswaldState.idle_draw_func != NULL) - OswaldState.idle_draw_func(OswaldState.idle_show_seconds); - break; - case APPLICATION_SCREEN: - break; - deafault: - break; - }; + if (OswaldState.user_screendraw_func != NULL) + OswaldState.user_screendraw_func(); } void oswald_change_to_screen(screen_number screen) { - // we spare the update if no change + // we spare the update if no change happened if (OswaldState.screen != screen) { OswaldState.screen = screen; update_screen(); @@ -67,14 +61,65 @@ void oswald_one_second_tick(void) update_screen(); } +void draw_accel_screen(void) +{ + lcd_clear_display(); + SetFont(MetaWatch16); + WriteLcdString(2, 2, "X:"); + WriteLcdString(20, 2, "123"); + WriteLcdString(2, 18, "Z:"); + WriteLcdString(20, 18, "123"); + WriteLcdString(2, 34, "Y:"); + WriteLcdString(20, 34, "123"); +} + +void idle_handle_user_buttons(watch_button button) +{ +} + void oswald_handle_button_press(watch_button button) { + switch (button) { + case BUTTON_A: + case BUTTON_B: + case BUTTON_D: + case BUTTON_E: + if (OswaldState.user_button_func != NULL) + OswaldState.user_button_func(button); + break; + case BUTTON_C: + // next screen + OswaldState.screen++; + if (OswaldState.screen >= LAST_SCREEN) { + OswaldState.screen = IDLE_SCREEN; + OswaldState.user_button_func = idle_handle_user_buttons; + OswaldState.user_screendraw_func = DrawLcdDigitalClock; + } else { + switch (OswaldState.screen) { + case SETTING_DATETIME_SCREEN: + OswaldState.user_button_func = idle_handle_user_buttons; + OswaldState.user_screendraw_func = draw_accel_screen; + break; + default: + break; + }; + }; + update_screen(); + break; + case BUTTON_F: + // backlight on/off + break; + default: + // should never get here + break; + }; } void oswald_init(void) { OswaldState.screen = IDLE_SCREEN; - OswaldState.idle_draw_func = DrawLcdDigitalClock; OswaldState.idle_show_seconds = FALSE; + OswaldState.user_screendraw_func = DrawLcdDigitalClock; + OswaldState.user_button_func = idle_handle_user_buttons; }