mcu_ab568x/userboot240328/app/projects/AB5681G_320/functions/func_clock.c
2025-05-30 18:03:10 +08:00

211 lines
7.0 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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