211 lines
7.0 KiB
C
211 lines
7.0 KiB
C
#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();
|
||
}
|