652 lines
27 KiB
C
652 lines
27 KiB
C
#include "include.h"
|
||
#include "func.h"
|
||
#include "app_variable.h"
|
||
#include "spirit_island_api.h"
|
||
|
||
#if TRACE_EN
|
||
#define TRACE(...) printf(__VA_ARGS__)
|
||
#else
|
||
#define TRACE(...)
|
||
#endif
|
||
|
||
|
||
#if defined(TJD_REMOVE_COVER_SCREEN)
|
||
#define SHAPE_CENTER_Y_ONE (71 + 30 + 10) //第1个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_TWO (153 + 33 + 10) //第2个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_THR (227 + 33 + 10) //第3个矩形框中心点所在y坐标
|
||
// #define SHAPE_CENTER_Y_FOU (301 + 33 + 10) //第4个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_FIV (301 + 33 + 10) //第5个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_SIX (398 + 33 + 10) //第6个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_SEV (472 + 33 + 10) //第7个矩形框中心点所在y坐标449
|
||
// #define SHAPE_CENTER_Y_EIG (620 + 33) //第8个矩形框中心点所在y坐标
|
||
#else
|
||
#define SHAPE_CENTER_Y_ONE (71 + 30 + 10) //第1个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_TWO (153 + 33 + 10) //第2个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_THR (227 + 33 + 10) //第3个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_FOU (301 + 33 + 10) //第4个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_FIV (375 + 33 + 10) //第5个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_SIX (449 + 33 + 10) //第6个矩形框中心点所在y坐标
|
||
#define SHAPE_CENTER_Y_SEV (546 + 33 + 10) //第7个矩形框中心点所在y坐标
|
||
// #define SHAPE_CENTER_Y_EIG (620 + 33) //第8个矩形框中心点所在y坐标
|
||
#endif
|
||
|
||
#define BRIGHTNESS_X GUI_SCREEN_CENTER_X
|
||
#define BRIGHTNESS_Y SHAPE_CENTER_Y_ONE
|
||
#define BRIGHTNESS_WID 120 // 亮度条宽度
|
||
#define BRIGHTNESS_HEI 4
|
||
#define BRIGHTNESS_CLICK_WID 12 // 不可减宽度
|
||
#define BRIGHTNESS_CLICK_VAL ((BRIGHTNESS_WID ) / MAX_BRIGHTNESS_LEVEL) // 每级亮度所占的宽度——(亮度条宽度-不可减宽度)/最大亮度等级
|
||
|
||
//组件ID
|
||
enum {
|
||
//按键
|
||
COMPO_ID_BTN_REDUCE = 1,
|
||
COMPO_ID_BTN_INCREASE,
|
||
COMPO_ID_BTN_SLEEP_SCREEN,
|
||
COMPO_ID_BTN_BESIDELAMP,
|
||
COMPO_ID_BTN_COVER_SCREEN,
|
||
COMPO_ID_BTN_SPIRIT_ISLAND,
|
||
COMPO_ID_BTN_PINCH_ANSWER,
|
||
COMPO_ID_BTN_RAISE,
|
||
//图像
|
||
// COMPO_ID_PIC_LEVEL1, //亮度等级 1~5
|
||
// COMPO_ID_PIC_LEVEL2,
|
||
// COMPO_ID_PIC_LEVEL3,
|
||
// COMPO_ID_PIC_LEVEL4,
|
||
// COMPO_ID_PIC_LEVEL5,
|
||
|
||
COMPO_ID_BRIGHTNESS_FORGROUND,
|
||
|
||
COMPO_ID_PIC_NULL,
|
||
COMPO_ID_PIC_SWITCH_THD, //床头钟开关
|
||
COMPO_ID_PIC_SWITCH_CTS, //盖手熄屏开关
|
||
COMPO_ID_PIC_SWITCH_TIS, //灵动岛开关
|
||
COMPO_ID_PIC_SWITCH_TAP, //捏手接听开关
|
||
COMPO_ID_PIC_SWITCH_RTS, //抬手亮屏开关
|
||
// COMPO_ID_PIC_REDUCE_CLICK, //按钮触摸效果图
|
||
// COMPO_ID_PIC_INCREASE_CLICK,
|
||
};
|
||
|
||
typedef struct f_light_t_ {
|
||
page_tp_move_t *ptm;
|
||
int last_y_move;
|
||
u8 light_level;
|
||
point_t pt;
|
||
bool touch_flag;
|
||
s16 bar_value;
|
||
s16 bar_value_before;
|
||
} f_light_t;
|
||
|
||
typedef struct light_item_t_ {
|
||
s16 x;
|
||
s16 y;
|
||
s16 w;
|
||
s16 h;
|
||
u16 bind_id;
|
||
u8 alpha;
|
||
u32 res_addr; //图片
|
||
u32 str_idx; //文字
|
||
u16 color;
|
||
bool visible_en;
|
||
} light_item_t;
|
||
|
||
|
||
// #define LIGHT_SHAPE_ITEM_CNT ((int)(sizeof(tbl_light_shape_item) / sizeof(tbl_light_shape_item[0])))
|
||
#define GRET_SHAPE_ITEM_CNT ((int)(sizeof(tbl_gret_shape_item) / sizeof(tbl_gret_shape_item[0])))
|
||
#define TXT_ITEM_CNT ((int)(sizeof(tbl_txt_item) / sizeof(tbl_txt_item[0])))
|
||
#define PIC_ITEM_CNT ((int)(sizeof(tbl_pic_item) / sizeof(tbl_pic_item[0])))
|
||
#define BTN_ITEM_CNT ((int)(sizeof(tbl_light_btn_item) / sizeof(tbl_light_btn_item[0])))
|
||
// //五个绿色亮度 圆角矩形 item,创建时遍历一下
|
||
// static const light_item_t tbl_light_shape_item[] = {
|
||
// {.x = 70, .y = SHAPE_CENTER_Y_ONE, .w = 22, .h = 6, .bind_id = COMPO_ID_PIC_LEVEL1, .alpha = 100},
|
||
// {.x = 95, .y = SHAPE_CENTER_Y_ONE, .w = 22, .h = 6, .bind_id = COMPO_ID_PIC_LEVEL2, .alpha = 100},
|
||
// {.x = 120, .y = SHAPE_CENTER_Y_ONE, .w = 22, .h = 6, .bind_id = COMPO_ID_PIC_LEVEL3, .alpha = 100},
|
||
// {.x = 145, .y = SHAPE_CENTER_Y_ONE, .w = 22, .h = 6, .bind_id = COMPO_ID_PIC_LEVEL4, .alpha = 100},
|
||
// {.x = 170, .y = SHAPE_CENTER_Y_ONE, .w = 22, .h = 6, .bind_id = COMPO_ID_PIC_LEVEL5, .alpha = 100},
|
||
// };
|
||
|
||
//灰色背景item,创建时遍历一下
|
||
static const light_item_t tbl_gret_shape_item[] = {
|
||
{.x = GUI_SCREEN_CENTER_X, .y = SHAPE_CENTER_Y_ONE, .w = 236, .h = 60, },
|
||
{.x = GUI_SCREEN_CENTER_X, .y = SHAPE_CENTER_Y_TWO, .w = 236, .h = 66, },
|
||
{.x = GUI_SCREEN_CENTER_X, .y = SHAPE_CENTER_Y_THR, .w = 236, .h = 66, },
|
||
#ifndef TJD_REMOVE_COVER_SCREEN
|
||
{.x = GUI_SCREEN_CENTER_X, .y = SHAPE_CENTER_Y_FOU, .w = 236, .h = 66, },
|
||
#endif
|
||
{.x = GUI_SCREEN_CENTER_X, .y = SHAPE_CENTER_Y_FIV, .w = 236, .h = 66, },
|
||
{.x = GUI_SCREEN_CENTER_X, .y = SHAPE_CENTER_Y_SIX, .w = 236, .h = 66, },
|
||
{.x = GUI_SCREEN_CENTER_X, .y = SHAPE_CENTER_Y_SEV, .w = 236, .h = 66, },
|
||
// {.x = GUI_SCREEN_CENTER_X, .y = SHAPE_CENTER_Y_EIG, .w = 236, .h = 66, },//屏蔽一个后续放熄屏时钟
|
||
};
|
||
|
||
//文字 item,创建时遍历一下
|
||
static const light_item_t tbl_txt_item[] = {
|
||
{.x = 15, .y = SHAPE_CENTER_Y_ONE - 53, .w = 200, .h = 30, .str_idx = STR_LIGHT , .color = COLOR_GRAY},
|
||
{.x = 12, .y = SHAPE_CENTER_Y_TWO - 22, .w = 150, .h = 30, .str_idx = STR_SETTING_DOUSING, .color = COLOR_WHITE},
|
||
{.x = 12, .y = SHAPE_CENTER_Y_THR - 10, .w = 150, .h = 30, .str_idx = STR_SPIRIT_ISLAND, .color = COLOR_WHITE},
|
||
#ifndef TJD_REMOVE_COVER_SCREEN
|
||
{.x = 12, .y = SHAPE_CENTER_Y_FOU - 10, .w = 150, .h = 30, .str_idx = STR_COVER_THE_HAND, .color = COLOR_WHITE},
|
||
#endif
|
||
{.x = 12, .y = SHAPE_CENTER_Y_FIV - 10, .w = 150, .h = 30, .str_idx = STR_PINCH_ANSWER, .color = COLOR_WHITE},
|
||
{.x = 12, .y = SHAPE_CENTER_Y_SIX - 10, .w = 150, .h = 30, .str_idx = STR_WAKE_SCREEN, .color = COLOR_WHITE},
|
||
{.x = 15, .y = SHAPE_CENTER_Y_SIX - 56, .w = 200, .h = 30, .str_idx = STR_WAKE_SCREEN, .color = COLOR_GRAY},
|
||
{.x = 12, .y = SHAPE_CENTER_Y_SEV - 10, .w = 150, .h = 30, .str_idx = STR_BEDSIED_CLOCK, .color = COLOR_WHITE},
|
||
// {.x = 12, .y = SHAPE_CENTER_Y_EIG - 10, .w = 150, .h = 30, .str_idx = , .color = COLOR_WHITE},//屏蔽一个后续放熄屏时钟
|
||
};
|
||
|
||
//图片 item
|
||
static const light_item_t tbl_pic_item[] = {
|
||
{.x = 27, .y = SHAPE_CENTER_Y_ONE, .bind_id = COMPO_ID_PIC_NULL, .res_addr = UI_BUF_SETTING_LIGHT_DOWN_BIN ,},
|
||
{.x = 213, .y = SHAPE_CENTER_Y_ONE, .bind_id = COMPO_ID_PIC_NULL, .res_addr = UI_BUF_SETTING_LIGHT_UP_BIN,},
|
||
{.x = 217, .y = SHAPE_CENTER_Y_TWO, .bind_id = COMPO_ID_PIC_NULL, .res_addr = UI_BUF_COMMON_RIGHT_BIN,},
|
||
{.x = 202, .y = SHAPE_CENTER_Y_THR, .bind_id = COMPO_ID_PIC_SWITCH_TIS, .res_addr = UI_BUF_COMMON_OFF_BIN,},
|
||
#ifndef TJD_REMOVE_COVER_SCREEN
|
||
{.x = 202, .y = SHAPE_CENTER_Y_FOU, .bind_id = COMPO_ID_PIC_SWITCH_CTS, .res_addr = UI_BUF_COMMON_OFF_BIN,},
|
||
#endif
|
||
{.x = 202, .y = SHAPE_CENTER_Y_FIV, .bind_id = COMPO_ID_PIC_SWITCH_TAP, .res_addr = UI_BUF_COMMON_OFF_BIN,},
|
||
{.x = 202, .y = SHAPE_CENTER_Y_SIX, .bind_id = COMPO_ID_PIC_SWITCH_RTS, .res_addr = UI_BUF_COMMON_OFF_BIN,},
|
||
{.x = 202, .y = SHAPE_CENTER_Y_SEV, .bind_id = COMPO_ID_PIC_SWITCH_THD, .res_addr = UI_BUF_COMMON_OFF_BIN,},
|
||
};
|
||
|
||
|
||
//触摸 item
|
||
//五个绿色亮度 圆角矩形 item,创建时遍历一下
|
||
static const light_item_t tbl_light_btn_item[] = {
|
||
{.x = 27, .y = SHAPE_CENTER_Y_ONE, .w = 50, .h = 50, .bind_id = COMPO_ID_BTN_REDUCE, },
|
||
{.x = 213, .y = SHAPE_CENTER_Y_ONE, .w = 50, .h = 50, .bind_id = COMPO_ID_BTN_INCREASE, },
|
||
{.x = 120, .y = SHAPE_CENTER_Y_TWO, .w = 236, .h = 66, .bind_id = COMPO_ID_BTN_SLEEP_SCREEN, },
|
||
{.x = 202, .y = SHAPE_CENTER_Y_THR, .w = 60, .h = 36, .bind_id = COMPO_ID_BTN_SPIRIT_ISLAND, },
|
||
#ifndef TJD_REMOVE_COVER_SCREEN
|
||
{.x = 202, .y = SHAPE_CENTER_Y_FOU, .w = 60, .h = 36, .bind_id = COMPO_ID_BTN_COVER_SCREEN, },
|
||
#endif
|
||
{.x = 202, .y = SHAPE_CENTER_Y_FIV, .w = 60, .h = 36, .bind_id = COMPO_ID_BTN_PINCH_ANSWER, },
|
||
{.x = 202, .y = SHAPE_CENTER_Y_SIX, .w = 60, .h = 36, .bind_id = COMPO_ID_BTN_RAISE, },
|
||
{.x = 202, .y = SHAPE_CENTER_Y_SEV, .w = 60, .h = 36, .bind_id = COMPO_ID_BTN_BESIDELAMP, },
|
||
};
|
||
|
||
|
||
|
||
|
||
|
||
//创建亮度调节窗体,创建窗体中不要使用功能结构体 func_cb.f_cb
|
||
compo_form_t *func_light_form_create(void)
|
||
{
|
||
//新建窗体和背景
|
||
compo_form_t *frm = compo_form_create(true);
|
||
// compo_form_add_image(frm, UI_BUF_SETTING_LIGHT_LIGHT_BIN, GUI_SCREEN_CENTER_X, 105);
|
||
// compo_form_add_image(frm, UI_BUF_COMMON_BG1_BIN, GUI_SCREEN_CENTER_X, 200);
|
||
|
||
//设置标题栏
|
||
compo_form_set_mode(frm, COMPO_FORM_MODE_SHOW_TITLE | COMPO_FORM_MODE_SHOW_TIME);
|
||
compo_form_set_title(frm, i18n[STR_DISPLAY_AND_LIGHT]);
|
||
|
||
//创建 圆角矩形背景框
|
||
|
||
compo_shape_t *grey_shape[GRET_SHAPE_ITEM_CNT];
|
||
for(u8 idx =0; idx < GRET_SHAPE_ITEM_CNT; idx++){
|
||
grey_shape[idx] = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,33);
|
||
compo_setid(grey_shape[idx], tbl_gret_shape_item[idx].bind_id);
|
||
compo_shape_set_color(grey_shape[idx], make_color(75, 75, 75));
|
||
compo_shape_set_location(grey_shape[idx], tbl_gret_shape_item[idx].x, tbl_gret_shape_item[idx].y, tbl_gret_shape_item[idx].w, tbl_gret_shape_item[idx].h);
|
||
}
|
||
|
||
//创建顶部 亮度圆角矩形框 左边的黑色线条
|
||
compo_shape_t *grey_btn_one_lef ;
|
||
grey_btn_one_lef = compo_shape_create(frm, COMPO_SHAPE_TYPE_RECTANGLE);
|
||
compo_shape_set_color(grey_btn_one_lef, COLOR_BLACK);
|
||
compo_shape_set_location(grey_btn_one_lef, 52, SHAPE_CENTER_Y_ONE, 1, 60);
|
||
|
||
//创建顶部 亮度圆角矩形框 右边的黑色线条
|
||
compo_shape_t *grey_btn_one_rig ;
|
||
grey_btn_one_rig = compo_shape_create(frm, COMPO_SHAPE_TYPE_RECTANGLE);
|
||
compo_shape_set_color(grey_btn_one_rig, COLOR_BLACK);
|
||
compo_shape_set_location(grey_btn_one_rig, 188, SHAPE_CENTER_Y_ONE, 1, 60);
|
||
|
||
//新建所有图片
|
||
compo_picturebox_t *pic[PIC_ITEM_CNT];
|
||
for(u8 idx = 0;idx <PIC_ITEM_CNT;idx ++){
|
||
pic[idx] = compo_picturebox_create(frm, tbl_pic_item[idx].res_addr);
|
||
compo_setid(pic[idx], tbl_pic_item[idx].bind_id);
|
||
compo_picturebox_set_pos(pic[idx], tbl_pic_item[idx].x, tbl_pic_item[idx].y);
|
||
}
|
||
|
||
//创建 所有点触区域
|
||
compo_button_t *btn[BTN_ITEM_CNT];
|
||
for(u8 idx = 0;idx <PIC_ITEM_CNT;idx ++){
|
||
btn[idx] = compo_button_create(frm);
|
||
compo_setid(btn[idx], tbl_light_btn_item[idx].bind_id);
|
||
compo_button_set_location(btn[idx], tbl_light_btn_item[idx].x,tbl_light_btn_item[idx].y,tbl_light_btn_item[idx].w,tbl_light_btn_item[idx].h);
|
||
}
|
||
|
||
// 亮度背景
|
||
compo_shape_t *light_bg = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE, BRIGHTNESS_HEI / 2 - 1); // 这里给宽度半径的一半锯齿太严重,削了1
|
||
compo_shape_set_color(light_bg, make_color(38, 103, 65));
|
||
compo_shape_set_location(light_bg, GUI_SCREEN_CENTER_X, SHAPE_CENTER_Y_ONE, BRIGHTNESS_WID, BRIGHTNESS_HEI);
|
||
|
||
// 亮度进度条
|
||
int width = SysVariable.brightness_percent * (BRIGHTNESS_WID - BRIGHTNESS_HEI) / (100);
|
||
if (width > BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID)
|
||
width = BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID;
|
||
compo_shape_t *light_cur = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE, BRIGHTNESS_HEI / 2 - 1);
|
||
compo_setid(light_cur, COMPO_ID_BRIGHTNESS_FORGROUND);
|
||
compo_shape_set_align_center(light_cur, false); // 不居中了,居中后进度条长度不好算
|
||
compo_shape_set_color(light_cur, make_color(12, 227, 103));
|
||
compo_shape_set_location(light_cur, (GUI_SCREEN_WIDTH - BRIGHTNESS_WID) / 2, SHAPE_CENTER_Y_ONE - 2, BRIGHTNESS_CLICK_WID + width, BRIGHTNESS_HEI);
|
||
|
||
// //亮度中间五个绿色圆角矩形
|
||
// compo_shape_t *shape_level[LIGHT_SHAPE_ITEM_CNT];
|
||
// for(u8 idx =0; idx < LIGHT_SHAPE_ITEM_CNT; idx++){
|
||
// shape_level[idx] = compo_radius_shape_create(frm, COMPO_SHAPE_TYPE_ROUNDED_RECTANGLE,1);
|
||
// compo_setid(shape_level[idx], tbl_light_shape_item[idx].bind_id);
|
||
// compo_shape_set_color(shape_level[idx], make_color(12, 227, 103));
|
||
// compo_shape_set_location(shape_level[idx], tbl_light_shape_item[idx].x, tbl_light_shape_item[idx].y, tbl_light_shape_item[idx].w, tbl_light_shape_item[idx].h);
|
||
// compo_shape_set_alpha(shape_level[idx], tbl_light_shape_item[idx].alpha);
|
||
// }
|
||
|
||
|
||
printf("%s-->light_level:%d\n",__func__, SysVariable.light_level);
|
||
|
||
// for (u8 i=0; i<SysVariable.light_level; i++) {
|
||
// // compo_picturebox_set_visible(pic_level[i],true);
|
||
// compo_shape_set_alpha(shape_level[i], 255);
|
||
// }
|
||
|
||
|
||
//创建除了 自动熄屏 时长之外所有的 文字
|
||
compo_textbox_t *txt[TXT_ITEM_CNT];
|
||
for(u8 idx =0; idx < TXT_ITEM_CNT; idx++){
|
||
txt[idx] = compo_textbox_create(frm, 50);
|
||
compo_textbox_set_font(txt[idx], UI_BUF_0FONT_FONT_BIN);
|
||
compo_textbox_set_align_center(txt[idx],FALSE);
|
||
compo_textbox_set_forecolor(txt[idx], tbl_txt_item[idx].color);
|
||
compo_textbox_set_location(txt[idx], tbl_txt_item[idx].x, tbl_txt_item[idx].y, tbl_txt_item[idx].w, tbl_txt_item[idx].h);
|
||
compo_textbox_set_autoroll_mode(txt[idx], TEXT_AUTOROLL_MODE_SROLL_CIRC);
|
||
compo_textbox_set(txt[idx], i18n[tbl_txt_item[idx].str_idx]);
|
||
}
|
||
|
||
//创建 熄屏时长秒数文字
|
||
compo_textbox_t *txt_s = compo_textbox_create(frm, 60);
|
||
compo_textbox_set_font(txt_s, UI_BUF_0FONT_FONT_BIN);
|
||
compo_textbox_set_align_center(txt_s,FALSE);
|
||
compo_textbox_set_location(txt_s, 12, SHAPE_CENTER_Y_TWO, 150, 30);
|
||
compo_textbox_set_autoroll_mode(txt_s, TEXT_AUTOROLL_MODE_SROLL_CIRC);
|
||
if(SysVariable.sleep_time == (-1)){
|
||
compo_textbox_set(txt_s, i18n[STR_NEVER]);
|
||
}
|
||
else{
|
||
char buf[20];
|
||
memset(buf, 0, sizeof(buf));
|
||
snprintf(buf, sizeof(buf), "%d s", (int)(SysVariable.sleep_time/10));
|
||
compo_textbox_set(txt_s, buf);
|
||
}
|
||
|
||
return frm;
|
||
}
|
||
|
||
//按钮状态更新
|
||
static void func_light_btn_pic_update(void)
|
||
{
|
||
compo_picturebox_t *thd_pic = compo_getobj_byid(COMPO_ID_PIC_SWITCH_THD);
|
||
compo_picturebox_t *cts_pic = compo_getobj_byid(COMPO_ID_PIC_SWITCH_CTS);
|
||
compo_picturebox_t *tis_pic = compo_getobj_byid(COMPO_ID_PIC_SWITCH_TIS);
|
||
compo_picturebox_t *tap_pic = compo_getobj_byid(COMPO_ID_PIC_SWITCH_TAP);
|
||
compo_picturebox_t *rts_pic = compo_getobj_byid(COMPO_ID_PIC_SWITCH_RTS);
|
||
|
||
//床头钟
|
||
if(SysVariable.charingWatchSwitch) {
|
||
compo_picturebox_set(thd_pic, UI_BUF_COMMON_ON_BIN);
|
||
} else {
|
||
compo_picturebox_set(thd_pic, UI_BUF_COMMON_OFF_BIN);
|
||
}
|
||
|
||
#ifndef TJD_REMOVE_COVER_SCREEN
|
||
//盖手熄屏
|
||
if(SysVariable.capping_hand_offscreen_flag) {
|
||
compo_picturebox_set(cts_pic, UI_BUF_COMMON_ON_BIN);
|
||
} else {
|
||
compo_picturebox_set(cts_pic, UI_BUF_COMMON_OFF_BIN);
|
||
}
|
||
#endif
|
||
//灵动岛
|
||
if(SysVariable.SpiritIslandSwitch) {
|
||
compo_picturebox_set(tis_pic, UI_BUF_COMMON_ON_BIN);
|
||
} else {
|
||
compo_picturebox_set(tis_pic, UI_BUF_COMMON_OFF_BIN);
|
||
}
|
||
|
||
// 捏手接听
|
||
if(SysVariable.handle_knob_flag) {
|
||
compo_picturebox_set(tap_pic, UI_BUF_COMMON_ON_BIN);
|
||
} else {
|
||
compo_picturebox_set(tap_pic, UI_BUF_COMMON_OFF_BIN);
|
||
}
|
||
|
||
//抬手亮屏
|
||
if(SysVariable.funtionSwitch & FUNTION_RAISE_HAND_DISPLAY) {
|
||
compo_picturebox_set(rts_pic, UI_BUF_COMMON_ON_BIN);
|
||
} else {
|
||
compo_picturebox_set(rts_pic, UI_BUF_COMMON_OFF_BIN);
|
||
}
|
||
|
||
}
|
||
|
||
|
||
//释放按钮效果处理
|
||
static void func_light_button_release_handle(void)
|
||
{
|
||
// compo_picturebox_t *pic_reduce = compo_getobj_byid(COMPO_ID_PIC_REDUCE_CLICK);
|
||
// compo_picturebox_t *pic_increase = compo_getobj_byid(COMPO_ID_PIC_INCREASE_CLICK);
|
||
// compo_picturebox_set_visible(pic_reduce, false);
|
||
// compo_picturebox_set_visible(pic_increase, false);
|
||
}
|
||
|
||
// 单击按钮
|
||
static void func_light_button_click(void)
|
||
{
|
||
int id = compo_get_button_id();
|
||
|
||
f_light_t *f_light = (f_light_t *)func_cb.f_cb;
|
||
|
||
compo_shape_t *light_cur = compo_getobj_byid(COMPO_ID_BRIGHTNESS_FORGROUND);
|
||
|
||
// compo_shape_t *shape_level[5];
|
||
// shape_level[0] = compo_getobj_byid(COMPO_ID_PIC_LEVEL1);
|
||
// shape_level[1] = compo_getobj_byid(COMPO_ID_PIC_LEVEL2);
|
||
// shape_level[2] = compo_getobj_byid(COMPO_ID_PIC_LEVEL3);
|
||
// shape_level[3] = compo_getobj_byid(COMPO_ID_PIC_LEVEL4);
|
||
// shape_level[4] = compo_getobj_byid(COMPO_ID_PIC_LEVEL5);
|
||
|
||
switch (id)
|
||
{
|
||
// 减少亮度
|
||
case COMPO_ID_BTN_REDUCE:
|
||
if (SysVariable.light_level >= 1 && SysVariable.light_level <= MAX_BRIGHTNESS_LEVEL)
|
||
{
|
||
// SysVariable.light_level--;
|
||
f_light->bar_value -= BRIGHTNESS_CLICK_VAL;
|
||
if (f_light->bar_value < 0)
|
||
{
|
||
f_light->bar_value = 0;
|
||
}
|
||
}
|
||
break;
|
||
// 增加亮度
|
||
case COMPO_ID_BTN_INCREASE:
|
||
if (SysVariable.light_level >= 0 && SysVariable.light_level < MAX_BRIGHTNESS_LEVEL)
|
||
{
|
||
// SysVariable.light_level++;
|
||
f_light->bar_value += BRIGHTNESS_CLICK_VAL;
|
||
if (f_light->bar_value > (BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID))
|
||
{
|
||
f_light->bar_value = (BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID);
|
||
}
|
||
}
|
||
break;
|
||
|
||
// 熄屏时长
|
||
case COMPO_ID_BTN_SLEEP_SCREEN:
|
||
// 切入应用
|
||
{
|
||
u8 func_sta = FUNC_SET_SUB_DOUSING;
|
||
compo_form_t *frm = func_create_form(func_sta);
|
||
func_switching(FUNC_SWITCH_ZOOM_FADE_ENTER | FUNC_SWITCH_AUTO, NULL);
|
||
compo_form_destroy(frm);
|
||
func_switch_to_assign_screen(func_sta, false);
|
||
}
|
||
break;
|
||
|
||
// 床头钟
|
||
case COMPO_ID_BTN_BESIDELAMP:
|
||
SysVariable.charingWatchSwitch = !SysVariable.charingWatchSwitch;
|
||
break;
|
||
#ifndef TJD_REMOVE_COVER_SCREEN
|
||
// 盖手熄屏
|
||
case COMPO_ID_BTN_COVER_SCREEN:
|
||
SysVariable.capping_hand_offscreen_flag = !SysVariable.capping_hand_offscreen_flag;
|
||
break;
|
||
#endif
|
||
// 灵动岛
|
||
case COMPO_ID_BTN_SPIRIT_ISLAND:
|
||
SysVariable.SpiritIslandSwitch = !SysVariable.SpiritIslandSwitch;
|
||
if (SysVariable.SpiritIslandSwitch == true)
|
||
{
|
||
if (bt_cb.music_playing == true)
|
||
{
|
||
si_activated_task(music, 0);
|
||
}
|
||
}
|
||
break;
|
||
// 捏手接听
|
||
case COMPO_ID_BTN_PINCH_ANSWER:
|
||
SysVariable.handle_knob_flag = !SysVariable.handle_knob_flag;
|
||
break;
|
||
// 抬手亮屏
|
||
case COMPO_ID_BTN_RAISE:
|
||
if (SysVariable.funtionSwitch & FUNTION_RAISE_HAND_DISPLAY)
|
||
{
|
||
SysVariable.funtionSwitch &= ~(FUNTION_RAISE_HAND_DISPLAY);
|
||
}
|
||
else
|
||
{
|
||
SysVariable.funtionSwitch |= FUNTION_RAISE_HAND_DISPLAY;
|
||
}
|
||
|
||
ble_function_protocol_packetsend();
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
// for (u8 i=0; i<5; i++) {
|
||
// if (i < SysVariable.light_level) {
|
||
// // compo_picturebox_set_visible(pic_level[i],true);
|
||
// compo_shape_set_alpha(shape_level[i], 255);
|
||
// } else {
|
||
// // compo_picturebox_set_visible(pic_level[i],false);
|
||
// compo_shape_set_alpha(shape_level[i], 100);
|
||
// }
|
||
// }
|
||
SysVariable.light_level = (f_light->bar_value) / BRIGHTNESS_CLICK_VAL+1;
|
||
// 满进度条情况下应该会超出最大亮度等级,重置一下
|
||
if (SysVariable.light_level > MAX_BRIGHTNESS_LEVEL)
|
||
SysVariable.light_level = MAX_BRIGHTNESS_LEVEL;
|
||
|
||
tft_bglight_set_level(SysVariable.light_level, false);
|
||
|
||
if (light_cur)
|
||
compo_shape_set_location(light_cur, (GUI_SCREEN_WIDTH - BRIGHTNESS_WID) / 2, SHAPE_CENTER_Y_ONE - 2,
|
||
SysVariable.light_level * (BRIGHTNESS_WID) / (MAX_BRIGHTNESS_LEVEL), BRIGHTNESS_HEI);
|
||
func_light_btn_pic_update();
|
||
func_light_button_release_handle();
|
||
}
|
||
|
||
//处理设置亮度进度条
|
||
void compo_general_brightness_ctr(f_light_t *f_clk)
|
||
{
|
||
compo_shape_t *light_cur = compo_getobj_byid(COMPO_ID_BRIGHTNESS_FORGROUND);
|
||
|
||
s32 dx = 0;
|
||
s32 dy = 0;
|
||
if (f_clk->touch_flag)
|
||
{
|
||
|
||
f_clk->touch_flag = ctp_get_dxy(&dx, &dy);
|
||
printf("dx = %d \n", dx);
|
||
if (f_clk->touch_flag)
|
||
{
|
||
// 亮度可供滑动范围
|
||
if (f_clk->bar_value + dx >= 0 && f_clk->bar_value + dx <= (BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID))
|
||
{
|
||
printf("f_clk->bar_value = %d!!\n", f_clk->bar_value);
|
||
|
||
if (f_clk->bar_value < 0)
|
||
f_clk->bar_value = 0;
|
||
if (f_clk->bar_value > (BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID))
|
||
f_clk->bar_value = BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID;
|
||
|
||
compo_shape_set_location(light_cur, (GUI_SCREEN_WIDTH - BRIGHTNESS_WID) / 2, BRIGHTNESS_Y - BRIGHTNESS_HEI / 2, BRIGHTNESS_CLICK_WID + f_clk->bar_value + dx, BRIGHTNESS_HEI);
|
||
f_clk->bar_value_before = dx;
|
||
|
||
// 根据当前进度条所在位置范围内,设置亮度等级,最左边的圆直径不动,后续剩余可变动范围为 BRIGHTNESS_WID - BRIGHTNESS_HEI,每级的范围是BRIGHTNESS_CLICK_VAL
|
||
// 系统当前亮度等级 = 进度条宽度 / 每级范围 + 1,即最低为1级,最高为MAX_BRIGHTNESS_LEVEL
|
||
SysVariable.light_level = (f_clk->bar_value + dx) / BRIGHTNESS_CLICK_VAL + 1;
|
||
// 满进度条情况下应该会超出最大亮度等级,重置一下
|
||
if (SysVariable.light_level > MAX_BRIGHTNESS_LEVEL)
|
||
SysVariable.light_level = MAX_BRIGHTNESS_LEVEL;
|
||
printf("SysVariable.light_level = %d!!\n", SysVariable.light_level);
|
||
tft_bglight_set_level(SysVariable.light_level, false);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
f_clk->bar_value += f_clk->bar_value_before;
|
||
if (f_clk->bar_value < 0)
|
||
f_clk->bar_value = 0;
|
||
if (f_clk->bar_value > (BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID))
|
||
f_clk->bar_value = BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID;
|
||
|
||
compo_shape_set_location(light_cur, (GUI_SCREEN_WIDTH - BRIGHTNESS_WID) / 2, BRIGHTNESS_Y - BRIGHTNESS_HEI / 2, BRIGHTNESS_CLICK_WID + f_clk->bar_value, BRIGHTNESS_HEI);
|
||
}
|
||
}
|
||
}
|
||
|
||
//亮度调节功能事件处理
|
||
static void func_light_process(void)
|
||
{
|
||
f_light_t *f_light = (f_light_t *)func_cb.f_cb;
|
||
func_light_btn_pic_update();
|
||
compo_general_brightness_ctr(f_light);
|
||
compo_page_move_process(f_light->ptm);
|
||
func_process();
|
||
}
|
||
|
||
|
||
//亮度调节功能消息处理
|
||
static void func_light_message(size_msg_t msg)
|
||
{
|
||
f_light_t *f_light = (f_light_t *)func_cb.f_cb;
|
||
f_light->pt = ctp_get_sxy();
|
||
|
||
switch (msg) {
|
||
case MSG_CTP_TOUCH:
|
||
// /*如果tp点触范围在第一行的亮度范围内*/
|
||
// if (abs_s(f_light->pt.x - (BRIGHTNESS_WID/2)) * 2 <= BRIGHTNESS_WID && abs_s(f_light->pt.y - 30) * 2 <= SHAPE_CENTER_Y_ONE) {
|
||
// f_light->touch_flag = true;
|
||
// }
|
||
// else{
|
||
compo_page_move_touch_handler(f_light->ptm);
|
||
// }
|
||
break;
|
||
case MSG_CTP_CLICK:
|
||
func_light_button_click();
|
||
uint8_t level_tmp = SysVariable.light_level;
|
||
if(level_tmp < 1)
|
||
{
|
||
level_tmp = 1;
|
||
}
|
||
else if(level_tmp > MAX_BRIGHTNESS_LEVEL)
|
||
{
|
||
level_tmp = MAX_BRIGHTNESS_LEVEL;
|
||
}
|
||
tft_bglight_set_level(level_tmp,false);
|
||
break;
|
||
case MSG_CTP_SHORT_UP:
|
||
case MSG_CTP_SHORT_DOWN:
|
||
|
||
case MSG_CTP_LONG:
|
||
func_light_button_release_handle();
|
||
break;
|
||
case MSG_CTP_SHORT_LEFT:
|
||
/*这里如果还是亮度条的高度太难触发了,改成第一个灰色矩形框的宽度*/
|
||
if (abs_s(f_light->pt.x - BRIGHTNESS_X) * 2 <= BRIGHTNESS_WID && abs_s(f_light->pt.y - BRIGHTNESS_Y) * 2 <= 60) {
|
||
f_light->touch_flag = true;
|
||
}
|
||
else{
|
||
func_light_button_release_handle();
|
||
}
|
||
break;
|
||
case MSG_CTP_SHORT_RIGHT:
|
||
if (abs_s(f_light->pt.x - BRIGHTNESS_X) * 2 <= BRIGHTNESS_WID && abs_s(f_light->pt.y - BRIGHTNESS_Y) * 2 <= 60) {
|
||
f_light->touch_flag = true;
|
||
} else{
|
||
func_light_button_release_handle();
|
||
func_message(msg);
|
||
}
|
||
|
||
break;
|
||
|
||
case MSG_QDEC_BACKWARD:
|
||
if (func_cb.flag_sort) { //快捷应用状态下不滚动页面
|
||
func_message(msg);
|
||
} else {
|
||
compo_page_move_set_by_pages(f_light->ptm, -1);
|
||
}
|
||
break;
|
||
|
||
case MSG_QDEC_FORWARD:
|
||
if (func_cb.flag_sort) {
|
||
func_message(msg);
|
||
} else {
|
||
compo_page_move_set_by_pages(f_light->ptm, 1);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
func_message(msg);
|
||
break;
|
||
}
|
||
}
|
||
|
||
//进入亮度调节功能
|
||
static void func_light_enter(void)
|
||
{
|
||
func_cb.f_cb = func_zalloc(sizeof(f_light_t));
|
||
if(SysVariable.sleep_time != 50&&SysVariable.sleep_time != 100&&SysVariable.sleep_time != 150&&SysVariable.sleep_time != 300&&SysVariable.sleep_time != 600&&SysVariable.sleep_time != 3000)
|
||
{
|
||
SysVariable.sleep_time =50;
|
||
}
|
||
|
||
func_cb.frm_main = func_light_form_create();
|
||
func_light_btn_pic_update();
|
||
f_light_t *f_light = (f_light_t *)func_cb.f_cb;
|
||
f_light->bar_value = SysVariable.brightness_percent*(BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID)/100;
|
||
|
||
f_light->ptm = (page_tp_move_t *)func_zalloc(sizeof(page_tp_move_t));
|
||
|
||
page_move_info_t info = {
|
||
.title_used = FALSE,
|
||
.page_size = 620, //除标题外页面总长度
|
||
.page_count = 1,
|
||
.up_over_perc = 10,
|
||
.down_over_perc = 10,
|
||
};
|
||
compo_page_move_init(f_light->ptm, func_cb.frm_main->page_body, &info);
|
||
}
|
||
|
||
//退出亮度调节功能
|
||
static void func_light_exit(void)
|
||
{
|
||
f_light_t *f_light = (f_light_t *)func_cb.f_cb;
|
||
SysVariable.brightness_percent = (f_light->bar_value) * 100 / (BRIGHTNESS_WID - BRIGHTNESS_CLICK_WID);
|
||
|
||
func_cb.last = FUNC_LIGHT;
|
||
if (f_light->ptm) {
|
||
func_free(f_light->ptm);
|
||
}
|
||
SysVariable.duty_flag = true;
|
||
}
|
||
|
||
|
||
|
||
//亮度调节功能
|
||
void func_light(void)
|
||
{
|
||
printf("%s\n", __func__);
|
||
func_light_enter();
|
||
while (func_cb.sta == FUNC_LIGHT) {
|
||
func_light_process();
|
||
func_light_message(msg_dequeue());
|
||
}
|
||
func_light_exit();
|
||
}
|