152 lines
4.5 KiB
C
152 lines
4.5 KiB
C
#include "include.h"
|
|
#include "func.h"
|
|
#include "tjd_watch_transmit.h"
|
|
|
|
#define TRACE_EN 0
|
|
|
|
#if TRACE_EN
|
|
#define TRACE(...) printf(__VA_ARGS__)
|
|
#else
|
|
#define TRACE(...)
|
|
#endif
|
|
|
|
typedef struct f_dial_push_t_ {
|
|
u32 enter_tick;
|
|
u32 last_num;
|
|
} f_dial_push_t;
|
|
|
|
|
|
|
|
enum
|
|
{
|
|
COMPO_ID_ARC_START = 1,
|
|
COMPO_ID_TEXT,
|
|
};
|
|
|
|
extern PUSHDIAL_CMDDATA_T pushDialCmdData;
|
|
|
|
// size, arc_w, rotation, s_angle, e_angle, content_color, bg_color
|
|
static const int16_t push_arc_info[5] = {
|
|
180, 20, 0, 0, 3600, //kcal
|
|
};
|
|
|
|
//创建ota界面窗体
|
|
compo_form_t *func_dial_push_form_create(void)
|
|
{
|
|
// 新建窗体
|
|
compo_form_t *frm = compo_form_create(true);
|
|
|
|
// 创建圆弧
|
|
compo_arc_t *arc = compo_arc_create(frm);
|
|
compo_setid(arc, COMPO_ID_ARC_START);
|
|
compo_arc_set_alpha(arc, 0xff, 0);
|
|
compo_arc_set_color(arc, make_color(12, 237, 65), make_color(255, 255, 255));
|
|
compo_arc_set_angles(arc, push_arc_info[3], push_arc_info[4]);
|
|
compo_arc_set_width(arc, push_arc_info[1]);
|
|
compo_arc_set_rotation(arc, push_arc_info[2]);
|
|
compo_arc_set_location(arc, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y, push_arc_info[0], push_arc_info[0]);
|
|
compo_arc_set_edge_circle(arc, true, true);
|
|
compo_arc_set_value(arc, 1);
|
|
|
|
char buf_pect[10] = {0};
|
|
compo_textbox_t *txt = compo_textbox_create(frm, 10);
|
|
compo_textbox_set_pos(txt, GUI_SCREEN_CENTER_X, GUI_SCREEN_CENTER_Y);
|
|
compo_textbox_set_forecolor(txt, make_color(255, 255, 255));
|
|
compo_textbox_set_font(txt, UI_BUF_0FONT_FONT_NUM_24_BIN);
|
|
snprintf(buf_pect, sizeof(buf_pect), "%d%%", (int)(pushDialCmdData.curPackNum / pushDialCmdData.totalPackNum));
|
|
compo_textbox_set(txt, buf_pect);
|
|
compo_setid(txt, COMPO_ID_TEXT);
|
|
|
|
return frm;
|
|
}
|
|
|
|
static void func_dial_push_animation(void)
|
|
{
|
|
char buf_pect[10] = {0};
|
|
f_dial_push_t *f_dial_push = (f_dial_push_t *)func_cb.f_cb;
|
|
#if TRACE_EN
|
|
pushDialCmdData.curPackNum = pushDialCmdData.totalPackNum;
|
|
// if( pushDialCmdData.curPackNum > pushDialCmdData.totalPackNum)
|
|
// pushDialCmdData.curPackNum = 0;
|
|
#endif
|
|
reset_sleep_delay_all();
|
|
// printf("func_dial_push_animation[%d,%d,%d]",f_dial_push->last_num,pushDialCmdData.curPackNum,pushDialCmdData.totalPackNum);
|
|
if(f_dial_push->last_num != (pushDialCmdData.curPackNum*100)/pushDialCmdData.totalPackNum)
|
|
{
|
|
f_dial_push->last_num = (pushDialCmdData.curPackNum*100)/pushDialCmdData.totalPackNum;
|
|
compo_arc_t *arc = compo_getobj_byid(COMPO_ID_ARC_START);
|
|
compo_arc_set_value(arc, f_dial_push->last_num*10);
|
|
|
|
compo_textbox_t *txt = compo_getobj_byid(COMPO_ID_TEXT);
|
|
snprintf(buf_pect, sizeof(buf_pect), "%d%%", (int)(f_dial_push->last_num));
|
|
compo_textbox_set(txt, buf_pect);
|
|
}
|
|
}
|
|
//ota界面能事件处理
|
|
static void func_dial_push_process(void)
|
|
{
|
|
func_dial_push_animation();
|
|
func_process();
|
|
}
|
|
|
|
//ota界面功能消息处理
|
|
static void func_dial_push_message(size_msg_t msg)
|
|
{
|
|
switch (msg) {
|
|
case MSG_CTP_CLICK:
|
|
break;
|
|
case MSG_CTP_SHORT_LEFT:
|
|
case MSG_CTP_SHORT_RIGHT:
|
|
case MSG_CTP_SHORT_DOWN:
|
|
case MSG_CTP_SHORT_UP:
|
|
case MSG_QDEC_FORWARD:
|
|
case MSG_QDEC_BACKWARD:
|
|
break;
|
|
case KU_LEFT:
|
|
case KU_RIGHT:
|
|
case KU_BACK:
|
|
break;
|
|
case MSG_CTP_LONG:
|
|
break;
|
|
|
|
default:
|
|
func_message(msg);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//进入ota界面提醒功能
|
|
static void func_dial_push_enter(void)
|
|
{
|
|
// printf("func_dial_push_enter = %d",pushDialCmdData.totalPackNum);
|
|
func_cb.f_cb = func_zalloc(sizeof(f_dial_push_t));
|
|
func_cb.frm_main = func_dial_push_form_create();
|
|
f_dial_push_t *f_dial_push = (f_dial_push_t *)func_cb.f_cb;
|
|
|
|
f_dial_push->last_num = (pushDialCmdData.curPackNum*100)/pushDialCmdData.totalPackNum;
|
|
}
|
|
|
|
//退出ota界面功能
|
|
static void func_dial_push_exit(void)
|
|
{
|
|
func_cb.last = FUN_DIAL_PUSH;
|
|
SysVariable.dial_push_screen = false;
|
|
}
|
|
|
|
//ota界面功能
|
|
void func_dial_push(void)
|
|
{
|
|
printf("%s\n", __func__);
|
|
#if TRACE_EN
|
|
pushDialCmdData.curPackNum = 0;
|
|
pushDialCmdData.totalPackNum = 10000;
|
|
#endif
|
|
SysVariable.dial_push_screen = true;
|
|
func_dial_push_enter();
|
|
while (func_cb.sta == FUN_DIAL_PUSH || pushDialCmdData.work) {
|
|
func_dial_push_process();
|
|
func_dial_push_message(msg_dequeue());
|
|
}
|
|
func_dial_push_exit();
|
|
}
|