#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_XG_PROJECT_CUSTOMIZED_TZ1) #define SHAPE_CENTER_Y_ONE (71 + 30) //第1个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_TWO (153 + 33) //第2个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_THR (227 + 33) //第3个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_FOU (301 + 33) //第4个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_FIV (301 + 33) //第5个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_SIX (375 + 33) //第6个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_SEV (472 + 33) //第7个矩形框中心点所在y坐标 #else #define SHAPE_CENTER_Y_ONE (71 + 30) //第1个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_TWO (153 + 33) //第2个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_THR (227 + 33) //第3个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_FOU (301 + 33) //第4个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_FIV (375 + 33) //第5个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_SIX (449 + 33) //第6个矩形框中心点所在y坐标 #define SHAPE_CENTER_Y_SEV (546 + 33) //第7个矩形框中心点所在y坐标 // #define SHAPE_CENTER_Y_EIG (620 + 33) //第8个矩形框中心点所在y坐标 #endif //组件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_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; } 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_XG_PROJECT_CUSTOMIZED_TZ1 {.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_BEDSIED_CLOCK, .color = COLOR_WHITE}, #ifndef TJD_XG_PROJECT_CUSTOMIZED_TZ1 {.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_SPIRIT_ISLAND, .color = COLOR_WHITE}, {.x = 12, .y = SHAPE_CENTER_Y_SIX - 10, .w = 150, .h = 30, .str_idx = STR_PINCH_ANSWER, .color = COLOR_WHITE}, {.x = 15, .y = SHAPE_CENTER_Y_SEV - 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_SETTING_UP, .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_THD, .res_addr = UI_BUF_COMMON_OFF_BIN,}, #ifndef TJD_XG_PROJECT_CUSTOMIZED_TZ1 {.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_TIS, .res_addr = UI_BUF_COMMON_OFF_BIN,}, {.x = 202, .y = SHAPE_CENTER_Y_SIX, .bind_id = COMPO_ID_PIC_SWITCH_TAP, .res_addr = UI_BUF_COMMON_OFF_BIN,}, {.x = 202, .y = SHAPE_CENTER_Y_SEV, .bind_id = COMPO_ID_PIC_SWITCH_RTS, .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_BESIDELAMP, }, #ifndef TJD_XG_PROJECT_CUSTOMIZED_TZ1 {.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_SPIRIT_ISLAND, }, {.x = 202, .y = SHAPE_CENTER_Y_SIX, .w = 60, .h = 36, .bind_id = COMPO_ID_BTN_PINCH_ANSWER, }, {.x = 202, .y = SHAPE_CENTER_Y_SEV, .w = 60, .h = 36, .bind_id = COMPO_ID_BTN_RAISE, }, }; //创建亮度调节窗体,创建窗体中不要使用功能结构体 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,16); 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 light_level:%d\n",__func__, SysVariable.light_level); for (u8 i=0; i 1 && SysVariable.light_level <= 5) { SysVariable.light_level--; } break; //增加亮度 case COMPO_ID_BTN_INCREASE: if (SysVariable.light_level >= 1 && SysVariable.light_level < 5) { SysVariable.light_level++; } 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); } // func_cb.sta = FUNC_SET_SUB_DOUSING; break; //床头钟 case COMPO_ID_BTN_BESIDELAMP: SysVariable.charingWatchSwitch = !SysVariable.charingWatchSwitch; break; #ifndef TJD_XG_PROJECT_CUSTOMIZED_TZ1 //盖手熄屏 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; } 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); } } func_light_btn_pic_update(); func_light_button_release_handle(); } //亮度调节功能事件处理 static void func_light_process(void) { f_light_t *f_light = (f_light_t *)func_cb.f_cb; func_light_btn_pic_update(); 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; switch (msg) { case MSG_CTP_TOUCH: 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 > 5) { level_tmp = 5; } tft_bglight_set_level(level_tmp,false); break; case MSG_CTP_SHORT_UP: case MSG_CTP_SHORT_DOWN: case MSG_CTP_SHORT_LEFT: case MSG_CTP_LONG: func_light_button_release_handle(); break; case MSG_CTP_SHORT_RIGHT: 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 != 200&&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->ptm = (page_tp_move_t *)func_zalloc(sizeof(page_tp_move_t)); page_move_info_t info = { .title_used = true, .page_size = SHAPE_CENTER_Y_SEV+29, //除标题外页面总长度 710 - 38 = 672,672 - 74[熄屏时钟] .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; 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(); }