gengxin
authorCCC <2393524978@qq.com>
Wed, 8 Nov 2023 08:36:07 +0000 (16:36 +0800)
committerCCC <2393524978@qq.com>
Wed, 8 Nov 2023 08:36:07 +0000 (16:36 +0800)
2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.c
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_fzd.h
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.c
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_tongxin.h
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.c
2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call_wulian.h
2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c

index fa9c443..a2e3777 100644 (file)
@@ -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,
index ae6868f..0fcfa61 100644 (file)
@@ -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);
index e74534b..def4094 100644 (file)
@@ -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);
index e602dbe..16a493e 100644 (file)
@@ -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);
index 48c1240..6f9cf79 100644 (file)
@@ -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);
index eba6331..006b577 100644 (file)
@@ -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);
index 07fb558..b32a163 100644 (file)
@@ -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);
index 2478dc5..5ab43c1 100644 (file)
@@ -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)
index 4cdcc06..7490865 100644 (file)
@@ -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);
index 3847449..f572711 100644 (file)
@@ -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);