]> git.karo-electronics.de Git - oswald.git/blobdiff - ui/oswald_screens.c
Redesign to an event based handling
[oswald.git] / ui / oswald_screens.c
diff --git a/ui/oswald_screens.c b/ui/oswald_screens.c
new file mode 100644 (file)
index 0000000..b6158d8
--- /dev/null
@@ -0,0 +1,123 @@
+#include "oswald.h"
+#include "oswald_watch_faces.h"
+#include "Fonts.h"
+#include "LcdDisplay.h"
+
+#include "oswald_screens.h"
+
+void idle_handle_user_buttons(watch_button button)
+{
+}
+void idle_handle_events(u16t event, void *data)
+{
+       switch (event) {
+               case EVENT_ONE_SEC_TIMER:
+               case EVENT_SCREEN_VISIBLE:
+                       DrawLcdDigitalClock();
+                       break;
+               case EVENT_USER_BUTTONS:
+                       dbg_out("button event %d\n", *(int *)data);
+                       break;
+               default:
+                       break;
+       };
+}
+
+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 accel_handle_events(u16t event, void *data)
+{
+       switch (event) {
+               case EVENT_SCREEN_VISIBLE:
+                       draw_accel_screen();
+                       break;
+               case EVENT_USER_BUTTONS:
+                       dbg_out("button event %d\n", *(int *)data);
+                       break;
+               default:
+                       break;
+       };
+}
+
+void draw_datetime_setup_screen(void)
+{
+       lcd_clear_display();
+       SetFont(MetaWatch16);
+       WriteLcdString(2, 2, "Date / Time");
+       WriteLcdString(2, 18, "Setting");
+       WriteLcdString(2, 34, "22:39");
+       WriteLcdString(2, 50, "07.08.2012");
+}
+void datetime_setup_events(u16t event, void *data)
+{
+       switch (event) {
+               case EVENT_SCREEN_VISIBLE:
+                       draw_datetime_setup_screen();
+                       break;
+               case EVENT_USER_BUTTONS:
+                       dbg_out("button event %d\n", *(int *)data);
+                       break;
+               default:
+                       break;
+       };
+}
+
+static u8t test_menu_pos = 0;
+
+void draw_menu_test_screen(void)
+{
+       lcd_clear_display();
+       SetFont(MetaWatch16);
+       WriteLcdString(2, 2, "Menu");
+       SetFont(MetaWatch7);
+       WriteLcdString(2, 20, "Item 1");
+       WriteLcdString(2, 29, "Item 2");
+       WriteLcdString(2, 38, "Item 3");
+       WriteLcdString(2, 47, "Item 4");
+       WriteLcdString(2, 56, "Item 5");
+
+       WriteLcdString(50, 20+(9*test_menu_pos), "*");
+}
+
+static void handle_menu_user_buttons(watch_button button)
+{
+       switch (button) {
+               case BUTTON_A:
+                       test_menu_pos--;
+                       test_menu_pos%=5;
+                       break;
+               case BUTTON_B:
+                       test_menu_pos++;
+                       test_menu_pos%=5;
+                       break;
+               default:
+                       break;
+       }
+       draw_menu_test_screen();
+}
+
+void test_menu_handle_events(u16t event, void *data)
+{
+       switch (event) {
+               case EVENT_USER_BUTTONS:
+                       dbg_out("button event %d\n", *(int *)data);
+                       handle_menu_user_buttons(*(watch_button *)data);
+                       break;
+               case EVENT_SCREEN_VISIBLE:
+                       test_menu_pos = 0;
+                       draw_menu_test_screen();
+                       break;
+               default:
+                       break;
+       };
+}
+