From: CCC <2393524978@qq.com> Date: Wed, 8 Nov 2023 08:36:07 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=8ced0a5204cb81e779cefad495f78e885fe63887;p=mirrors%2FASR3603_Z5.git gengxin --- diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h b/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h index fa9c443e..a2e37771 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h @@ -171,6 +171,9 @@ enum #endif ACT_ID_WATCH_COMMON, +#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ + ACT_ID_VC_DIAL_BTN, +#endif #ifdef __MMI_WECHAT_SUPPORT__ ACT_ID_WECHAT_MAIN, ACT_ID_WECHAT_RECORDING, diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.c b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.c index ae6868f4..0fcfa610 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.c @@ -16,6 +16,8 @@ static lv_task_t * rat_check_task = NULL; static MMI_VIDEO_CALL_PARAMS_T s_video_call_params = {0}; lv_color_t g_cbuf[canvas_width * canvas_heigh + 8] __attribute__((aligned(8))); +static uint8_t s_vc_contact_selected_index = 0; + static char s_video_call_ticket[MMI_WATCH_VC_TICKET_LEN] = {0}; static char s_video_call_tokens[MMI_WATCH_VC_TOKENS_LEN] = {0}; @@ -429,6 +431,7 @@ static void mmi_vc_connected_animation(lv_obj_t * obj) void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) { +/* if((false == s_video_call_params.ring_off_timeout) && (1 == isNoCarrier) && (MMI_VIDEO_CALL_STATE_NONE == s_video_call_params.state)) @@ -436,6 +439,7 @@ void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); return; } +*/ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -894,6 +898,7 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) mmi_vc_dialing_timer_stop(); mmi_vc_connecting_timer_stop(); +/* if(false == s_video_call_params.ring_off) { s_video_call_params.ring_off = true; @@ -903,6 +908,7 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) s_video_call_params.ring_off_timer_id = Hal_Timer_Start(VOIP_RING_OFF_TIMER_LEN, mmi_vc_ring_off_timeout_cb, NULL, 0); } } +*/ switch(s_video_call_params.state) { @@ -911,10 +917,6 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) // do noting break; - case MMI_VIDEO_CALL_STATE_CALLING: - mmi_video_call_hangup_req(TRUE); - break; - case MMI_VIDEO_CALL_STATE_INCOMING: Hal_Tone_Play_End(); mmi_video_call_reject_req(TRUE); @@ -1438,12 +1440,19 @@ static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj) void mmi_ui_msg_update_vc_call_incoming(void) { + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VC_DIAL_BTN); + if(NULL != activity_obj) + { + lv_obj_del(activity_obj); + } + s_vc_call_ui = MMI_VC_UI_INCOMING; mmi_vc_ui_create(NULL); } void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type, char * t_ticket, char * t_tokens) { +/* if(true == mmi_active_screen_is_prohibit_interrupted() || true == is_rat_gsm() #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ @@ -1457,6 +1466,7 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type, char mmi_video_call_reject_req(TRUE); return; } +*/ if(AUDIO_CTRL_PRIORITY_2 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, mmi_vc_audio_ctrl_callback)) { @@ -1523,6 +1533,24 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type, char } } +bool mmi_vc_call_action_incoming_no_permission(void) +{ + if(true == mmi_active_screen_is_prohibit_interrupted() + || true == is_rat_gsm() + #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ + || true == mmi_watch_is_in_do_not_disturb_time() + #endif + || true == mmi_video_call_is_in_call() + ) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + return true; + } + + return false; +} + static void mmi_vc_call_connecting_timeout_cb(void * para) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1597,6 +1625,12 @@ static void mmi_vc_call_dialing_timeout_cb(void * para) void mmi_vc_call_action_dialing_ext(char * t_tokens, char * t_ticket) { + if(MMI_VIDEO_CALL_STATE_DIALING != s_video_call_params.state) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return; + } + memset(s_video_call_ticket, 0x0, MMI_WATCH_VC_TICKET_LEN); strncpy(s_video_call_ticket, t_ticket, MMI_WATCH_VC_TICKET_LEN - 1); @@ -1705,10 +1739,15 @@ static void mmi_vc_voice_btn_action(lv_obj_t * btn, lv_event_t e) return; } + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VC_DIAL_BTN); + if(NULL != activity_obj) + { + lv_obj_del(activity_obj); + } + uint8_t index = s_vc_contact_selected_index; + if(true == mmi_vc_check_mo_permission()) { - uint8_t index = lv_watch_get_free_num(btn); - mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VOICE); } else @@ -1729,10 +1768,15 @@ static void mmi_vc_video_btn_action(lv_obj_t * btn, lv_event_t e) return; } + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VC_DIAL_BTN); + if(NULL != activity_obj) + { + lv_obj_del(activity_obj); + } + uint8_t index = s_vc_contact_selected_index; + if(true == mmi_vc_check_mo_permission()) { - uint8_t index = lv_watch_get_free_num(btn); - mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VIDEO); } else @@ -1741,18 +1785,33 @@ static void mmi_vc_video_btn_action(lv_obj_t * btn, lv_event_t e) } } -static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) +static void mmi_vc_dial_btn_screen_prepare_destory(lv_obj_t * activity_obj) { - if(LV_EVENT_CLICKED != e) + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_png_cache_all_free(); +} + +static lv_obj_t * mmi_vc_dial_btn_screen_create(lv_obj_t * activity_obj) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(activity_obj == NULL) { - return; + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_VC_DIAL_BTN; + activity_ext.create = mmi_vc_dial_btn_screen_create; + activity_ext.prepare_destory = mmi_vc_dial_btn_screen_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + if(NULL == activity_obj) + return NULL; } - VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + if(NULL == obj) + return NULL; - lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK); - uint8_t index = lv_watch_get_free_num(btn); - lv_obj_t * cont = lv_cont_create(obj, NULL); lv_cont_set_fit(cont, LV_FIT_NONE); lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); // lv_obj_get_width(obj), lv_obj_get_height(obj)); @@ -1769,7 +1828,6 @@ static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) lv_obj_align(voicebtn, cont, LV_ALIGN_IN_TOP_MID, 0, 10); #endif lv_obj_set_event_cb(voicebtn, mmi_vc_voice_btn_action); - lv_watch_set_free_num(voicebtn, index); lv_obj_t * videobtn = lv_imgbtn_create(cont, NULL); lv_imgbtn_set_src(videobtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VIDEO_BTN); @@ -1780,7 +1838,19 @@ static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) lv_obj_align(videobtn, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -10); #endif lv_obj_set_event_cb(videobtn, mmi_vc_video_btn_action); - lv_watch_set_free_num(videobtn, index); + + return obj; +} + +static void mmi_vc_contact_event_cb(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + { + return; + } + + s_vc_contact_selected_index = lv_watch_get_free_num(btn); + mmi_vc_dial_btn_screen_create(NULL); } static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) @@ -1850,7 +1920,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) btn = lv_list_add_btn(list, NULL, NULL); //lv_page_glue_obj(btn, true); //lv_obj_add_protect(btn, LV_PROTECT_PRESS_LOST); - lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen); + lv_obj_set_event_cb(btn, mmi_vc_contact_event_cb); lv_watch_obj_add_element(btn); lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); @@ -1876,7 +1946,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) btn = lv_list_add_btn(list, NULL, NULL); lv_btn_set_layout(btn, LV_LAYOUT_ROW_MID); - //lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen); + //lv_obj_set_event_cb(btn, mmi_vc_contact_event_cb); //lv_watch_set_free_num(btn, i); lv_obj_t * cont = lv_cont_create(btn, NULL); @@ -1887,7 +1957,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) lv_page_glue_obj(cont, true); lv_watch_obj_add_element(cont); lv_obj_set_click(cont, true); - lv_obj_set_event_cb(cont, mmi_vc_dial_btn_screen); + lv_obj_set_event_cb(cont, mmi_vc_contact_event_cb); lv_watch_set_free_num(cont, i); label = lv_label_create(cont, NULL); @@ -2040,10 +2110,6 @@ void mmi_vc_activity_destroy_req(void) // do noting break; - case MMI_VIDEO_CALL_STATE_CALLING: - mmi_video_call_hangup_req(FALSE); - break; - case MMI_VIDEO_CALL_STATE_INCOMING: Hal_Tone_Play_End(); mmi_video_call_reject_req(FALSE); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.h b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.h index e74534b4..def4094d 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.h @@ -47,6 +47,7 @@ void mmi_vc_call_action_connected(void); void mmi_ui_msg_update_vc_call_stop(void); void mmi_vc_call_action_call_stop(void); void mmi_ui_msg_update_vc_call_incoming(void); +bool mmi_vc_call_action_incoming_no_permission(void); int8_t mmi_video_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUri, char * t_ticket); void mmi_video_call_hangup_req(BOOL bye); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.c b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.c index e602dbed..16a493ee 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.c @@ -16,6 +16,8 @@ static lv_task_t * rat_check_task = NULL; static MMI_VIDEO_CALL_PARAMS_T s_video_call_params = {0}; lv_color_t g_cbuf[canvas_width * canvas_heigh + 8] __attribute__((aligned(8))); +static uint8_t s_vc_contact_selected_index = 0; + static char s_vc_ticket[MMI_WATCH_VC_TICKET_LEN] = {0}; static char s_vc_appkey[MMI_WATCH_VC_APPKEY_LEN] = {0}; static char s_vc_secret[MMI_WATCH_VC_SECRET_LEN] = {0}; @@ -433,6 +435,7 @@ static void mmi_vc_connected_animation(lv_obj_t * obj) void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) { +/* if((false == s_video_call_params.ring_off_timeout) && (1 == isNoCarrier) && (MMI_VIDEO_CALL_STATE_NONE == s_video_call_params.state)) @@ -440,6 +443,7 @@ void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); return; } +*/ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -898,6 +902,7 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) mmi_vc_dialing_timer_stop(); mmi_vc_connecting_timer_stop(); +/* if(false == s_video_call_params.ring_off) { s_video_call_params.ring_off = true; @@ -907,6 +912,7 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) s_video_call_params.ring_off_timer_id = Hal_Timer_Start(VOIP_RING_OFF_TIMER_LEN, mmi_vc_ring_off_timeout_cb, NULL, 0); } } +*/ switch(s_video_call_params.state) { @@ -915,10 +921,6 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) // do noting break; - case MMI_VIDEO_CALL_STATE_CALLING: - mmi_video_call_hangup_req(TRUE); - break; - case MMI_VIDEO_CALL_STATE_INCOMING: Hal_Tone_Play_End(); mmi_video_call_reject_req(TRUE); @@ -1442,6 +1444,12 @@ static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj) void mmi_ui_msg_update_vc_call_incoming(void) { + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VC_DIAL_BTN); + if(NULL != activity_obj) + { + lv_obj_del(activity_obj); + } + s_vc_call_ui = MMI_VC_UI_INCOMING; mmi_vc_ui_create(NULL); } @@ -1450,6 +1458,7 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type, char * t_ticket, char * t_appkey, char * t_secret, char * t_tokens, char * t_uid) { +/* if(true == mmi_active_screen_is_prohibit_interrupted() || true == is_rat_gsm() #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ @@ -1463,6 +1472,7 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type, mmi_video_call_reject_req(TRUE); return; } +*/ if(AUDIO_CTRL_PRIORITY_2 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, mmi_vc_audio_ctrl_callback)) { @@ -1538,6 +1548,24 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type, } } +bool mmi_vc_call_action_incoming_no_permission(void) +{ + if(true == mmi_active_screen_is_prohibit_interrupted() + || true == is_rat_gsm() + #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ + || true == mmi_watch_is_in_do_not_disturb_time() + #endif + || true == mmi_video_call_is_in_call() + ) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + return true; + } + + return false; +} + static void mmi_vc_call_connecting_timeout_cb(void * para) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1612,6 +1640,12 @@ static void mmi_vc_call_dialing_timeout_cb(void * para) void mmi_vc_call_action_dialing_ext(char * t_ticket, char * t_appkey, char * t_secret, char * t_tokens, char * t_uid) { + if(MMI_VIDEO_CALL_STATE_DIALING != s_video_call_params.state) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return; + } + memset(s_vc_ticket, 0x0, MMI_WATCH_VC_TICKET_LEN); strncpy(s_vc_ticket, t_ticket, MMI_WATCH_VC_TICKET_LEN - 1); @@ -1729,10 +1763,15 @@ static void mmi_vc_voice_btn_action(lv_obj_t * btn, lv_event_t e) return; } + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VC_DIAL_BTN); + if(NULL != activity_obj) + { + lv_obj_del(activity_obj); + } + uint8_t index = s_vc_contact_selected_index; + if(true == mmi_vc_check_mo_permission()) { - uint8_t index = lv_watch_get_free_num(btn); - mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VOICE); } else @@ -1753,10 +1792,15 @@ static void mmi_vc_video_btn_action(lv_obj_t * btn, lv_event_t e) return; } + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VC_DIAL_BTN); + if(NULL != activity_obj) + { + lv_obj_del(activity_obj); + } + uint8_t index = s_vc_contact_selected_index; + if(true == mmi_vc_check_mo_permission()) { - uint8_t index = lv_watch_get_free_num(btn); - mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VIDEO); } else @@ -1765,18 +1809,33 @@ static void mmi_vc_video_btn_action(lv_obj_t * btn, lv_event_t e) } } -static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) +static void mmi_vc_dial_btn_screen_prepare_destory(lv_obj_t * activity_obj) { - if(LV_EVENT_CLICKED != e) + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_png_cache_all_free(); +} + +static lv_obj_t * mmi_vc_dial_btn_screen_create(lv_obj_t * activity_obj) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(activity_obj == NULL) { - return; + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_VC_DIAL_BTN; + activity_ext.create = mmi_vc_dial_btn_screen_create; + activity_ext.prepare_destory = mmi_vc_dial_btn_screen_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + if(NULL == activity_obj) + return NULL; } - VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + if(NULL == obj) + return NULL; - lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK); - uint8_t index = lv_watch_get_free_num(btn); - lv_obj_t * cont = lv_cont_create(obj, NULL); lv_cont_set_fit(cont, LV_FIT_NONE); lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); // lv_obj_get_width(obj), lv_obj_get_height(obj)); @@ -1793,7 +1852,6 @@ static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) lv_obj_align(voicebtn, cont, LV_ALIGN_IN_TOP_MID, 0, 10); #endif lv_obj_set_event_cb(voicebtn, mmi_vc_voice_btn_action); - lv_watch_set_free_num(voicebtn, index); lv_obj_t * videobtn = lv_imgbtn_create(cont, NULL); lv_imgbtn_set_src(videobtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VIDEO_BTN); @@ -1804,7 +1862,19 @@ static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) lv_obj_align(videobtn, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -10); #endif lv_obj_set_event_cb(videobtn, mmi_vc_video_btn_action); - lv_watch_set_free_num(videobtn, index); + + return obj; +} + +static void mmi_vc_contact_event_cb(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + { + return; + } + + s_vc_contact_selected_index = lv_watch_get_free_num(btn); + mmi_vc_dial_btn_screen_create(NULL); } static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) @@ -1874,7 +1944,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) btn = lv_list_add_btn(list, NULL, NULL); //lv_page_glue_obj(btn, true); //lv_obj_add_protect(btn, LV_PROTECT_PRESS_LOST); - lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen); + lv_obj_set_event_cb(btn, mmi_vc_contact_event_cb); lv_watch_obj_add_element(btn); lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); @@ -1900,7 +1970,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) btn = lv_list_add_btn(list, NULL, NULL); lv_btn_set_layout(btn, LV_LAYOUT_ROW_MID); - //lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen); + //lv_obj_set_event_cb(btn, mmi_vc_contact_event_cb); //lv_watch_set_free_num(btn, i); lv_obj_t * cont = lv_cont_create(btn, NULL); @@ -1911,7 +1981,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) lv_page_glue_obj(cont, true); lv_watch_obj_add_element(cont); lv_obj_set_click(cont, true); - lv_obj_set_event_cb(cont, mmi_vc_dial_btn_screen); + lv_obj_set_event_cb(cont, mmi_vc_contact_event_cb); lv_watch_set_free_num(cont, i); label = lv_label_create(cont, NULL); @@ -2064,10 +2134,6 @@ void mmi_vc_activity_destroy_req(void) // do noting break; - case MMI_VIDEO_CALL_STATE_CALLING: - mmi_video_call_hangup_req(FALSE); - break; - case MMI_VIDEO_CALL_STATE_INCOMING: Hal_Tone_Play_End(); mmi_video_call_reject_req(FALSE); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.h b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.h index 48c1240c..6f9cf79b 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.h @@ -49,6 +49,7 @@ void mmi_vc_call_action_connected(void); void mmi_ui_msg_update_vc_call_stop(void); void mmi_vc_call_action_call_stop(void); void mmi_ui_msg_update_vc_call_incoming(void); +bool mmi_vc_call_action_incoming_no_permission(void); int8_t mmi_video_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUri, char * t_ticket); void mmi_video_call_hangup_req(BOOL bye); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.c b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.c index eba63316..006b5772 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.c @@ -16,6 +16,9 @@ static lv_task_t * rat_check_task = NULL; static MMI_VIDEO_CALL_PARAMS_T s_video_call_params; lv_color_t g_cbuf[canvas_width * canvas_heigh + 8] __attribute__((aligned(8))); +static uint8_t s_vc_contact_selected_index = 0; + + /********************** * STATIC PROTOTYPES **********************/ @@ -425,6 +428,7 @@ static void mmi_vc_connected_animation(lv_obj_t * obj) void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) { +/* if((false == s_video_call_params.ring_off_timeout) && (1 == isNoCarrier) && (MMI_VIDEO_CALL_STATE_NONE == s_video_call_params.state)) @@ -432,6 +436,7 @@ void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); return; } +*/ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -891,6 +896,7 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) mmi_vc_dialing_timer_stop(); mmi_vc_connecting_timer_stop(); +/* if(false == s_video_call_params.ring_off) { s_video_call_params.ring_off = true; @@ -900,6 +906,7 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) s_video_call_params.ring_off_timer_id = Hal_Timer_Start(VOIP_RING_OFF_TIMER_LEN, mmi_vc_ring_off_timeout_cb, NULL, 0); } } +*/ switch(s_video_call_params.state) { @@ -908,10 +915,6 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) // do noting break; - case MMI_VIDEO_CALL_STATE_CALLING: - mmi_video_call_hangup_req(TRUE); - break; - case MMI_VIDEO_CALL_STATE_INCOMING: Hal_Tone_Play_End(); mmi_video_call_reject_req(TRUE); @@ -1441,13 +1444,7 @@ void mmi_ui_msg_update_vc_call_incoming(void) void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type) { - if(true == mmi_active_screen_is_prohibit_interrupted() - || true == is_rat_gsm() - #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ - || true == mmi_watch_is_in_do_not_disturb_time() - #endif - || true == mmi_video_call_is_in_call() - ) + if(true == mmi_vc_call_action_incoming_no_permission()) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1510,6 +1507,24 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type) } } +bool mmi_vc_call_action_incoming_no_permission(void) +{ + if(true == mmi_active_screen_is_prohibit_interrupted() + || true == is_rat_gsm() + #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ + || true == mmi_watch_is_in_do_not_disturb_time() + #endif + || true == mmi_video_call_is_in_call() + ) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + return true; + } + + return false; +} + static void mmi_vc_call_connecting_timeout_cb(void * para) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1681,10 +1696,15 @@ static void mmi_vc_voice_btn_action(lv_obj_t * btn, lv_event_t e) return; } + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VC_DIAL_BTN); + if(NULL != activity_obj) + { + lv_obj_del(activity_obj); + } + uint8_t index = s_vc_contact_selected_index; + if(true == mmi_vc_check_mo_permission()) { - uint8_t index = lv_watch_get_free_num(btn); - mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VOICE); } else @@ -1705,10 +1725,15 @@ static void mmi_vc_video_btn_action(lv_obj_t * btn, lv_event_t e) return; } + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VC_DIAL_BTN); + if(NULL != activity_obj) + { + lv_obj_del(activity_obj); + } + uint8_t index = s_vc_contact_selected_index; + if(true == mmi_vc_check_mo_permission()) { - uint8_t index = lv_watch_get_free_num(btn); - mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VIDEO); } else @@ -1717,18 +1742,33 @@ static void mmi_vc_video_btn_action(lv_obj_t * btn, lv_event_t e) } } -static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) +static void mmi_vc_dial_btn_screen_prepare_destory(lv_obj_t * activity_obj) { - if(LV_EVENT_CLICKED != e) + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_png_cache_all_free(); +} + +static lv_obj_t * mmi_vc_dial_btn_screen_create(lv_obj_t * activity_obj) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(activity_obj == NULL) { - return; + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_VC_DIAL_BTN; + activity_ext.create = mmi_vc_dial_btn_screen_create; + activity_ext.prepare_destory = mmi_vc_dial_btn_screen_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + if(NULL == activity_obj) + return NULL; } - VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + if(NULL == obj) + return NULL; - lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK); - uint8_t index = lv_watch_get_free_num(btn); - lv_obj_t * cont = lv_cont_create(obj, NULL); lv_cont_set_fit(cont, LV_FIT_NONE); lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); // lv_obj_get_width(obj), lv_obj_get_height(obj)); @@ -1745,7 +1785,6 @@ static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) lv_obj_align(voicebtn, cont, LV_ALIGN_IN_TOP_MID, 0, 10); #endif lv_obj_set_event_cb(voicebtn, mmi_vc_voice_btn_action); - lv_watch_set_free_num(voicebtn, index); lv_obj_t * videobtn = lv_imgbtn_create(cont, NULL); lv_imgbtn_set_src(videobtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VIDEO_BTN); @@ -1756,7 +1795,19 @@ static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) lv_obj_align(videobtn, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -10); #endif lv_obj_set_event_cb(videobtn, mmi_vc_video_btn_action); - lv_watch_set_free_num(videobtn, index); + + return obj; +} + +static void mmi_vc_contact_event_cb(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + { + return; + } + + s_vc_contact_selected_index = lv_watch_get_free_num(btn); + mmi_vc_dial_btn_screen_create(NULL); } static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) @@ -1826,7 +1877,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) btn = lv_list_add_btn(list, NULL, NULL); //lv_page_glue_obj(btn, true); //lv_obj_add_protect(btn, LV_PROTECT_PRESS_LOST); - lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen); + lv_obj_set_event_cb(btn, mmi_vc_contact_event_cb); lv_watch_obj_add_element(btn); lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); @@ -1852,7 +1903,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) btn = lv_list_add_btn(list, NULL, NULL); lv_btn_set_layout(btn, LV_LAYOUT_ROW_MID); - //lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen); + //lv_obj_set_event_cb(btn, mmi_vc_contact_event_cb); //lv_watch_set_free_num(btn, i); lv_obj_t * cont = lv_cont_create(btn, NULL); @@ -1863,7 +1914,7 @@ static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) lv_page_glue_obj(cont, true); lv_watch_obj_add_element(cont); lv_obj_set_click(cont, true); - lv_obj_set_event_cb(cont, mmi_vc_dial_btn_screen); + lv_obj_set_event_cb(cont, mmi_vc_contact_event_cb); lv_watch_set_free_num(cont, i); label = lv_label_create(cont, NULL); @@ -2016,10 +2067,6 @@ void mmi_vc_activity_destroy_req(void) // do noting break; - case MMI_VIDEO_CALL_STATE_CALLING: - mmi_video_call_hangup_req(FALSE); - break; - case MMI_VIDEO_CALL_STATE_INCOMING: Hal_Tone_Play_End(); mmi_video_call_reject_req(FALSE); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.h b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.h index 07fb5586..b32a163d 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.h @@ -47,6 +47,7 @@ void mmi_vc_call_action_connected(void); void mmi_ui_msg_update_vc_call_stop(void); void mmi_vc_call_action_call_stop(void); void mmi_ui_msg_update_vc_call_incoming(void); +bool mmi_vc_call_action_incoming_no_permission(void); int8_t mmi_video_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUri); void mmi_video_call_hangup_req(BOOL bye); diff --git a/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c b/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c index 2478dc5f..5ab43c11 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c @@ -101,6 +101,10 @@ void mmi_watch_location_mission_list_data_send(void) s_watch_location_data.gps_data.degree * 10, s_watch_location_data.gps_data.altitude * 10, s_watch_location_data.gps_data.satellite_num); + + // for debug + uint8_t t_total = _lv_ll_get_len(&s_watch_location_mission_ll); + uint8_t t_counter = 0; while(NULL != node) { @@ -134,7 +138,11 @@ void mmi_watch_location_mission_list_data_send(void) _lv_ll_remove(&s_watch_location_mission_ll, node); lv_mem_free(node); node = pre_node; + + // for debug + t_counter++; } + LOCATION_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: total=%d,counter=%d\n", __FUNCTION__, __LINE__, t_total, t_counter); } void mmi_watch_location_gps_data_get(void) diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c index 4cdcc068..74908658 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c @@ -2310,7 +2310,7 @@ bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, un return false; } - if(true == mmi_video_call_is_in_call()) + if(true == mmi_vc_call_action_incoming_no_permission()) { PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); mmi_protocol_fzd_action_SERVER_VC_CALL_REQUEST(-1); @@ -2554,7 +2554,7 @@ bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, un return false; } - if(true == mmi_video_call_is_in_call()) + if(true == mmi_vc_call_action_incoming_no_permission()) { PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); mmi_protocol_fzd_action_SERVER_VC_CALL_REQUEST(-1); diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c index 3847449b..f5727112 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c @@ -154,6 +154,8 @@ void mmi_watch_search_timer_start(void) void mmi_watch_search_screen_destroy(void) { + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + //lv_watch_search_ext_t * ext = lv_obj_get_ext_attr(lv_watch_get_activity_obj(ACT_ID_WATCH_SEARCHING)); mmi_watch_search_timer_stop(); @@ -175,9 +177,7 @@ void mmi_watch_search_screen_destroy(void) } void mmi_watch_search_screen_event_cb(lv_obj_t * obj, lv_event_t e) -{ - SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: event=%d\n", __FUNCTION__, __LINE__, e); - +{ if(LV_EVENT_CLICKED == e) { mmi_watch_search_screen_destroy(); // lv_watch_del_interface(ACT_ID_WATCH_SEARCHING);