#include "include.h" #include "func.h" #include "func_clock.h" #if TRACE_EN #define TRACE(...) printf(__VA_ARGS__) #else #define TRACE(...) #endif //创建1号时钟窗体,创建窗体中不要使用功能结构体 func_cb.f_cb compo_form_t *func_clock_form_create(void) { compo_button_t *btn; //新建窗体和表盘背景 compo_form_t *frm = compo_form_create(true); compo_form_add_image(frm, UI_BUF_DIALPLATE_1_BG_BIN, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); //电量 btn = compo_button_create_by_image(frm, UI_BUF_DIALPLATE_1_POWER_12_5_BIN); compo_setid(btn, COMPO_ID_BTN_POWER); compo_button_set_pos(btn, 90, 191); //时针 compo_datetime_t *hour = compo_datetime_create(frm, COMPO_DATETIME_TYPE_HOUR, UI_BUF_DIALPLATE_1_POINTER_H_BIN); compo_datetime_set_pos(hour, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(hour, 4, 6); //分针 compo_datetime_t *min = compo_datetime_create(frm, COMPO_DATETIME_TYPE_MINUTE, UI_BUF_DIALPLATE_1_POINTER_M_BIN); compo_datetime_set_pos(min, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(min, 4, 6); //秒针 compo_datetime_t *sec = compo_datetime_create(frm, COMPO_DATETIME_TYPE_SECOND, UI_BUF_DIALPLATE_1_POINTER_S_BIN); compo_datetime_set_pos(sec, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(sec, 32, 4); return frm; } //创建2号时钟窗体,创建窗体中不要使用功能结构体 func_cb.f_cb compo_form_t *func_clock_black_form_create(void) { //新建窗体和表盘背景 compo_form_t *frm = compo_form_create(true); compo_form_add_image(frm, UI_BUF_DIALPLATE_2_BG_BIN, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); //左边小表盘 compo_datetime_t *sec_l = compo_datetime_create(frm, COMPO_DATETIME_TYPE_LIFTDAIL, UI_BUF_DIALPLATE_2_POINTER_S_BIN); compo_datetime_set_pos(sec_l, 160, 255); compo_datetime_set_center(sec_l,3 , -64); //右边小表盘 compo_datetime_t *sec_r = compo_datetime_create(frm, COMPO_DATETIME_TYPE_RIGHTDAIL, UI_BUF_DIALPLATE_2_POINTER_S_BIN); compo_datetime_set_pos(sec_r, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(sec_r, 64, 3); //最小面的表盘 compo_datetime_t *sec_s = compo_datetime_create(frm, COMPO_DATETIME_TYPE_DAILBELOW, UI_BUF_DIALPLATE_2_POINTER_S_BIN); compo_datetime_set_pos(sec_s, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(sec_s, -64, 3); //时针 compo_datetime_t *hour = compo_datetime_create(frm, COMPO_DATETIME_TYPE_HOUR, UI_BUF_DIALPLATE_2_POINTER_H_BIN); compo_datetime_set_pos(hour, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(hour, 4, 6); //分针 compo_datetime_t *min = compo_datetime_create(frm, COMPO_DATETIME_TYPE_MINUTE, UI_BUF_DIALPLATE_2_POINTER_M_BIN); compo_datetime_set_pos(min, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(min, 4, 6); return frm; } //创建3号时钟窗体,创建窗体中不要使用功能结构体 func_cb.f_cb compo_form_t *func_clock_animal_form_create(void) { compo_button_t *btn; //新建窗体和表盘背景 compo_form_t *frm = compo_form_create(true); compo_form_add_image(frm, UI_BUF_DIALPLATE_3_BG_BIN, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); //时针 compo_datetime_t *hour = compo_datetime_create(frm, COMPO_DATETIME_TYPE_HOUR, UI_BUF_DIALPLATE_3_POINTER_H_BIN); compo_datetime_set_pos(hour, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(hour, 4, 6); //分针 compo_datetime_t *min = compo_datetime_create(frm, COMPO_DATETIME_TYPE_MINUTE, UI_BUF_DIALPLATE_3_POINTER_M_BIN); compo_datetime_set_pos(min, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(min, 4, 6); //秒针 compo_datetime_t *sec = compo_datetime_create(frm, COMPO_DATETIME_TYPE_SECOND, UI_BUF_DIALPLATE_3_POINTER_S_BIN); compo_datetime_set_pos(sec, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y); compo_datetime_set_center(sec, 32, 4); //左上角的按钮 btn = compo_button_create_by_image(frm, UI_BUF_DIALPLATE_3_TEMP_18_20_BIN); compo_setid(btn, COMPO_ID_BTN_TM); compo_button_set_pos(btn, 75, 59); //右上角的HR按钮 btn = compo_button_create_by_image(frm, UI_BUF_DIALPLATE_3_HR_1_BIN); compo_setid(btn, COMPO_ID_BTN_HR); compo_button_set_pos(btn, 251, 64); return frm; } //创建4号时钟窗体,创建窗体中不要使用功能结构体 func_cb.f_cb compo_form_t *func_clock6_form_create(void) { compo_button_t *btn; //新建窗体 compo_form_t *frm = compo_form_create(true); //按钮 btn = compo_button_create_by_image(frm, UI_BUF_DIALPLATE_6_NUM1_144_126_BIN); compo_setid(btn, COMPO_ID_BTN_HOUR); compo_button_set_pos(btn, 88, 117); compo_button_t *btn_min = compo_button_create_by_image(frm, UI_BUF_DIALPLATE_6_NUM2_144_126_BIN); compo_setid(btn_min, COMPO_ID_BTN_MINUTE); compo_button_set_pos(btn_min, 232, 117); compo_button_t *btn_second = compo_button_create_by_image(frm, UI_BUF_DIALPLATE_6_NUM3_144_126_BIN); compo_setid(btn_second, COMPO_ID_BTN_SECOND); compo_button_set_pos(btn_second, 88, 267); compo_button_t *btn_pwr = compo_button_create_by_image(frm, UI_BUF_DIALPLATE_6_NUM4_144_126_BIN); compo_setid(btn_pwr, COMPO_ID_BTN_POWER); compo_button_set_pos(btn_pwr, 232, 267); return frm; } //子功能公共事件处理 void func_clock_sub_process(void) { func_process(); //刷新UI } //子功能公共消息处理 void func_clock_sub_message(size_msg_t msg) { } //时钟表盘功能事件处理 static void func_clock_process(void) { func_process(); //刷新UI } //时钟表盘功能消息处理 static void func_clock_message(size_msg_t msg) { switch (msg) { case MSG_CTP_SHORT_UP: func_clock_sub_pullup(); //上拉菜单 break; case MSG_CTP_SHORT_RIGHT: func_clock_sub_side(); //右拉边菜单 break; case MSG_CTP_SHORT_DOWN: func_clock_sub_dropdown(); //下拉菜单 break; case MSG_CTP_LONG: //func_clock_sub_window(); break; default: func_message(msg); break; } } //进入时钟表盘功能 static void func_clock_enter(void) { func_cb.f_cb = func_zalloc(sizeof(f_clock_t)); func_cb.frm_main = func_clock_form_create(); } //退出时钟表盘功能 static void func_clock_exit(void) { func_cb.last = FUNC_CLOCK; } //时钟表盘功能 void func_clock(void) { printf("%s\n", __func__); func_clock_enter(); while (func_cb.sta == FUNC_CLOCK) { func_clock_process(); func_clock_message(msg_dequeue()); } func_clock_exit(); }