From: @CHENG <2393524978@qq.com> Date: Fri, 21 Jun 2024 09:17:50 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=ea7f75619018436a35137f1cacc19d360309152f;p=mirrors%2FASR3603_Z5.git gengxin --- diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c index a00d30d0..54a0c6b7 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c @@ -188,7 +188,7 @@ static void mm_aigc_data_send_task_handle(void * param) break; case MMI_AIGC_MSG_TRANS_STOP_SEND: - mmi_aigc_send_trans_stop_data_process(msg_param, param_size); + //mmi_aigc_send_trans_stop_data_process(msg_param, param_size); break; case MMI_AIGC_MSG_CHAT_TEXT_SEND: @@ -284,7 +284,7 @@ void mmi_aigc_send_trans_audio_msg(void * param, uint32_t param_size) void mmi_aigc_send_trans_stop_msg(void * param, uint32_t param_size) { - mmi_aigc_data_send_task_msg_send(MMI_AIGC_MSG_TRANS_STOP_SEND, NULL, 0); + //mmi_aigc_data_send_task_msg_send(MMI_AIGC_MSG_TRANS_STOP_SEND, NULL, 0); } static void mmi_aigc_send_trans_start_data_process(void * data_ptr, uint32_t data_len) @@ -314,6 +314,7 @@ static void mmi_aigc_send_trans_audio_data_process(void * data_ptr, uint32_t dat static void mmi_aigc_send_trans_stop_data_process(void * data_ptr, uint32_t data_len) { +#if 0 char send_ptr[512] = {0}; int send_len = 0; @@ -324,6 +325,7 @@ static void mmi_aigc_send_trans_stop_data_process(void * data_ptr, uint32_t data { AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: send fail\n", __FUNCTION__, __LINE__); } +#endif } static void mmi_aigc_trans_text_data_recv_msg(void * param, uint32_t param_size) @@ -358,6 +360,23 @@ static void mmi_aigc_recv_trans_text_data_process(void * data_ptr, uint32_t data AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: transcription start\n", __FUNCTION__, __LINE__); } + else if(0 == strncmp(value_event_str, "Changed", strlen("Changed"))) + { + // changed + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: changed\n", __FUNCTION__, __LINE__); + cJSON * json_result = cJSON_GetObjectItem(json_root, "result"); + if(NULL != json_result) + { + char * value_result_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_result, "result")); + uint32_t value_result_len = strlen(value_result_str); + + if(true == mmi_aigc_trans_result_text_store(value_result_str, value_result_len, false)) + { + // refresh ui + mmi_ui_msg_update_aigc_recv_trans_text_middle(); + } + } + } else if(0 == strncmp(value_event_str, "SentenceEnd", strlen("SentenceEnd"))) { // end @@ -368,10 +387,10 @@ static void mmi_aigc_recv_trans_text_data_process(void * data_ptr, uint32_t data char * value_result_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_result, "result")); uint32_t value_result_len = strlen(value_result_str); - if(true == mmi_aigc_trans_result_text_store(value_result_str, value_result_len)) + if(true == mmi_aigc_trans_result_text_store(value_result_str, value_result_len, true)) { - // send msg to refresh ui - + // refresh ui + mmi_ui_msg_action_aigc_recv_trans_text_stop(); } } } @@ -380,11 +399,6 @@ static void mmi_aigc_recv_trans_text_data_process(void * data_ptr, uint32_t data // stop AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: transcription stop\n", __FUNCTION__, __LINE__); - // refresh ui - mmi_ui_msg_action_aigc_recv_trans_text_stop(); - - // - mmi_aigc_chat_text_download_requst(); } } @@ -498,9 +512,6 @@ static void mmi_aigc_recv_chat_text_data_process(void * data_ptr, uint32_t data_ // send msg to refresh ui mmi_ui_msg_action_aigc_recv_chat_text_stop(); - - // - mmi_aigc_tts_audio_download_requst(); } } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c index 9637c6a8..eaf44268 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c @@ -14,19 +14,80 @@ static uint8_t s_aigc_current_chat_index = 0; // 1 chat = 2 msg items static uint32_t s_aigc_recording_sent_size = 0; static uint32_t s_aigc_tts_text_sent_size = 0; -static uint8_t s_aigc_thinking_counter = 0; +static bool s_aigc_trans_text_end = false; static bool s_aigc_tts_audio_playing = false; static lv_ll_t s_aigc_tts_audio_ll = {0}; static mmi_aigc_tts_audio_ll_t * s_aigc_tts_audio_play_node = NULL; +static bool s_aigc_trans_ws_open_flag = false; +static bool s_aigc_chat_ws_open_flag = false; +static bool s_aigc_tts_ws_open_flag = false; + #define MMI_AIGC_SEND_TTS_TEXT_MAX (150) // 50 #define MMI_AIGC_SEND_TTS_TEXT_MIN (99) // 33 +static lv_res_t mmi_aigc_list_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param); +static void mmi_aigc_list_set_slide_enable(lv_watch_obj_ext_t * ext, bool enable); static void mmi_aigc_default_screen_display(void); static void mmi_aigc_record_button_event_cb(lv_obj_t * obj, lv_event_t e); + +static void mmi_aigc_trans_websocket_open(void) +{ + if(false == s_aigc_trans_ws_open_flag) + { + mmi_aigc_trans_websocket_app_start(); + s_aigc_trans_ws_open_flag = true; + } +} + +static void mmi_aigc_chat_websocket_open(void) +{ + if(false == s_aigc_chat_ws_open_flag) + { + mmi_aigc_chat_websocket_app_start(); + s_aigc_chat_ws_open_flag = true; + } +} + +static void mmi_aigc_tts_websocket_open(void) +{ + if(false == s_aigc_tts_ws_open_flag) + { + mmi_aigc_tts_websocket_app_start(); + s_aigc_tts_ws_open_flag = true; + } +} + +static void mmi_aigc_trans_websocket_close(void) +{ + if(true == s_aigc_trans_ws_open_flag) + { + mmi_aigc_trans_websocket_app_stop(); + s_aigc_trans_ws_open_flag = false; + } +} + +static void mmi_aigc_chat_websocket_close(void) +{ + if(true == s_aigc_chat_ws_open_flag) + { + mmi_aigc_chat_websocket_app_stop(); + s_aigc_chat_ws_open_flag = false; + } +} + +static void mmi_aigc_tts_websocket_close(void) +{ + if(true == s_aigc_tts_ws_open_flag) + { + mmi_aigc_tts_websocket_app_stop(); + s_aigc_tts_ws_open_flag = false; + } +} + static void mmi_aigc_msg_data_clean(void) { AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -67,7 +128,7 @@ char * mmi_aigc_trans_result_text_get(uint32_t * data_len) return (t_aigc_item_info->text_data_ptr); } -bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len) +bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len, bool is_end) { if(NULL == data_buff || 0 == data_len) { @@ -75,8 +136,34 @@ bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len) return false; } + if(true == s_aigc_trans_text_end) + { + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + s_aigc_trans_text_end = is_end; + mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[0]); +#if 1 + char * temp_ptr = lv_mem_alloc(data_len + 1); + if(NULL == temp_ptr) + { + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: alloc memory fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(temp_ptr, data_len + 1); + _lv_memcpy(temp_ptr, data_buff, data_len); + + if(NULL != t_aigc_item_info->text_data_ptr) + { + lv_mem_free(t_aigc_item_info->text_data_ptr); + t_aigc_item_info->text_data_ptr = NULL; + } + t_aigc_item_info->text_data_ptr = temp_ptr; + t_aigc_item_info->text_data_size = data_len; + +#else if(NULL == t_aigc_item_info->text_data_ptr) { char * temp_ptr = lv_mem_alloc(data_len + 1); @@ -105,8 +192,8 @@ bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len) t_aigc_item_info->text_data_ptr = temp_ptr; t_aigc_item_info->text_data_size += data_len; } +#endif t_aigc_item_info->msg_from = 0; - s_aigc_info_p->msg_count = 1; AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: size=%d,ptr=0x%x\n", __FUNCTION__, __LINE__, t_aigc_item_info->text_data_size, t_aigc_item_info->text_data_ptr); @@ -165,7 +252,6 @@ bool mmi_aigc_chat_result_text_store(char * data_buff, uint32_t data_len) t_aigc_item_info->text_data_size += data_len; } t_aigc_item_info->msg_from = 1; - s_aigc_info_p->msg_count = 2; printf("[@CHENG_DEBUG][%s][%d]: size=%d,ptr=0x%x\n", __FUNCTION__, __LINE__, t_aigc_item_info->text_data_size, t_aigc_item_info->text_data_ptr); @@ -400,7 +486,6 @@ void mmi_aigc_tts_audio_download_requst(void) mmi_aigc_send_tts_text_action_pre(); } -#if 1 void mmi_aigc_tts_audio_ll_init(void) { @@ -495,12 +580,14 @@ void mmi_aigc_tts_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) } else if(MMI_AIGC_TTS_AUDIO_PRI > priority) { - Hal_NFFS_File_Play_End(); - Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI); - // websocket - mmi_aigc_tts_websocket_app_stop(); + // wb + mmi_aigc_tts_websocket_close(); + // res mmi_aigc_tts_audio_ll_clean(); + + Hal_NFFS_File_Play_End(); + Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI); } } @@ -536,7 +623,7 @@ static void mmi_aigc_tts_audio_over_cb(void * para) #else volume = query_current_volume(); #endif - volume = 1; + volume = HAL_AUDIO_SPK_LEVEL_MAX; Hal_Tone_Play_Onetime((uint32_t *)node->audio_data_ptr, node->audio_data_size, @@ -573,7 +660,7 @@ bool mmi_aigc_tts_audio_play(void) #else volume = query_current_volume(); #endif - volume = 1; + volume = HAL_AUDIO_SPK_LEVEL_MAX; Hal_Tone_Play_Onetime((uint32_t *)node->audio_data_ptr, node->audio_data_size, @@ -585,124 +672,94 @@ bool mmi_aigc_tts_audio_play(void) return true; } -#else -bool mmi_aigc_tts_audio_store(char * data_buff, uint32_t data_len) +static void mmi_aigc_trans_text_middle_screen_task_cb(lv_task_t * task) { - if(NULL == data_buff || 0 == data_len) - { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - return false; - } - - mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[1]); + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state); - if(NULL == t_aigc_item_info->audio_data_ptr) - { - char * temp_ptr = lv_mem_alloc(data_len + 1); - if(NULL == temp_ptr) - { - printf("[@CHENG_DEBUG][%s][%d]: alloc memory fail\n", __FUNCTION__, __LINE__); - return false; - } - _lv_memset_00(temp_ptr, data_len + 1); - _lv_memcpy(temp_ptr, data_buff, data_len); + if(MMI_AIGC_UI_STATE_LISTENING == s_aigc_ui_state || MMI_AIGC_UI_STATE_LISTENING_MIDDLE == s_aigc_ui_state) + { + lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); + if(NULL == ext) + return; + + mmi_aigc_list_set_slide_enable(&ext->old_ext, true); - t_aigc_item_info->audio_data_ptr = temp_ptr; - t_aigc_item_info->audio_data_size = data_len; - } - else - { - char * temp_ptr = lv_mem_realloc(t_aigc_item_info->audio_data_ptr, t_aigc_item_info->audio_data_size + data_len + 1); - if(NULL == temp_ptr) + if(0 != mmi_aigc_msg_count_get()) { - printf("[@CHENG_DEBUG][%s][%d]: realloc memory fail\n", __FUNCTION__, __LINE__); - return false; - } - _lv_memset_00(temp_ptr + t_aigc_item_info->audio_data_size, data_len + 1); - _lv_memcpy(temp_ptr + t_aigc_item_info->audio_data_size, data_buff, data_len); + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - t_aigc_item_info->audio_data_ptr = temp_ptr; - t_aigc_item_info->audio_data_size += data_len; + mmi_aigc_listening_middle_screen_display(); + } } - - printf("[@CHENG_DEBUG][%s][%d]: size=%d,ptr=0x%x\n", __FUNCTION__, __LINE__, t_aigc_item_info->audio_data_size, t_aigc_item_info->audio_data_ptr); - - return true; } -void mmi_aigc_tts_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) +void mmi_ui_msg_update_aigc_recv_trans_text_middle(void) { - AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority); - - if(MMI_AIGC_TTS_AUDIO_PRI == priority) - { - - } - else if(MMI_AIGC_TTS_AUDIO_PRI > priority) - { - Hal_NFFS_File_Play_End(); - Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI); - } + lv_task_t * task_p = lv_task_create(mmi_aigc_trans_text_middle_screen_task_cb, 50, LV_TASK_PRIO_HIGH, NULL); + lv_task_once(task_p); } -static void mmi_aigc_tts_audio_over_cb(void * para) +static void mmi_aigc_trans_text_screen_task_cb(lv_task_t * task) { AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + mmi_aigc_thinking_screen_display(); + mmi_aigc_chat_text_download_requst(); } -bool mmi_aigc_tts_audio_play(void) +void mmi_ui_msg_update_aigc_recv_trans_text_stop(void) { -/* - uint32_t fs_total = 0; - uint32_t fs_free = 0; - lv_fs_free_space('C', &fs_total, &fs_free); - printf("[@CHENG_DEBUG][%s][%d]: space total = %dB, free = %dB\n", __FUNCTION__, __LINE__, fs_total, fs_free); -*/ + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state); - mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[1]); + // wb + mmi_aigc_trans_websocket_close(); + mmi_aigc_chat_websocket_open(); - if(MMI_AIGC_TTS_AUDIO_PRI == Hal_Audio_Manage_Start_Req(MMI_AIGC_TTS_AUDIO_PRI, mmi_aigc_tts_audio_ctrl_callback)) - { - uint8_t volume = 0; - #ifdef __MMI_USER_PROFILE_SUPPORT__ - volume = mmi_user_profile_current_mode_remind_volume_get(); - #else - volume = query_current_volume(); - #endif - volume = 1; - - Hal_Tone_Play_Onetime((uint32_t *)t_aigc_item_info->audio_data_ptr, - t_aigc_item_info->audio_data_size, - volume, - mmi_aigc_tts_audio_over_cb, - NULL); - } + if(MMI_AIGC_UI_STATE_LISTENING == s_aigc_ui_state || MMI_AIGC_UI_STATE_LISTENING_MIDDLE == s_aigc_ui_state) + { + mmi_aigc_listening_stop(true); - return true; -} -#endif + lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); + if(NULL == ext) + return; + + mmi_aigc_list_set_slide_enable(&ext->old_ext, true); -void mmi_ui_msg_update_aigc_recv_trans_text_stop(void) -{ - AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + if(0 == mmi_aigc_msg_count_get()) + { + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + mmi_aigc_default_screen_display(); + } + else + { + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + mmi_aigc_listening_middle_screen_display(); + lv_task_t * task_p = lv_task_create(mmi_aigc_trans_text_screen_task_cb, 1000, LV_TASK_PRIO_HIGH, NULL); + lv_task_once(task_p); + } + } } void mmi_ui_msg_update_aigc_recv_chat_text_stop(void) { AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - mmi_aigc_main_screen_refresh(); -} - -void mmi_ui_msg_update_aigc_recv_tts_audio_stop(void) -{ - AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + mmi_aigc_chat_websocket_close(); + mmi_aigc_tts_websocket_open(); + + if(MMI_AIGC_UI_STATE_THINKING == s_aigc_ui_state) + { + mmi_aigc_main_screen_refresh(); + mmi_aigc_tts_audio_download_requst(); + } } + void * mmi_aigc_actId_ext_get(lv_watch_Activity_Id_t actId) { lv_obj_t * activity_obj = lv_watch_get_activity_obj(actId); @@ -720,14 +777,63 @@ void * mmi_aigc_actId_ext_get(lv_watch_Activity_Id_t actId) return NULL; } +static void mmi_aigc_lv_style_reset(void) +{ + lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); + if(NULL == ext) + return; + + lv_style_reset(&(ext->style_cont_self)); + lv_style_reset(&(ext->style_cont_other)); + //lv_style_reset(&(ext->style_label_time)); + lv_style_reset(&(ext->style_label_len_self)); + lv_style_reset(&(ext->style_label_len_other)); +} + +static void mmi_aigc_lv_style_set(void) +{ + lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); + if(NULL == ext) + return; + + //lv_style_init(&(ext->style_label_time)); + //lv_style_copy(&(ext->style_label_time), &lv_watch_font20); + //lv_style_set_text_color(&(ext->style_label_time), LV_STATE_DEFAULT, lv_color_make(20, 187, 242)); + + lv_style_init(&(ext->style_label_len_other)); + lv_style_copy(&(ext->style_label_len_other), &lv_watch_font20); + lv_style_set_text_color(&(ext->style_label_len_other), LV_STATE_DEFAULT, LV_COLOR_WHITE); + + lv_style_init(&(ext->style_label_len_self)); + lv_style_copy(&(ext->style_label_len_self), &lv_watch_font20); + lv_style_set_text_color(&(ext->style_label_len_self), LV_STATE_DEFAULT, LV_COLOR_WHITE); + + lv_style_init(&(ext->style_cont_self)); + lv_style_set_bg_color(&(ext->style_cont_self), LV_STATE_DEFAULT, LV_COLOR_MAKE(79, 195, 76)); // LV_COLOR_MAKE(175, 242, 89)); + lv_style_set_radius(&(ext->style_cont_self), LV_STATE_DEFAULT, 15); // 30 + lv_style_set_pad_top(&(ext->style_cont_self), LV_STATE_DEFAULT, 10); // 8 + lv_style_set_pad_bottom(&(ext->style_cont_self), LV_STATE_DEFAULT, 10); // 8 + lv_style_set_pad_left(&(ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8 + lv_style_set_pad_right(&(ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8 + + lv_style_init(&(ext->style_cont_other)); + lv_style_set_bg_color(&(ext->style_cont_other), LV_STATE_DEFAULT, LV_COLOR_MAKE(25, 25, 25)); // LV_COLOR_MAKE(0xE2, 0xBD, 0xFF)); + lv_style_set_radius(&(ext->style_cont_other), LV_STATE_DEFAULT, 15); + lv_style_set_pad_top(&(ext->style_cont_other), LV_STATE_DEFAULT, 10); + lv_style_set_pad_bottom(&(ext->style_cont_other), LV_STATE_DEFAULT, 10); + lv_style_set_pad_left(&(ext->style_cont_other), LV_STATE_DEFAULT, 5); + lv_style_set_pad_right(&(ext->style_cont_other), LV_STATE_DEFAULT, 5); +} + void mmi_aigc_main_prepare_destory(lv_obj_t * activity_obj) { AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); // websocket - mmi_aigc_trans_websocket_app_stop(); - mmi_aigc_chat_websocket_app_stop(); - mmi_aigc_tts_websocket_app_stop(); + mmi_aigc_trans_websocket_close(); + mmi_aigc_chat_websocket_close(); + mmi_aigc_tts_websocket_close(); + // data task mmi_aigc_data_task_delete(); watch_set_suspend_enable(true, ACT_ID_AIGC_MAIN, 0); @@ -736,19 +842,19 @@ void mmi_aigc_main_prepare_destory(lv_obj_t * activity_obj) mmi_aigc_msg_data_clean(); mmi_aigc_tts_audio_ll_clean(); - // + // audio + mmi_aigc_listening_stop(true); Hal_NFFS_File_Play_End(); Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI); //Hal_Vibrator_Play_End(); lv_watch_png_cache_all_free(); + mmi_aigc_lv_style_reset(); lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); if(NULL == ext) return ; - mmi_aigc_list_msg_item_style_reset(ext); - if(NULL != ext->record_buffer) { lv_mem_free(ext->record_buffer); @@ -857,6 +963,7 @@ void mmi_aigc_timeout_screen_display(void) lv_obj_set_hidden(ext->cont_default, true); lv_obj_set_hidden(ext->cont_listening, true); + lv_obj_set_hidden(ext->cont_listening_middle, true); lv_obj_set_hidden(ext->cont_thinking, true); lv_obj_set_hidden(ext->cont_timeout, false); lv_obj_set_hidden(ext->cont_list, true); @@ -866,11 +973,12 @@ void mmi_aigc_thinking_screen_clean(void) { AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + mmi_aigc_chat_websocket_close(); + lv_aigc_ext_t * ext = (lv_aigc_ext_t *)mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); if(NULL == ext) return ; - mmi_aigc_send_trans_stop_msg(NULL, 0); if(NULL != ext->thinking_task_p) { lv_task_del(ext->thinking_task_p); @@ -882,26 +990,14 @@ void mmi_aigc_thinking_screen_clean(void) static void mmi_aigc_thinking_screen_task_cb(lv_task_t * task) { - s_aigc_thinking_counter++; - AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: thinking_counter=%d\n", __FUNCTION__, __LINE__, s_aigc_thinking_counter); + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - switch(s_aigc_thinking_counter) - { - case 1: - mmi_aigc_send_trans_stop_msg(NULL, 0); - break; - - case 60: - mmi_aigc_timeout_screen_display(); - break; - - default: - break; - } + mmi_aigc_timeout_screen_display(); } void mmi_aigc_listening_remain_data_send(void) { +#if 0 lv_aigc_ext_t * ext = (lv_aigc_ext_t *)mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); if(NULL == ext) { @@ -936,6 +1032,7 @@ EXIT: ext->record_size = 0; s_aigc_recording_sent_size = 0; +#endif } void mmi_aigc_thinking_screen_display(void) @@ -948,21 +1045,25 @@ void mmi_aigc_thinking_screen_display(void) s_aigc_ui_state = MMI_AIGC_UI_STATE_THINKING; - // websocket - mmi_aigc_tts_websocket_app_start(); + //mmi_aigc_listening_remain_data_send(); - mmi_aigc_listening_remain_data_send(); - s_aigc_thinking_counter = 0; if(NULL != ext->thinking_task_p) { lv_task_del(ext->thinking_task_p); ext->thinking_task_p = NULL; } - ext->thinking_task_p = lv_task_create(mmi_aigc_thinking_screen_task_cb, 1000, LV_TASK_PRIO_HIGH, NULL); + ext->thinking_task_p = lv_task_create(mmi_aigc_thinking_screen_task_cb, 60 * 1000, LV_TASK_PRIO_HIGH, NULL); + lv_task_once(ext->thinking_task_p); // ui lv_obj_t * cont = ext->cont_thinking; + if(NULL != ext->gif_thinking) + { + gif_close(ext->gif_thinking); + ext->gif_thinking = NULL; + } + lv_obj_clean(cont); //label lv_obj_t * label_state = lv_label_create(cont, NULL); @@ -971,20 +1072,13 @@ void mmi_aigc_thinking_screen_display(void) lv_label_set_align(label_state, LV_LABEL_ALIGN_CENTER); lv_obj_align(label_state, NULL, LV_ALIGN_IN_TOP_MID, 0, 20); - //lv_obj_t * img = lv_img_create(cont, NULL); - //lv_img_set_src(img, ICON_AIGC_THINKING); - //lv_obj_set_click(img, false); - //lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -10); - if(NULL == ext->gif_thinking) + ext->gif_thinking = gif_open(cont, ANIM_AIGC_THINKING, 0); + if(NULL == ext->gif_thinking) { - ext->gif_thinking = gif_open(cont, ANIM_AIGC_THINKING, 0); - if(NULL == ext->gif_thinking) - { - AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__); - } - lv_obj_set_style_local_bg_color(ext->gif_thinking->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); - lv_obj_align(ext->gif_thinking->container, NULL, LV_ALIGN_CENTER, 0, -10); + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__); } + lv_obj_set_style_local_bg_color(ext->gif_thinking->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_align(ext->gif_thinking->container, NULL, LV_ALIGN_CENTER, 0, -10); lv_obj_t * imgbtn = lv_imgbtn_create(cont, NULL); lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_AIGC_RECORD_BUTTON_PRESSED); @@ -1004,16 +1098,105 @@ void mmi_aigc_thinking_screen_display(void) lv_obj_set_hidden(ext->cont_default, true); lv_obj_set_hidden(ext->cont_listening, true); + lv_obj_set_hidden(ext->cont_listening_middle, true); lv_obj_set_hidden(ext->cont_thinking, false); lv_obj_set_hidden(ext->cont_timeout, true); lv_obj_set_hidden(ext->cont_list, true); } +void mmi_aigc_listening_middle_screen_display(void) +{ + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_aigc_ext_t * ext = (lv_aigc_ext_t *)mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); + if(NULL == ext) + return ; + + s_aigc_ui_state = MMI_AIGC_UI_STATE_LISTENING_MIDDLE; + + // ui + lv_obj_t * cont = ext->cont_listening_middle; + if(NULL != ext->gif_listening) + { + gif_close(ext->gif_listening); + ext->gif_listening = NULL; + } + lv_obj_clean(cont); + + + lv_obj_t * list_page = lv_page_create(cont, NULL); + lv_obj_set_size(list_page, lv_obj_get_width(cont), lv_obj_get_height(cont) / 2); + lv_page_set_scrollbar_mode(list_page, LV_SCROLLBAR_MODE_OFF); + lv_obj_set_style_local_bg_opa(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, LV_OPA_0); + lv_obj_set_style_local_border_opa(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, LV_OPA_0); + lv_obj_set_style_local_outline_width(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, 0); + lv_obj_align(list_page, NULL, LV_ALIGN_IN_TOP_MID, 0, 20); + + lv_page_set_scrl_layout(list_page, LV_LAYOUT_OFF); + lv_page_set_scrollable_fit2(list_page, LV_FIT_NONE, LV_FIT_TIGHT); + + lv_obj_t * scrl = lv_page_get_scrollable(list_page); + ancient_scrl_signal = lv_obj_get_signal_cb(scrl); + lv_obj_set_signal_cb(scrl, mmi_aigc_list_scrl_signal); + lv_watch_obj_add_element(list_page); + lv_watch_obj_add_element(scrl); + + + mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[0]); + char * file_buf = t_aigc_item_info->text_data_ptr; + + lv_obj_t * obj = lv_cont_create(list_page, NULL); + lv_obj_set_size(obj, LV_HOR_RES - 20, 50); + lv_cont_set_fit4(obj, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_TIGHT); + //lv_cont_set_layout(obj, LV_LAYOUT_COLUMN_LEFT); + lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(ext->style_cont_self)); + lv_obj_align(obj, NULL, LV_ALIGN_IN_TOP_MID, 0, 20); + + lv_obj_t * label_text = lv_label_create(obj, NULL); + lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(ext->style_label_len_self)); + lv_label_set_align(label_text, LV_LABEL_ALIGN_CENTER); + lv_label_set_long_mode(label_text, LV_LABEL_LONG_BREAK); + lv_obj_set_width(label_text, lv_obj_get_width(obj) - 20); + lv_label_set_text(label_text, file_buf); + lv_obj_align(label_text, NULL, LV_ALIGN_IN_LEFT_MID, 10, 0); + + lv_obj_set_adv_hittest(obj, false); + lv_page_focus(list_page, obj, 0); + lv_page_glue_obj(obj, true); + lv_watch_obj_add_element(obj); + + + ext->gif_listening = gif_open(cont, ANIM_AIGC_LISTENING, 0); + if(NULL == ext->gif_listening) + { + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__); + } + lv_obj_set_style_local_bg_color(ext->gif_listening->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_align(ext->gif_listening->container, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -LV_VER_RES / 4); + + //label + //lv_obj_t * label_state = lv_label_create(cont, NULL); + //lv_obj_add_style(label_state, LV_LABEL_PART_MAIN, &lv_watch_font20); + //lv_label_set_text_id(label_state, WATCH_TEXT_ID_AIGC_LISTENING); + //lv_label_set_align(label_state, LV_LABEL_ALIGN_CENTER); + //lv_obj_align(label_state, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -20); + + + lv_obj_set_hidden(ext->cont_default, true); + lv_obj_set_hidden(ext->cont_listening, true); + lv_obj_set_hidden(ext->cont_listening_middle, false); + lv_obj_set_hidden(ext->cont_thinking, true); + lv_obj_set_hidden(ext->cont_timeout, true); + lv_obj_set_hidden(ext->cont_list, true); +} + bool mmi_aigc_listening_stop(bool is_cancel) { uint32_t duration_ms = 0; uint32_t size = 0; + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + Hal_Record_Buffer_Stop_Req(&size, &duration_ms); Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI); @@ -1151,17 +1334,21 @@ void mmi_aigc_listening_screen_display(void) s_aigc_ui_state = MMI_AIGC_UI_STATE_LISTENING; - Hal_NFFS_File_Play_End(); - Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI); + s_aigc_trans_text_end = false; + + // wb + mmi_aigc_tts_websocket_close(); + mmi_aigc_trans_websocket_open(); - // websocket - mmi_aigc_tts_websocket_app_stop(); - // res mmi_aigc_msg_data_clean(); mmi_aigc_tts_audio_ll_clean(); mmi_aigc_send_trans_start_msg(NULL, 0); + // + Hal_NFFS_File_Play_End(); + Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI); + if(NULL != ext->record_buffer) { lv_mem_free(ext->record_buffer); @@ -1170,10 +1357,14 @@ void mmi_aigc_listening_screen_display(void) ext->record_buffer = (uint8_t *)lv_mem_alloc(MMI_AIGC_DATA_RECORD_SIZE_MAX); if(NULL != ext->record_buffer) { + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + _lv_memset_00(ext->record_buffer, MMI_AIGC_DATA_RECORD_SIZE_MAX); if(MMI_AIGC_TTS_AUDIO_PRI == Hal_Audio_Manage_Start_Req(MMI_AIGC_TTS_AUDIO_PRI, mmi_aigc_listening_audio_ctrl_callback)) { + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + s_aigc_recording_sent_size = 0; Hal_Record_Buffer_With_Format_Req(ext->record_buffer, MMI_AIGC_DATA_RECORD_SIZE_MAX, @@ -1185,6 +1376,12 @@ void mmi_aigc_listening_screen_display(void) // ui lv_obj_t * cont = ext->cont_listening; + if(NULL != ext->gif_listening) + { + gif_close(ext->gif_listening); + ext->gif_listening = NULL; + } + lv_obj_clean(cont); //label lv_obj_t * label_state = lv_label_create(cont, NULL); @@ -1193,37 +1390,31 @@ void mmi_aigc_listening_screen_display(void) lv_label_set_align(label_state, LV_LABEL_ALIGN_CENTER); lv_obj_align(label_state, cont, LV_ALIGN_IN_TOP_MID, 0, 20); - //lv_obj_t * img = lv_img_create(cont, NULL); - //lv_img_set_src(img, ICON_AIGC_DEFAULT); - //lv_obj_set_click(img, false); - //lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -10); - if(NULL == ext->gif_listening) + ext->gif_listening = gif_open(cont, ANIM_AIGC_LISTENING, 0); + if(NULL == ext->gif_listening) { - ext->gif_listening = gif_open(cont, ANIM_AIGC_LISTENING, 0); - if(NULL == ext->gif_listening) - { - AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__); - } - lv_obj_set_style_local_bg_color(ext->gif_listening->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); - lv_obj_align(ext->gif_listening->container, NULL, LV_ALIGN_CENTER, 0, -10); + AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__); } - - lv_obj_t * imgbtn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_AIGC_RECORD_BUTTON_PRESSED); - lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_AIGC_RECORD_BUTTON_PRESSED); - lv_obj_set_event_cb(imgbtn, mmi_aigc_record_button_event_cb); - lv_obj_add_protect(imgbtn, LV_PROTECT_PRESS_LOST); - lv_watch_obj_add_element(imgbtn); - lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20); - - lv_obj_t * imgbtn_label = lv_label_create(imgbtn, NULL); - lv_obj_add_style(imgbtn_label, LV_LABEL_PART_MAIN, &lv_watch_font26); - lv_label_set_align(imgbtn_label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text_id(imgbtn_label, WATCH_TEXT_ID_AIGC_TALK_FINISH); - lv_obj_align(imgbtn_label, NULL, LV_ALIGN_CENTER, 0, 0); + lv_obj_set_style_local_bg_color(ext->gif_listening->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_align(ext->gif_listening->container, NULL, LV_ALIGN_CENTER, 0, 0); + + //lv_obj_t * imgbtn = lv_imgbtn_create(cont, NULL); + //lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_AIGC_RECORD_BUTTON_PRESSED); + //lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_AIGC_RECORD_BUTTON_PRESSED); + //lv_obj_set_event_cb(imgbtn, mmi_aigc_record_button_event_cb); + //lv_obj_add_protect(imgbtn, LV_PROTECT_PRESS_LOST); + //lv_watch_obj_add_element(imgbtn); + //lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20); + + //lv_obj_t * imgbtn_label = lv_label_create(imgbtn, NULL); + //lv_obj_add_style(imgbtn_label, LV_LABEL_PART_MAIN, &lv_watch_font26); + //lv_label_set_align(imgbtn_label, LV_LABEL_ALIGN_CENTER); + //lv_label_set_text_id(imgbtn_label, WATCH_TEXT_ID_AIGC_TALK_FINISH); + //lv_obj_align(imgbtn_label, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_hidden(ext->cont_default, true); lv_obj_set_hidden(ext->cont_listening, false); + lv_obj_set_hidden(ext->cont_listening_middle, true); lv_obj_set_hidden(ext->cont_thinking, true); lv_obj_set_hidden(ext->cont_timeout, true); lv_obj_set_hidden(ext->cont_list, true); @@ -1256,10 +1447,10 @@ static void mmi_aigc_record_button_event_cb(lv_obj_t * obj, lv_event_t e) mmi_aigc_main_screen_clean(); break; - case MMI_AIGC_UI_STATE_LISTENING: - mmi_aigc_listening_stop(false); - mmi_aigc_thinking_screen_display(); - break; + //case MMI_AIGC_UI_STATE_LISTENING: + //mmi_aigc_listening_stop(false); + //mmi_aigc_thinking_screen_display(); + //break; case MMI_AIGC_UI_STATE_THINKING: mmi_aigc_thinking_screen_clean(); @@ -1278,48 +1469,14 @@ static void mmi_aigc_record_button_event_cb(lv_obj_t * obj, lv_event_t e) } } -void mmi_aigc_voice_item_reset_play_state(lv_aigc_list_ext_t * list_page_ext) -{ - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - -#if 0 - if(NULL == list_page_ext || NULL == list_page_ext->voice_playing_anim.var) - { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - return; - } - - uint8_t msg_from = list_page_ext->voice_playing_msg_from; - - lv_anim_del(list_page_ext->voice_playing_anim.var, NULL); - lv_img_set_src(list_page_ext->voice_playing_anim.var, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3)); - list_page_ext->voice_playing_anim.var = NULL; -#endif -} - -void mmi_aigc_list_msg_item_style_reset(lv_aigc_ext_t * ext) -{ - if(NULL == ext || NULL == ext->list) - return; - - lv_aigc_list_ext_t * list_page_ext = lv_obj_get_ext_attr(ext->list); - if(NULL == list_page_ext) - return; - - lv_style_reset(&(list_page_ext->style_cont_self)); - lv_style_reset(&(list_page_ext->style_cont_other)); - //lv_style_reset(&(list_page_ext->style_label_time)); - lv_style_reset(&(list_page_ext->style_label_len_self)); - lv_style_reset(&(list_page_ext->style_label_len_other)); -} - lv_obj_t * mmi_aigc_list_msg_item_add(lv_obj_t * list_page, mmi_aigc_msg_item_info_t * msg_item, char * time_str, uint8_t i) { AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); lv_obj_t * obj = NULL; //lv_wechat_msg_list_item_ext_t * list_item_ext = NULL; - lv_aigc_list_ext_t * list_page_ext = lv_obj_get_ext_attr(list_page); + //lv_aigc_list_ext_t * list_page_ext = lv_obj_get_ext_attr(list_page); + lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN); lv_obj_t * scrl = lv_page_get_scrl(list_page); lv_obj_t * last_obj = lv_obj_get_child(scrl, NULL); lv_coord_t obj_y = 0; @@ -1346,11 +1503,11 @@ lv_obj_t * mmi_aigc_list_msg_item_add(lv_obj_t * list_page, mmi_aigc_msg_item_in lv_obj_set_size(obj, LV_HOR_RES * 2 / 3, 50); //lv_obj_set_size(obj, 153, 53); // same with voice item lv_cont_set_fit4(obj, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_TIGHT); //lv_cont_set_layout(obj, LV_LAYOUT_COLUMN_LEFT); - lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(list_page_ext->style_cont_self)); + lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(ext->style_cont_self)); lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_RIGHT, -10, obj_y); lv_obj_t * label_text = lv_label_create(obj, NULL); - lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(list_page_ext->style_label_len_self)); + lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(ext->style_label_len_self)); lv_label_set_align(label_text, LV_LABEL_ALIGN_CENTER); lv_label_set_long_mode(label_text, LV_LABEL_LONG_BREAK); lv_obj_set_width(label_text, lv_obj_get_width(obj) - 20); @@ -1366,11 +1523,11 @@ lv_obj_t * mmi_aigc_list_msg_item_add(lv_obj_t * list_page, mmi_aigc_msg_item_in lv_obj_set_size(obj, LV_HOR_RES * 2 / 3, 50); //lv_obj_set_size(obj, 153, 53); // same with voice item lv_cont_set_fit4(obj, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_TIGHT); //lv_cont_set_layout(obj, LV_LAYOUT_COLUMN_LEFT); - lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(list_page_ext->style_cont_other)); + lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(ext->style_cont_other)); lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_LEFT, 10, obj_y); lv_obj_t * label_text = lv_label_create(obj, NULL); - lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(list_page_ext->style_label_len_other)); + lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(ext->style_label_len_other)); lv_label_set_align(label_text, LV_LABEL_ALIGN_CENTER); lv_label_set_long_mode(label_text, LV_LABEL_LONG_BREAK); lv_obj_set_width(label_text, lv_obj_get_width(obj) - 20); @@ -1388,7 +1545,7 @@ lv_obj_t * mmi_aigc_list_msg_item_add(lv_obj_t * list_page, mmi_aigc_msg_item_in return obj; } -lv_res_t mmi_aigc_list_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param) +static lv_res_t mmi_aigc_list_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param) { lv_res_t res; @@ -1439,34 +1596,6 @@ lv_obj_t * mmi_aigc_list_create(lv_obj_t * obj) lv_watch_obj_add_element(list_page); lv_watch_obj_add_element(scrl); - //lv_style_init(&(list_page_ext->style_label_time)); - //lv_style_copy(&(list_page_ext->style_label_time), &lv_watch_font20); - //lv_style_set_text_color(&(list_page_ext->style_label_time), LV_STATE_DEFAULT, lv_color_make(20, 187, 242)); - - lv_style_init(&(list_page_ext->style_label_len_other)); - lv_style_copy(&(list_page_ext->style_label_len_other), &lv_watch_font20); - lv_style_set_text_color(&(list_page_ext->style_label_len_other), LV_STATE_DEFAULT, LV_COLOR_WHITE); - - lv_style_init(&(list_page_ext->style_label_len_self)); - lv_style_copy(&(list_page_ext->style_label_len_self), &lv_watch_font20); - lv_style_set_text_color(&(list_page_ext->style_label_len_self), LV_STATE_DEFAULT, LV_COLOR_WHITE); - - lv_style_init(&(list_page_ext->style_cont_self)); - lv_style_set_bg_color(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, LV_COLOR_MAKE(79, 195, 76)); // LV_COLOR_MAKE(175, 242, 89)); - lv_style_set_radius(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 15); // 30 - lv_style_set_pad_top(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 10); // 8 - lv_style_set_pad_bottom(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 10); // 8 - lv_style_set_pad_left(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8 - lv_style_set_pad_right(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8 - - lv_style_init(&(list_page_ext->style_cont_other)); - lv_style_set_bg_color(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, LV_COLOR_MAKE(25, 25, 25)); // LV_COLOR_MAKE(0xE2, 0xBD, 0xFF)); - lv_style_set_radius(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 15); - lv_style_set_pad_top(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 10); - lv_style_set_pad_bottom(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 10); - lv_style_set_pad_left(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 5); - lv_style_set_pad_right(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 5); - //_lv_memset_00(&(list_page_ext->voice_playing_anim), sizeof(lv_anim_t)); //list_page_ext->voice_playing_msg_from = 0; list_page_ext->pressing = false; @@ -1529,6 +1658,7 @@ void mmi_aigc_list_screen_display(void) lv_obj_set_hidden(ext->cont_default, true); lv_obj_set_hidden(ext->cont_listening, true); + lv_obj_set_hidden(ext->cont_listening_middle, true); lv_obj_set_hidden(ext->cont_thinking, true); lv_obj_set_hidden(ext->cont_timeout, true); lv_obj_set_hidden(ext->cont_list, false); @@ -1546,6 +1676,7 @@ static void mmi_aigc_default_screen_display(void) // ui lv_obj_t * cont = ext->cont_default; + lv_obj_clean(cont); lv_obj_t * label_state = lv_label_create(cont, NULL); lv_obj_add_style(label_state, LV_LABEL_PART_MAIN, &lv_watch_font20); @@ -1574,6 +1705,7 @@ static void mmi_aigc_default_screen_display(void) lv_obj_set_hidden(ext->cont_default, false); lv_obj_set_hidden(ext->cont_listening, true); + lv_obj_set_hidden(ext->cont_listening_middle, true); lv_obj_set_hidden(ext->cont_thinking, true); lv_obj_set_hidden(ext->cont_timeout, true); lv_obj_set_hidden(ext->cont_list, true); @@ -1636,7 +1768,6 @@ void mmi_aigc_main_screen_refresh(void) return; mmi_aigc_list_set_slide_enable(&ext->old_ext, true); - mmi_aigc_list_msg_item_style_reset(ext); if(NULL != ext->thinking_task_p) { @@ -1709,10 +1840,6 @@ lv_obj_t * mmi_aigc_main_create(lv_obj_t * activity_obj) return obj; } - // websocket - mmi_aigc_trans_websocket_app_start(); - mmi_aigc_chat_websocket_app_start(); - // data task mmi_aigc_data_task_create(); watch_set_suspend_enable(false, ACT_ID_AIGC_MAIN, 0); @@ -1733,6 +1860,14 @@ lv_obj_t * mmi_aigc_main_create(lv_obj_t * activity_obj) lv_watch_obj_add_element(cont_listening); ext->cont_listening = cont_listening; + // cont_listening middle + lv_obj_t * cont_listening_middle = lv_cont_create(obj, NULL); + lv_obj_set_size(cont_listening_middle, lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_obj_align(cont_listening_middle, NULL, LV_ALIGN_CENTER, 0, 0); + lv_obj_set_style_local_bg_color(cont_listening_middle, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_watch_obj_add_element(cont_listening_middle); + ext->cont_listening_middle = cont_listening_middle; + // cont_thinking lv_obj_t * cont_thinking = lv_cont_create(obj, NULL); lv_obj_set_size(cont_thinking, lv_obj_get_width(obj), lv_obj_get_height(obj)); @@ -1757,6 +1892,9 @@ lv_obj_t * mmi_aigc_main_create(lv_obj_t * activity_obj) lv_watch_obj_add_element(cont_list); ext->cont_list = cont_list; + // style + mmi_aigc_lv_style_set(); + mmi_aigc_default_screen_display(); return obj; diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h index b7ee5afa..29c47e86 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h @@ -94,11 +94,11 @@ typedef struct { //lv_anim_t voice_playing_anim; //uint8_t voice_playing_msg_from; // 0-slef; 1-other bool pressing; - lv_style_t style_cont_self; - lv_style_t style_cont_other; + //lv_style_t style_cont_self; + //lv_style_t style_cont_other; //lv_style_t style_label_time; - lv_style_t style_label_len_other; - lv_style_t style_label_len_self; + //lv_style_t style_label_len_other; + //lv_style_t style_label_len_self; } lv_aigc_list_ext_t; typedef struct @@ -108,11 +108,18 @@ typedef struct //TIMER_ID delete_timer_id; lv_obj_t * cont_default; lv_obj_t * cont_listening; + lv_obj_t * cont_listening_middle; lv_obj_t * cont_thinking; lv_obj_t * cont_timeout; lv_obj_t * cont_list; lv_obj_t * list; // chat list + lv_style_t style_cont_self; + lv_style_t style_cont_other; + //lv_style_t style_label_time; + lv_style_t style_label_len_other; + lv_style_t style_label_len_self; + MCI_EVNET_T event; uint8_t * record_buffer; uint32_t record_size; @@ -128,6 +135,7 @@ typedef enum MMI_AIGC_UI_STATE_NONE, MMI_AIGC_UI_STATE_OPEN_FAIL, MMI_AIGC_UI_STATE_LISTENING, + MMI_AIGC_UI_STATE_LISTENING_MIDDLE, MMI_AIGC_UI_STATE_THINKING, MMI_AIGC_UI_STATE_CONNECT_TIMEOUT, MMI_AIGC_UI_STATE_LIST, @@ -141,7 +149,7 @@ void mmi_ui_msg_update_aigc_recv_chat_text_stop(void); char * mmi_aigc_trans_result_text_get(uint32_t * data_len); -bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len); +bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len, bool is_end); bool mmi_aigc_chat_result_text_store(char * data_buff, uint32_t data_len); void mmi_aigc_create_event_cb(lv_obj_t * btn, lv_event_t e);