#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;
	};
}