gengxin
author@CHENG <2393524978@qq.com>
Thu, 4 Jul 2024 08:16:18 +0000 (16:16 +0800)
committer@CHENG <2393524978@qq.com>
Thu, 4 Jul 2024 08:16:18 +0000 (16:16 +0800)
16 files changed:
sdk/MS_MMI_Main/source/mmi_app/app/mainmenu/c/mmi_mainmenu_item_func.c
sdk/MS_MMI_Main/source/mmi_app/app/mainmenu/h/mmi_mainmenu_item_func.h
sdk/MS_MMI_Main/source/mmi_app/app/mmi_aigc/c/mmi_aigc_data.c
sdk/MS_MMI_Main/source/mmi_app/app/mmi_aigc/c/mmi_aigc_ui.c
sdk/MS_MMI_Main/source/mmi_app/app/mmi_aigc/h/mmi_aigc_export.h
sdk/MS_MMI_Main/source/mmi_app/app/mmi_aigc/h/mmi_aigc_internal.h
sdk/MS_MMI_Main/source/mmi_app/common/h/common_mdu_def.h
sdk/MS_MMI_Main/source/mmi_app/common/h/mmi_id.def
sdk/MS_MMI_Main/source/mmi_app/common/h/mmi_id.h
sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/ANIM_AIGC_LISTENING.gif [new file with mode: 0644]
sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/ANIM_AIGC_THINKING.gif [new file with mode: 0644]
sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_CANCEL_BUTTON.png [new file with mode: 0644]
sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_DEFAULT.png [new file with mode: 0644]
sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_PROMPT.png [new file with mode: 0644]
sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_RECORD_BUTTON_DEFAULT.png [new file with mode: 0644]
sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_RECORD_BUTTON_PRESSED.png [new file with mode: 0644]

index 7e3c03d..9c459f9 100644 (file)
 #ifdef ALIIOT_SUPPORT
 #include "mmialiiot_export.h"
 #endif 
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
+#include "mmi_aigc_export.h"
+#endif
+
 /**--------------------------------------------------------------------------*
  **                         MACRO DEFINITION                                 *
  **--------------------------------------------------------------------------*/
@@ -780,6 +784,17 @@ PUBLIC void MMIMAINMENU_StartDial (uint32 param1, uint32 param2)
 
 PUBLIC void MMIMAINMENU_StartMessage (uint32 param1, uint32 param2)
 {
+
+
+       
+// just for debug
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
+       MMIAPIAIGC_EnterWin();
+       return;
+#endif
+
+
+
     MMIAPISMS_OpenMessageMainMenuWin();
 
     return;
@@ -997,6 +1012,15 @@ PUBLIC void MMIMAINMENU_StartPhoneSetting (uint32 param1, uint32 param2)
     return;
 }
 
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
+PUBLIC void MMIMAINMENU_StartAIGC(uint32 param1, uint32 param2)
+{
+    MMIAPIAIGC_EnterWin();
+
+    return;
+}
+#endif
+
 #if defined(MMI_INDIAN_SOS_SUPPORT) && defined(MMI_PDA_SUPPORT)
 PUBLIC void MMIMAINMENU_StartSOSSetting (uint32 param1, uint32 param2)
 {
index 8858910..e0f7b8c 100644 (file)
@@ -292,6 +292,10 @@ PUBLIC void MMIMAINMENU_StartCallSettings (uint32 param1, uint32 param2);
 
 PUBLIC void MMIMAINMENU_StartPhoneSetting (uint32 param1, uint32 param2);
 
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
+PUBLIC void MMIMAINMENU_StartAIGC(uint32 param1, uint32 param2);
+#endif
+
 #if defined(MMI_INDIAN_SOS_SUPPORT) && defined(MMI_PDA_SUPPORT)
 PUBLIC void MMIMAINMENU_StartSOSSetting (uint32 param1, uint32 param2);
 #endif
index 632aa81..fa51dfa 100644 (file)
 #include "guiblock.h"
 #include "mmiidle_export.h"
 #include "mmi_id.h"
-#include "mmienvset_export.h"
 #include "mmieng_export.h"
 #include "mmipub.h"
 #include "mmi_aigc_internal.h"
 
 
-#if 0 // def MMI_CUSTOM_AIGC_SUPPORT
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
 
+static BOOLEAN s_aigc_trans_ws_open_flag = FALSE;
+static BOOLEAN s_aigc_chat_ws_open_flag = FALSE;
+static BOOLEAN s_aigc_tts_ws_open_flag = FALSE;
 
+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;
+       }
+}
+
+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;
+       }
+}
+
+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;
+       }
+}
+
+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;
+       }
+}
+
+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;
+       }
+}
+
+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;
+       }
+}
+
+
+
+
+#endif
+
+#if 0
 #ifdef MULTI_SIM_GSM_CTA_SUPPORT
 extern BOOLEAN g_is_sim_only_check_status[MMI_DUAL_SYS_MAX];
 #endif
index ed6d51c..c6165fb 100644 (file)
 
 
 
-/**--------------------------------------------------------------------------*
-**                         Include Files                                    *
-**--------------------------------------------------------------------------*/
 #include "mmi_app_phone_trc.h"
 #include "window_parse.h"
-#include "guilistbox.h"
-#include "guilabel.h"
 #include "mmk_timer.h"
 #include "mmi_image.h"
 #include "mmi_common.h"
-#include "mmi_nv.h"
-#include "mmidisplay_data.h"
-#include "mmiset_export.h"
-#include "mmiidle_export.h"
 #include "mmi_default.h"
-#include "mmi_menutable.h"
-#include "guisoftkey.h"
-#include "guimsgbox.h"
 #include "mmi_appmsg.h"
-#include "mmimp3_export.h"
-#include "mmi_textfun.h"
 #include "mmipub.h"
 #include "mmi_anim.h"
 #include "mn_api.h"
-#include "guiedit.h"
-#include "guirichtext.h"
-#include "mmiset_text.h"
 #include "guictrl_api.h"
 #include "mmi_aigc_internal.h"
 
 
-#if 0 // def MMI_CUSTOM_AIGC_SUPPORT
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
 
+static MMI_AIGC_UI_STATE_E s_aigc_ui_state = MMI_AIGC_UI_STATE_NONE;
 
-LOCAL MMI_OPERATE_PIN_T   s_operate_pin2_blocked_info;
 
-
-
-// the window for input pin,startup
-WINDOW_TABLE( PHONE_PIN_INPUTING_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandlePinInputWindow ),    
-    WIN_ID( PHONE_PIN_INPUT_WIN_ID ),
-    WIN_HIDE_STATUS,
-    WIN_TITLE(TXT_NULL),
-    CREATE_LABEL_CTRL(GUILABEL_ALIGN_MIDDLE,MMIPHONE_PIN_REMAIN_LABEL_CTRL_ID),
-    CREATE_EDIT_PASSWORD_CTRL(MMI_PIN_MAX_LENGTH,PHONE_PIN_EDITBOX_CTRL_ID),
-    WIN_STYLE(WS_DISABLE_HWICON | WS_DISABLE_RETURN_WIN),
-#ifdef MMI_PDA_SUPPORT
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, TXT_NULL),                        
-#else
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, STXT_RETURN),                        
-#endif
-    END_WIN
-};
-
-// the window for input puk,startup
-WINDOW_TABLE( PHONE_PUK_INPUTING_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandlePukInputWindow ),    
-    WIN_ID( PHONE_PUK_INPUT_WIN_ID ),
-    WIN_HIDE_STATUS,
-    WIN_TITLE(TXT_NULL),
-    CREATE_LABEL_CTRL(GUILABEL_ALIGN_MIDDLE,MMIPHONE_PUK_REMAIN_LABEL_CTRL_ID),
-    CREATE_EDIT_PASSWORD_CTRL(MMI_PIN_MAX_LENGTH,PHONE_PUK_EDITBOX_CTRL_ID),
-    WIN_STYLE(WS_DISABLE_HWICON | WS_DISABLE_RETURN_WIN),
-#ifdef MMI_PDA_SUPPORT
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, TXT_NULL),                        
-#else
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, STXT_RETURN),                        
-#endif
-    END_WIN
-};
-
-// the window for input new pin,startup
-WINDOW_TABLE( PHONE_NEW_PIN_INPUTING_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandleNewPinInputWindow ),    
-    WIN_ID( PHONE_NEW_PIN_INPUT_WIN_ID ),
-    WIN_HIDE_STATUS,
-    WIN_TITLE( TXT_ENTER_NEW_PIN ),
-    CREATE_EDIT_PASSWORD_CTRL(MMI_PIN_MAX_LENGTH,PHONE_NEW_PIN_EDITBOX_CTRL_ID),
-    WIN_STYLE(WS_DISABLE_HWICON | WS_DISABLE_RETURN_WIN),
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, STXT_RETURN),                    
-    END_WIN
-};
-
-// the window for input new pin again,startup
-WINDOW_TABLE( PHONE_NEW_PIN_AGAIN_INPUTING_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandleNewPinAgainInputWindow ),    
-    WIN_ID( PHONE_NEW_PIN_AGAIN_INPUT_WIN_ID ),
-    WIN_HIDE_STATUS,
-    WIN_TITLE( TXT_ENTER_PIN_CNF ),
-    CREATE_EDIT_PASSWORD_CTRL(MMI_PIN_MAX_LENGTH,PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID),
-    WIN_STYLE(WS_DISABLE_HWICON | WS_DISABLE_RETURN_WIN),
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, STXT_RETURN),
-    END_WIN
-};
-
-// the window for input pin
-WINDOW_TABLE( MMI_PIN_INPUTING_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandlePinInputExceptPhone ),    
-    WIN_ID( MMI_PIN_INPUTING_WIN_ID ),
-    WIN_HIDE_STATUS,
-    WIN_TITLE(TXT_NULL),
-    CREATE_LABEL_CTRL(GUILABEL_ALIGN_MIDDLE,MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID),
-    CREATE_EDIT_PASSWORD_CTRL(MMI_PIN_MAX_LENGTH,MMI_PIN_INPUT_EDITBOX_CTRL_ID),
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, STXT_RETURN),
-    END_WIN
-};
-
-// the window for input puk
-WINDOW_TABLE( MMI_PUK_INPUTING_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandlePukInputExceptPhone ),    
-    WIN_ID( MMI_PUK_INPUTING_WIN_ID ),
-    WIN_HIDE_STATUS,
-    WIN_TITLE(TXT_NULL),
-    CREATE_LABEL_CTRL(GUILABEL_ALIGN_MIDDLE,MMIPHONE_PUK_INPUT_REMAIN_LABEL_CTRL_ID),
-    CREATE_EDIT_PASSWORD_CTRL(MMI_PIN_MAX_LENGTH,MMI_PUK_INPUT_EDITBOX_CTRL_ID),
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, STXT_RETURN),
-    END_WIN
-};
-
-// the window for input new pin
-WINDOW_TABLE( MMI_NEW_PIN_INPUTING_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandleNewPinInputExceptPhone ),    
-    WIN_ID( MMI_NEW_PIN_INPUTING_WIN_ID ),
-    WIN_TITLE(TXT_NULL),
-    CREATE_EDIT_PASSWORD_CTRL(MMI_PIN_MAX_LENGTH,MMI_NEW_PIN_INPUT_EDITBOX_CTRL_ID),
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, STXT_RETURN),
-    END_WIN
-};
-
-// the window for input new pin again
-WINDOW_TABLE( MMI_NEW_PIN_AGAIN_INPUTING_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandleNewPinAgainInputExceptPhone ),    
-    WIN_ID( MMI_NEW_PIN_AGAIN_INPUTING_WIN_ID ),
-    WIN_TITLE(TXT_NULL),
-    CREATE_EDIT_PASSWORD_CTRL(MMI_PIN_MAX_LENGTH,MMI_NEW_PIN_AGAIN_INPUT_EDITBOX_CTRL_ID),
-    WIN_SOFTKEY(TXT_COMMON_OK, TXT_NULL, STXT_RETURN), 
-    END_WIN
-};
-
-// the window for display imei when no sim or sim error
-WINDOW_TABLE( MMIPHONE_DISPLAY_IMEI_WIN_TAB ) = 
-{
-    //CLEAR_LCD,
-    //WIN_PRIO( WIN_ONE_LEVEL ),
-    WIN_FUNC( (uint32)HandleDisplayImei ),
-    WIN_ID( MMIPHONE_DISPLAY_IMEI_WIN_ID ),
-    WIN_HIDE_STATUS,    
-    WIN_BACKGROUND_ID(IMAGE_COMMON_BG),
-    WIN_TITLE(TXT_PHONE_IMEI),
-    WIN_SOFTKEY(TXT_NULL, TXT_NULL, STXT_RETURN),
-    CREATE_RICHTEXT_CTRL(MMIPHONE_DISPLAY_IMEI_CTRL_ID),
-    END_WIN
-};
-
-
-/*****************************************************************************/
-//     Description : ´¦ÀíPIN INPUTµÄÏûÏ¢
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePinInputWindow (
-                                         MMI_WIN_ID_T     win_id,      // PIN INPUTING´°¿ÚµÄID
-                                         MMI_MESSAGE_ID_E      msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                         DPARAM                        param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                         )
-{
-    MMI_RESULT_E result = MMI_RESULT_TRUE;
-    MMI_STRING_T pin_value = {0};   
-    GUI_BOTH_RECT_T edit_both_rect = {0};
-    BOOLEAN is_input_emergency_call = FALSE;
-    uint16 emergency_call_len = 0;
-    
-    switch (msg_id)
-    {
-    case MSG_OPEN_WINDOW:
-        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
-#ifdef MAINLCD_SIZE_128X64 //added by taiping.lai 2011/01/03
-        {
-            GUI_BOTH_RECT_T both_rect = GetPasswordLabelBothRect();
-                         GUI_RECT_T title_rect = GetPasswordTitleRect();
-
-                    GUIWIN_SetTitleRect(win_id, title_rect);   
-            GUIAPICTRL_SetBothRect(MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID, &both_rect);
-               }
-#else                                  
-        {
-            GUI_BOTH_RECT_T both_rect = MMITHEME_GetWinClientBothRect(win_id);
-
-            both_rect.h_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN;
-            both_rect.v_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN;
-            both_rect.h_rect.bottom = both_rect.h_rect.top + MMIPHONE_PIN_PUK_REMAIN_HEIGHT;
-            both_rect.v_rect.bottom = both_rect.v_rect.top + MMIPHONE_PIN_PUK_REMAIN_HEIGHT;
-
-            GUIAPICTRL_SetBothRect(MMIPHONE_PIN_REMAIN_LABEL_CTRL_ID, &both_rect);
-        }
-#endif
-        IGUICTRL_SetState(MMK_GetCtrlPtr(MMIPHONE_PIN_REMAIN_LABEL_CTRL_ID), GUICTRL_STATE_DISABLE_ACTIVE, TRUE);
-
-        edit_both_rect = GetPinPukEditRect(win_id, TRUE);
-        GUIAPICTRL_SetBothRect(PHONE_PIN_EDITBOX_CTRL_ID, &edit_both_rect);
-
-        GUIEDIT_SetPasswordStyle(PHONE_PIN_EDITBOX_CTRL_ID,GUIEDIT_PASSWORD_STYLE_DIGITAL_PIN);
-        
-        SetPinInputWinText(win_id);
-
-        GUIEDIT_SetSoftkey(PHONE_PIN_EDITBOX_CTRL_ID, 0, MMI_PIN_MIN_LENGTH,TXT_NULL,TXT_COMMON_OK, PinPukInputWinSoftkey);
-
-#if defined(MMI_PDA_SUPPORT) && defined(MMIPUBWIN_PDASTYLE_SUPPORT)
-        // PUBEDIT¸ºÔðsoftkeyµÄÏÔʾ£¬PDAÏÂÐèÒª½ûÖ¹ÓÒ¼ü
-        GUIEDIT_SetSoftkey(PHONE_PIN_EDITBOX_CTRL_ID, 2, 0,TXT_NULL,TXT_NULL, PNULL);
-#endif
-
-        MMK_SetWinDisplayStyleState(win_id, WS_DISABLE_RETURN_WIN, TRUE);
-        
-        MMK_SetAtvCtrl(win_id,PHONE_PIN_EDITBOX_CTRL_ID);
-        break;
-
-#if 0        
-#ifdef MMI_PDA_SUPPORT
-    case MSG_NOTIFY_EDITBOX_UPDATE_STRNUM:
-        {
-            MMI_STRING_T str_info = {0};
-
-            GUIEDIT_GetString(PHONE_PIN_EDITBOX_CTRL_ID, &str_info);   
-        
-            is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&str_info, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
-            if ((is_input_emergency_call) &&
-                (str_info.wstr_len == emergency_call_len))
-            {    
-                MMIPUB_SetWinSoftkey(win_id, TXT_SOS, TXT_NULL,TRUE);
-            }
-            else
-            {
-                MMIPUB_SetWinSoftkey(win_id, TXT_COMMON_OK, TXT_NULL,TRUE);
-            }
-        }
-        break;
-#endif
-#endif
-
-    case MSG_FULL_PAINT:
-#ifndef MMI_PDA_SUPPORT
-        SetPasswordBackground(win_id,PHONE_PIN_EDITBOX_CTRL_ID,TRUE);
-#endif
-#ifndef SUBLCD_SIZE_NONE       
-        //Ë¢ÐÂСÆÁµÄÏÔʾ£¬ÊäÈëPINÂë
-        MMISUB_IsPermitUpdate(TRUE);
-        MMISUB_SetSubLcdDisplay(FALSE,TRUE,SUB_CONTENT_PIN,PNULL);
-#endif
-        break;
-    //for bug1319040
-    case MSG_NOTIFY_EDITBOX_UPDATE_STRNUM:
-        SetPinInputWinText(win_id);
-        MMK_UpdateScreen();
-        break;
-
-    case MSG_GET_FOCUS:
-        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
-        break;
-        
-#ifdef TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_PENOK:
-#endif //TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_MIDSK:
-    case MSG_CTL_OK:
-    case MSG_APP_OK:
-    case MSG_APP_WEB:
-    case MSG_APP_GREEN:
-    case MSG_APP_CALL2:
-    case MSG_APP_CALL3:
-    case MSG_APP_CALL4:
-        // get the value about PIN
-        GUIEDIT_GetString(PHONE_PIN_EDITBOX_CTRL_ID,&pin_value);
-
-        is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&pin_value, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
-
-        if ((is_input_emergency_call) &&
-            (pin_value.wstr_len == emergency_call_len))
-        {
-            MakeEmergencyCall(&pin_value);
-        }
-        else if (PIN_LEN_IS_IN_RANGE(pin_value.wstr_len) 
-                     && MSG_APP_GREEN != msg_id 
-                     && MSG_APP_CALL2 != msg_id
-                     && MSG_APP_CALL3 != msg_id
-                     && MSG_APP_CALL4 != msg_id)
-        {
-            HandlePinInputingString(&pin_value);
-        }
-        break;
-        
-    case MSG_APP_CANCEL:
-    case MSG_CTL_CANCEL:
-    case MSG_APP_RED://red and flip²»ÔÊÐí·µ»Ø
-        MMIPUB_OpenAlertWinByTextId(PNULL,TXT_PLS_INPUT_PIN,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePinAlertWindow);
-        break;
-
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.        
-    case MSG_APP_FLIP:
-        MMIDEFAULT_HandleFlipKey(FALSE);
-        break;
-#endif
-        
-    case MSG_CLOSE_WINDOW:
-        MMIDEFAULT_AllowOpenKeylocWin(TRUE);
-#ifndef SUBLCD_SIZE_NONE
-        //Ë¢ÐÂСÆÁµÄÏÔʾ£¬¹Ø±ÕÊäÈëPINÂë
-        MMISUB_SetSubLcdDisplay(FALSE,FALSE,SUB_CONTENT_PIN,PNULL);
-#endif
-        break;
-        
-    default:
-        result = MMI_RESULT_FALSE;
-        break;
-    }
-    
-    return (result);
-}
-
-/*****************************************************************************/
-//     Description : PINÊäÈë½çÃæ£¬alert½çÃæ\²»ÔÊÐíred key,flip·µ»Ø
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePinAlertWindow(
-                                        MMI_WIN_ID_T     win_id,       // ´°¿ÚµÄID
-                                        MMI_MESSAGE_ID_E       msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                        DPARAM                         param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                        )
-{
-    MMI_RESULT_E result = MMI_RESULT_TRUE;
-    
-    switch (msg_id)
-    {
-    case MSG_APP_RED://red and flip²»ÔÊÐí·µ»Ø
-    case MSG_APP_CANCEL:
-        MMK_CloseWin(win_id);
-        break;
-
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.
-    case MSG_APP_FLIP:
-        MMK_CloseWin(win_id);
-        MMIDEFAULT_HandleFlipKey(FALSE);
-        break;
-#endif        
-
-    default:
-        result = MMIPUB_HandleAlertWinMsg(win_id,msg_id,param);
-        break;
-    }
-    
-    return (result);
-}
-
-/*****************************************************************************/
-//     Description : GetPinPukEditRect
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL GUI_BOTH_RECT_T GetPinPukEditRect(MMI_WIN_ID_T win_id, BOOLEAN is_need_label)
+LOCAL void mmi_aigc_win_background(void)
 {
-#ifdef MAINLCD_SIZE_128X64 //added by taiping.lai 2011/01/03
-       return GetPasswordEditBothRect(is_need_label);
-#else
-    GUI_BOTH_RECT_T both_rect = MMITHEME_GetWinClientBothRect(win_id);
+       //GUI_LCD_DEV_INFO lcd_dev_info = {GUI_MAIN_LCD_ID, GUI_BLOCK_MAIN};
+       GUI_LCD_DEV_INFO *dev_info_ptr = MMITHEME_GetDefaultLcdDev();
+       GUI_RECT_T full_rect = MMITHEME_GetFullScreenRect();
+       GUI_COLOR_T background_color = MMI_BLACK_COLOR;
 
-    both_rect.h_rect.left = both_rect.v_rect.left = MMI_PASSWORD_EDIT_LEFT;
-    if (is_need_label)
-    {
-        both_rect.h_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN + MMIPHONE_PIN_PUK_REMAIN_HEIGHT + MMI_PASSWORD_EDIT_TOP_MARGIN;
-        both_rect.v_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN + MMIPHONE_PIN_PUK_REMAIN_HEIGHT + MMI_PASSWORD_EDIT_TOP_MARGIN;
-    }
-    else
-    {
-        both_rect.h_rect.top += MMI_PASSWORD_EDIT_TOP_MARGIN;
-        both_rect.v_rect.top += MMI_PASSWORD_EDIT_TOP_MARGIN;
-    }
-
-    both_rect.h_rect.bottom = both_rect.h_rect.top + MMI_PASSWORD_EDIT_HEIGHT;
-    both_rect.h_rect.right = both_rect.h_rect.right - MMI_PASSWORD_EDIT_LEFT;
-    both_rect.v_rect.bottom = both_rect.v_rect.top + MMI_PASSWORD_EDIT_HEIGHT;
-    both_rect.v_rect.right = both_rect.v_rect.right - MMI_PASSWORD_EDIT_LEFT;
-
-    return both_rect;
-#endif 
-               
+       GUI_FillRect(dev_info_ptr, full_rect, background_color);
 }
 
-#ifndef MMI_PDA_SUPPORT
-/*****************************************************************************/
-//     Description : ÉèÖÃÊäÈëÃÜÂë´°¿ÚµÄ±³¾°É«£¬image ºÍtitle
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL void SetPasswordBackground(
-                                 MMI_WIN_ID_T    win_id, //´°¿ÚµÄID
-                                 MMI_CTRL_ID_T   ctrl_id,   //the id of control
-                                 BOOLEAN is_need_label
-                                 )
-{
-    GUI_LCD_DEV_INFO lcd_dev_info = {GUI_MAIN_LCD_ID, GUI_BLOCK_MAIN};
-    GUI_RECT_T bg_rect = MMITHEME_GetClientRect();
-    GUI_BOTH_RECT_T  both_client_rect = MMITHEME_GetWinClientBothRect(win_id);
-#ifdef MONOCHROME_LCD_SUPPORT 
-#else
-    GUI_POINT_T dis_point = {0};
-    uint16 icon_width = 0;
-    uint16 icon_height = 0;    
-    //GUI_BOTH_RECT_T  both_rect = {0};
-    GUI_BOTH_RECT_T edit_both_rect = {0};
-#endif 
-    
-    lcd_dev_info.lcd_id = GUI_MAIN_LCD_ID;
-    lcd_dev_info.block_id = GUI_BLOCK_MAIN;
-    
-    if(MMITHEME_IsMainScreenLandscape())
-    {
-        bg_rect = both_client_rect.h_rect;
-    }
-    else
-    {
-        bg_rect = both_client_rect.v_rect;
-    }
-
-#ifdef MONOCHROME_LCD_SUPPORT 
-    LCD_FillRect(&lcd_dev_info, bg_rect, MMI_WHITE_COLOR);
-#else
-    LCD_FillRect(&lcd_dev_info, bg_rect, MMI_BLACK_COLOR);
+/*
     GUIRES_GetImgWidthHeight(&icon_width, &icon_height, IMAGE_NUMBERINPUT_PIN, win_id);
 
     //ÉèÖÃimage id
@@ -469,8 +42,6 @@ LOCAL void SetPasswordBackground(
             IMAGE_COMMON_BG,
             &lcd_dev_info);
 
-    edit_both_rect = GetPinPukEditRect(win_id, is_need_label);
-
     dis_point.x = (bg_rect.right + bg_rect.left - icon_width) / 2;
     dis_point.y = (bg_rect.bottom + edit_both_rect.v_rect.bottom - icon_height) / 2;
     GUIRES_DisplayImg(&dis_point,
@@ -481,764 +52,310 @@ LOCAL void SetPasswordBackground(
             &lcd_dev_info);
     
     IMG_EnableTransparentColor(FALSE); 
-#endif 
-}
-#endif
 
-/*****************************************************************************/
-//     Description : ´¦ÀíÊäÈëµÄPINÂë
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL void HandlePinInputingString(
-                                   MMI_STRING_T *pin_ptr
-                                   )
-{
-    MN_BLOCK_T      pin_value = {0};
-    MMI_STRING_T    wait_text = {0};
-    
-    if(PNULL == pin_ptr)
-    {
-        //SCI_TRACE_LOW:"HandlePinInputingString pin_ptr is NULL"
-        SCI_TRACE_ID(TRACE_TOOL_CONVERT,MMIPHONE_WINTAB_1209_112_2_18_2_45_30_230,(uint8*)"");
-        return;
-    }
-    
-    SCI_MEMSET(&pin_value, 0, sizeof(MN_BLOCK_T));
-    
-    //ת»»PINµÄ½á¹¹
-    pin_value.blocklen = pin_ptr->wstr_len;
 
-    MMI_WSTRNTOSTR((uint8 *)pin_value.blockbuf,
-        MN_MAX_BLOCK_LEN,
-        pin_ptr->wstr_ptr,
-        pin_value.blocklen,
-        pin_value.blocklen);
-        
-#ifdef MMI_SIM_LOCK_SUPPORT
-    SCI_MEMCPY(&g_pin_value[MMIAPIPHONE_GetCurResponsePinSimID()],
-                         &pin_value,
-                         sizeof(MN_BLOCK_T)); //¼Ç¼ÐµÄpin1Âë
-#endif
-
-    //response pin before receive signal of sim is ready
-    MNPHONE_ResponsePinEx(MMIAPIPHONE_GetCurResponsePinSimID(), MNSIM_PIN1, FALSE, &pin_value, PNULL);
-    
-    MMK_CloseWin(PHONE_PIN_WAIT_WIN_ID);
-    
-    //½øÈëµÈ´ý½çÃæ
-    MMI_GetLabelTextByLang(TXT_COMMON_WAITING, &wait_text);
-    MMIPUB_OpenWaitWin(1,&wait_text,PNULL,PNULL,PHONE_PIN_WAIT_WIN_ID,IMAGE_NULL,
-        ANIM_PUBWIN_WAIT,WIN_ONE_LEVEL,MMIPUB_SOFTKEY_NONE,HandlePukWaitingWindow);
-
-    MMK_SetWinDisplayStyleState(PHONE_PIN_WAIT_WIN_ID, WS_DISABLE_RETURN_WIN, TRUE);
-}
-
-/*****************************************************************************/
-//     Description : ´¦ÀíPUK INPUTINGµÄÏûÏ¢
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePukInputWindow (
-                                         MMI_WIN_ID_T     win_id,      // PUK INPUTING´°¿ÚµÄID
-                                         MMI_MESSAGE_ID_E      msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                         DPARAM                        param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                         )
-{
-    //wchar                star_value[]= {'*'};
-    //wchar                hash_value[]= {'#'};
-    MMI_RESULT_E    result = MMI_RESULT_TRUE;
-    MMI_STRING_T    puk_value = {0};
-    MMI_STRING_T    pin_puk_remain_str = {0};
-    BOOLEAN is_input_emergency_call = FALSE;
-    uint16 emergency_call_len = 0;
-    GUI_BOTH_RECT_T edit_both_rect = {0};
-    
-#ifndef MMI_MULTI_SIM_SYS_SINGLE
-    uint32 i = MN_DUAL_SYS_1;
-    MMI_TEXT_ID_T text_id[] =
-        {
-            TXT_ENTER_SIM1_PUK,
-            TXT_ENTER_SIM2_PUK,
-            #if defined(MMI_MULTI_SIM_SYS_TRI)||defined(MMI_MULTI_SIM_SYS_QUAD)
-            TXT_ENTER_SIM3_PUK,
-            #endif
-            #if defined(MMI_MULTI_SIM_SYS_QUAD)
-            TXT_ENTER_SIM4_PUK,
-            #endif
-        };
-#endif
-
-    switch (msg_id)
-    {
-    case MSG_OPEN_WINDOW:
-        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
-#ifdef MAINLCD_SIZE_128X64 //added by taiping.lai 2011/01/03
-        {
-            GUI_BOTH_RECT_T both_rect = GetPasswordLabelBothRect();
-                         GUI_RECT_T title_rect = GetPasswordTitleRect();
-
-                    GUIWIN_SetTitleRect(win_id, title_rect);   
-            GUIAPICTRL_SetBothRect(MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID, &both_rect);
-               }
-#else                  
-        {
-            GUI_BOTH_RECT_T both_rect = MMITHEME_GetWinClientBothRect(win_id);
-
-            both_rect.h_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN;
-            both_rect.v_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN;
-            both_rect.h_rect.bottom = both_rect.h_rect.top + MMIPHONE_PIN_PUK_REMAIN_HEIGHT;
-            both_rect.v_rect.bottom = both_rect.v_rect.top + MMIPHONE_PIN_PUK_REMAIN_HEIGHT;
-
-            GUIAPICTRL_SetBothRect(MMIPHONE_PUK_REMAIN_LABEL_CTRL_ID, &both_rect);
-        }
-#endif
-        IGUICTRL_SetState(MMK_GetCtrlPtr(MMIPHONE_PUK_REMAIN_LABEL_CTRL_ID), GUICTRL_STATE_DISABLE_ACTIVE, TRUE);
-
-        edit_both_rect = GetPinPukEditRect(win_id, TRUE);
-        GUIAPICTRL_SetBothRect(PHONE_PUK_EDITBOX_CTRL_ID, &edit_both_rect);
-
-        GUIEDIT_SetPasswordStyle(PHONE_PUK_EDITBOX_CTRL_ID,GUIEDIT_PASSWORD_STYLE_DIGITAL_PIN);
-
-        //set left softkey
-        GUIEDIT_SetSoftkey(PHONE_PUK_EDITBOX_CTRL_ID, 0, MMI_PIN_MIN_LENGTH,TXT_NULL,TXT_COMMON_OK, PinPukInputWinSoftkey);
-
-#if defined(MMI_PDA_SUPPORT) && defined(MMIPUBWIN_PDASTYLE_SUPPORT)
-        // PUBEDIT¸ºÔðsoftkeyµÄÏÔʾ£¬PDAÏÂÐèÒª½ûÖ¹ÓÒ¼ü
-        GUIEDIT_SetSoftkey(PHONE_PUK_EDITBOX_CTRL_ID, 2, 0,TXT_NULL,TXT_NULL, PNULL);
-#endif
-
-        SCI_MEMSET(&pin_puk_remain_str, 0x00, sizeof(MMI_STRING_T));
-        MMIPHONE_GetPinPukRemainStr(MMIAPIPHONE_GetCurResponsePinSimID(), &pin_puk_remain_str, MNSIM_PIN1, TRUE);
-
-        if (PNULL != pin_puk_remain_str.wstr_ptr)
-        {
-            GUILABEL_SetText(MMIPHONE_PUK_REMAIN_LABEL_CTRL_ID,&pin_puk_remain_str,FALSE);
-
-            SCI_FREE(pin_puk_remain_str.wstr_ptr);
-            pin_puk_remain_str.wstr_ptr = PNULL;
-        }
-
-#ifdef MMI_MULTI_SIM_SYS_SINGLE
-        GUIWIN_SetTitleTextId(win_id,TXT_ENTER_PUK,FALSE);
-#else
-        i = MMIAPIPHONE_GetCurResponsePinSimID();
-
-        if( i < MMI_DUAL_SYS_MAX)
-        {
-            GUIWIN_SetTitleTextId(win_id,text_id[i],FALSE);
-        }
-        else
-        {
-            GUIWIN_SetTitleTextId(win_id,TXT_ENTER_PUK,FALSE);
-        }
-#endif
-
-        MMK_SetWinDisplayStyleState(win_id, WS_DISABLE_RETURN_WIN, TRUE);
-
-        MMK_SetAtvCtrl(win_id,PHONE_PUK_EDITBOX_CTRL_ID);
-        break;
-
-#ifdef MMI_PDA_SUPPORT
-    case MSG_NOTIFY_EDITBOX_UPDATE_STRNUM:
-        {
-            MMI_STRING_T str_info = {0};
-            GUIEDIT_GetString(PHONE_PUK_EDITBOX_CTRL_ID, &str_info);   
-        
-            is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&str_info, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
-            if ((is_input_emergency_call) &&
-                (str_info.wstr_len == emergency_call_len))
-            {    
-                MMIPUB_SetWinSoftkey(win_id, TXT_SOS, TXT_NULL,TRUE);
-            }
-            else
-            {
-                MMIPUB_SetWinSoftkey(win_id, TXT_COMMON_OK, TXT_NULL,TRUE);
-            }
-        }
-        break;
-#endif
-        
-    case MSG_FULL_PAINT:
-#ifndef MMI_PDA_SUPPORT
-        SetPasswordBackground(win_id,PHONE_PUK_EDITBOX_CTRL_ID, TRUE);
-#endif
-#ifndef SUBLCD_SIZE_NONE
-        //Ë¢ÐÂСÆÁµÄÏÔʾ£¬ÊäÈëPUKÂë
-        MMISUB_IsPermitUpdate(TRUE);
-        MMISUB_SetSubLcdDisplay(FALSE,TRUE,SUB_CONTENT_PUK,PNULL);
-#endif
-        break;
-
-#ifdef TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_PENOK:
-#endif //TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_MIDSK:
-    case MSG_CTL_OK:
-    case MSG_APP_OK:
-    case MSG_APP_WEB:
-    case MSG_APP_GREEN:
-    case MSG_APP_CALL2:
-     case MSG_APP_CALL3:
-      case MSG_APP_CALL4:
-        {
-            uint8 temp_str[MN_MAX_BLOCK_LEN] = {0};
-            
-            // get the value about PUK
-            GUIEDIT_GetString(PHONE_PUK_EDITBOX_CTRL_ID,&puk_value);
+       GUISTR_DrawTextToLCDInRect
 
-            MMI_WSTRNTOSTR( (uint8 *)temp_str, MN_MAX_BLOCK_LEN, puk_value.wstr_ptr, puk_value.wstr_len, puk_value.wstr_len );
+       MMI_GetLabelTextByLang(TXT_PIN_PUK_REMAIN, &remain_str);
 
-            is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&puk_value, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
+       MMK_UpdateScreen();
+*/
 
-            if ((is_input_emergency_call) &&
-                (puk_value.wstr_len == emergency_call_len))
-            {
-                MakeEmergencyCall(&puk_value);
-            }
-            else if (MSG_APP_GREEN != msg_id && MSG_APP_CALL2 != msg_id
-                        && MSG_APP_CALL3!= msg_id && MSG_APP_CALL3 != msg_id )
-            {
-                if(0 == strncmp( (char*)temp_str,"**05*",5))//input **05*PUK*NEW_PIN*NEW_PIN#
-                {
-                    if (PUK_MODIFY_PIN_LEN_IS_IN_RANGE(puk_value.wstr_len))
-                    {
-                        HandlePukModifyPin( temp_str );
-                    }
-                }
-                else
-                {
-                    if (PIN_LEN_IS_IN_RANGE(puk_value.wstr_len))
-                    {
-                        MMK_CreatePubEditWin((uint32*)PHONE_NEW_PIN_INPUTING_WIN_TAB,PNULL);
-                    }
-                } 
-            }
-        }
-        break;
-        
-    case MSG_APP_CANCEL:
-    case MSG_CTL_CANCEL:
-    case MSG_APP_RED://pukÊäÈë½çÃæ²»ÔÊÐí·µ»Ø//bug 1246219 
-        MMIPUB_OpenAlertWinByTextId(PNULL,TXT_PLS_INPUT_PUK,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePinAlertWindow);
-        break;
 
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.
-    case MSG_APP_FLIP:
-        MMIDEFAULT_HandleFlipKey(FALSE);
-        break;
-#endif
 
-    case MSG_GET_FOCUS:
-        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
-        break;
-#ifndef SUBLCD_SIZE_NONE
-    case MSG_LOSE_FOCUS:
-        //Ë¢ÐÂСÆÁµÄÏÔʾ£¬¹Ø±ÕÊäÈëPUKÂë
-        MMISUB_SetSubLcdDisplay(FALSE,FALSE,SUB_CONTENT_PUK,PNULL);
-        break;
-#endif
-    case MSG_CLOSE_WINDOW:
-        MMIDEFAULT_AllowOpenKeylocWin(TRUE);
-#ifndef SUBLCD_SIZE_NONE
-        //Ë¢ÐÂСÆÁµÄÏÔʾ£¬¹Ø±ÕÊäÈëPUKÂë
-        MMISUB_SetSubLcdDisplay(FALSE,FALSE,SUB_CONTENT_PUK,PNULL);
-#endif
-        break;
-        
-    default:
-        result = MMI_RESULT_FALSE;
-        break;
-    }
-    
-    return (result);
-}
-
-/*****************************************************************************/
-//     Description : ´¦ÀíÊäÈëµÄPuk modify pinÂë
-//  **05*PUK*NEW_PIN*NEW_PIN# to change pin   **052*PUK2*NEW_PIN2*NEW_PIN2# to change pin2
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL void HandlePukModifyPin(
-                              uint8 *puk_pin_str
-                              )
+LOCAL void mmi_aigc_main_win_open(MMI_WIN_ID_T win_id)
 {
-    MMI_PIN_INFO_T  pin_info = {0};
-    MMI_STRING_T    wait_text = {0};
-    
-    SCI_MEMSET(((void*)&pin_info), 0, sizeof(MMI_PIN_INFO_T));
-    
-    //parse input str
-    if (PARS_RESULT_SUCCESS == MMIAPIPARSE_ParsePukAndPinStr((char *)puk_pin_str,&pin_info))
-    {
-        //response pin before receive signal of sim is ready
-        MNPHONE_ResponsePinEx(MMIAPIPHONE_GetCurResponsePinSimID(), MNSIM_PIN1, TRUE, &(pin_info.pin_value), &(pin_info.ext_pin_value));
-        
-        MMK_CloseWin(PHONE_PIN_WAIT_WIN_ID);
-        
-        //½øÈëµÈ´ý½çÃæ
-        MMI_GetLabelTextByLang(TXT_COMMON_WAITING, &wait_text);
-        MMIPUB_OpenWaitWin(1,&wait_text,PNULL,PNULL,PHONE_PIN_WAIT_WIN_ID,IMAGE_NULL,
-            ANIM_PUBWIN_WAIT,WIN_ONE_LEVEL,MMIPUB_SOFTKEY_NONE,HandlePukWaitingWindow);
-
-        MMK_SetWinDisplayStyleState(PHONE_PIN_WAIT_WIN_ID, WS_DISABLE_RETURN_WIN, TRUE);
-    }
-    else
-    {
-        MMIPUB_OpenAlertWinByTextId(PNULL,TXT_INPUT_ERROR,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePukAlertWindow);
-        
-        //Çå¿Õpassword
-        GUIEDIT_ClearAllStr(PHONE_PUK_EDITBOX_CTRL_ID);
-    }
-}
-
-/*****************************************************************************/
-//     Description : PUKÊäÈë½çÃæ´ò¿ªÊ±£¬µÈ´ý½çÃæ²»ÔÊÐí·µ»Ø£¬pin£¬new pin½çÃæ²»ÔÊÐíred key,flip·µ»Ø
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePukWaitingWindow (
-                                           MMI_WIN_ID_T      win_id,   // ´°¿ÚµÄID
-                                           MMI_MESSAGE_ID_E     msg_id,        // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                           DPARAM                      param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                           )
-{
-    MMI_RESULT_E result = MMI_RESULT_TRUE;
-    
-    switch (msg_id)
-    {
-    case MSG_APP_RED://pukÊäÈë½çÃæ´æÔÚ,wait window²»ÔÊÐí·µ»Ø
-        break;
-
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.        
-    case MSG_APP_FLIP:
-        MMIDEFAULT_HandleFlipKey(FALSE);
-        break;
-#endif
-
-    case MSG_OPEN_WINDOW:
-        MMK_SetWinDisplayStyleState(win_id, WS_DISABLE_RETURN_WIN, TRUE);
-        result = MMIPUB_HandleWaitWinMsg(win_id, msg_id, param);
-        break;
-        
-    default:
-        result = MMIPUB_HandleWaitWinMsg(win_id, msg_id, param);
-        break;
-    }
-    
-    return (result);
-}
-
-/*****************************************************************************/
-//     Description : PUKÊäÈë½çÃæ´ò¿ªÊ±£¬alert½çÃæ.²»ÔÊÐíred key,flip·µ»Ø(Æô¶¯¹ý³Ì)
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePukAlertWindow(
-                                        MMI_WIN_ID_T     win_id,       // ´°¿ÚµÄID
-                                        MMI_MESSAGE_ID_E       msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                        DPARAM                         param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                        )
-{
-    MMI_RESULT_E result = MMI_RESULT_TRUE;
-    
-    switch (msg_id)
-    {
-    case MSG_APP_RED://puk½çÃæ´æÔÚ£¬red and flip²»ÔÊÐí·µ»Ø
-        if (MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
-        {
-            MMK_CloseWin(win_id);
-        }
-        else
-        {
-            result = MMI_RESULT_FALSE;
-        }
-        break;
-
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.
-    case MSG_APP_FLIP:
-        if (MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
-        {
-            MMIDEFAULT_HandleFlipKey(FALSE);
-            MMK_CloseWin(win_id);
-        }
-        else
-        {
-            result = MMI_RESULT_FALSE;
-        }
-        break;
-#endif        
-        
-    default:
-        result = MMIPUB_HandleAlertWinMsg(win_id,msg_id,param);
-        break;
-    }
-    
-    return (result);
-}
-
-/*****************************************************************************/
-//     Description : ´¦Àínew pin INPUTINGµÄÏûÏ¢
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL MMI_RESULT_E HandleNewPinInputWindow (
-                                            MMI_WIN_ID_T     win_id,   // new pin input´°¿ÚµÄID
-                                            MMI_MESSAGE_ID_E   msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                            DPARAM                     param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                            )
-{
-    MMI_RESULT_E    result = MMI_RESULT_TRUE;
-    MMI_STRING_T   puk_value = {0};
-    MMI_STRING_T   new_pin_value = {0};
-    MMI_STRING_T   new_pin_again_value = {0};
-    GUI_BOTH_RECT_T edit_both_rect = {0};
-    BOOLEAN is_input_emergency_call = FALSE;
-    uint16 emergency_call_len = 0;
-    
-    switch (msg_id)
-    {
-    case MSG_OPEN_WINDOW:
-        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
-#ifdef MAINLCD_SIZE_128X64 //added by taiping.lai 2011/01/03
-               {
-                   GUI_RECT_T title_rect = GetPasswordTitleRect();
-
-              GUIWIN_SetTitleRect(win_id, title_rect); 
+       GUI_LCD_DEV_INFO *dev_info_ptr = MMITHEME_GetDefaultLcdDev();
+       GUI_RECT_T full_rect = MMITHEME_GetFullScreenRect();
+       GUI_FONT_ALL_T font_all = {SONG_FONT_30, MMI_WHITE_COLOR};
+       GUI_BG_T ctrl_bg = {0};
+       GUI_RECT_T ctrl_rect = {0};
+       MMI_STRING_T display_text = {0};
+       char text_ptr[64] = {0};
+       wchar text_dis[64] = {0};
+    uint16 image_width = 0;
+    uint16 image_height = 0;
+       GUI_POINT_T display_point = {0};
+       MMI_IMAGE_ID_T image_id = IMAGE_NULL;
        
-               }
-        edit_both_rect = GetPinPukEditRect(win_id, FALSE);
-#else
-        edit_both_rect = GetPinPukEditRect(win_id, FALSE);
-#endif 
-        GUIAPICTRL_SetBothRect(PHONE_NEW_PIN_EDITBOX_CTRL_ID, &edit_both_rect);
-
-        GUIEDIT_SetPasswordStyle(PHONE_NEW_PIN_EDITBOX_CTRL_ID,GUIEDIT_PASSWORD_STYLE_DIGITAL_PIN);
-
-        //set left softkey
-        GUIEDIT_SetSoftkey(PHONE_NEW_PIN_EDITBOX_CTRL_ID, 0, MMI_PIN_MIN_LENGTH,TXT_NULL,TXT_COMMON_OK, PinPukInputWinSoftkey);
-        MMK_SetAtvCtrl(win_id,PHONE_NEW_PIN_EDITBOX_CTRL_ID);
-        break;
+       MMIDEFAULT_AllowTurnOffBackLight(FALSE);
 
-#if 0
-#ifdef MMI_PDA_SUPPORT
-    case MSG_NOTIFY_EDITBOX_UPDATE_STRNUM:
-        {
-            MMI_STRING_T str_info = {0};
-            GUIEDIT_GetString(PHONE_NEW_PIN_EDITBOX_CTRL_ID, &str_info);       
-        
-            is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&str_info, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
-            if ((is_input_emergency_call) &&
-                (str_info.wstr_len == emergency_call_len))
-            {    
-                MMIPUB_SetWinSoftkey(win_id, TXT_SOS, STXT_RETURN,TRUE);
-            }
-            else
-            {
-                MMIPUB_SetWinSoftkey(win_id, TXT_COMMON_OK, STXT_RETURN,TRUE);
-            }
-        }
-        break;
-#endif
-#endif
-        
-#ifndef MMI_PDA_SUPPORT
-    case MSG_FULL_PAINT:
-        SetPasswordBackground(win_id,PHONE_NEW_PIN_EDITBOX_CTRL_ID,FALSE);
-        break;
-#endif
-
-#ifdef TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_PENOK:
-#endif //TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_MIDSK:
-    case MSG_CTL_OK:
-    case MSG_APP_OK:
-    case MSG_APP_WEB:
-    case MSG_APP_GREEN:
-    case MSG_APP_CALL2:
-     case MSG_APP_CALL3:
-     case MSG_APP_CALL4:   
-        // get the value about new PIN
-        GUIEDIT_GetString(PHONE_NEW_PIN_EDITBOX_CTRL_ID,&new_pin_value);
-        
-        is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&new_pin_value, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
-
-        if ((is_input_emergency_call) &&
-            (new_pin_value.wstr_len == emergency_call_len))
-        {
-            MakeEmergencyCall(&new_pin_value);
-        }
-        else if (PIN_LEN_IS_IN_RANGE(new_pin_value.wstr_len) 
-                    && MSG_APP_GREEN != msg_id 
-                    && MSG_APP_CALL2 != msg_id
-                    && MSG_APP_CALL3 != msg_id
-                    && MSG_APP_CALL4 != msg_id)
-        {
-            //open the window of input new pin again
-            MMK_CreatePubEditWin((uint32*)PHONE_NEW_PIN_AGAIN_INPUTING_WIN_TAB,PNULL);
-        }
-        break;
-        
-    case MSG_SET_NEW_PIN_AGAIN:
-        // get the value about new PIN again
-        GUIEDIT_GetString(PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID,&new_pin_again_value);
-        
-        // get the value about new PIN
-        GUIEDIT_GetString(PHONE_NEW_PIN_EDITBOX_CTRL_ID,&new_pin_value);
-        
-        //±È½ÏÁ½¸öPINÊÇ·ñÏàͬ
-        if( MMIAPICOM_StrCompare( &new_pin_value, &new_pin_again_value ) )
-        //if (MMIAPICOM_CompareTwoTeleNum( new_pin_again_value.wstr_ptr, new_pin_again_value.wstr_len, new_pin_value.wstr_ptr, new_pin_value.wstr_len))
-        {
-            // get the value about PUK
-            GUIEDIT_GetString(PHONE_PUK_EDITBOX_CTRL_ID,&puk_value);
-            
-            HandlePukAndNewPin(&puk_value,&new_pin_value);
-            
-            //close input new pin and input new pin again window
-            MMK_CloseWin(PHONE_NEW_PIN_INPUT_WIN_ID);
-            MMK_CloseWin(PHONE_NEW_PIN_AGAIN_INPUT_WIN_ID);
-        }
-        else
-        {
-            //Ìáʾ´íÎó´°¿Ú,Á½´ÎÊäÈëµÄPIN²»Ò»ÖÂ
-            #ifdef MMI_PDA_SUPPORT
-            MMIPUB_OpenAlertWinByTextId(PNULL,TXT_INPUT_CONFLICT,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePukAlertWindow);            
-            #else
-            MMIPUB_OpenAlertWinByTextId(PNULL,TXT_MSGBOX_PIN_CONFLICT,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePukAlertWindow);
-            #endif
-            //Çå¿Õpassword
-            GUIEDIT_ClearAllStr(PHONE_NEW_PIN_EDITBOX_CTRL_ID);
-            
-            //close input new pin again window
-            MMK_CloseWin(PHONE_NEW_PIN_AGAIN_INPUT_WIN_ID);
-            
-            MMK_SetAtvCtrl(win_id,PHONE_NEW_PIN_EDITBOX_CTRL_ID);
-        }
-        break;
-        
-    case MSG_CTL_CANCEL:
-    case MSG_APP_CANCEL:
-        MMK_CloseWin( win_id );
-        break;
-        
-    case MSG_APP_RED://puk½çÃæ´æÔÚ£¬red and flip²»ÔÊÐí·µ»Ø
-        if (!MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
-        {
-            result = MMI_RESULT_FALSE;
-        }
-        break;
-
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.        
-    case MSG_APP_FLIP:
-        if (!MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
-        {
-            result = MMI_RESULT_FALSE;
-        }
-        else
-        {
-            MMIDEFAULT_HandleFlipKey(FALSE);
-        }
-        break;
-#endif        
-
-    case MSG_GET_FOCUS:
-        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
-        break;
-
-    case MSG_CLOSE_WINDOW:
-        MMIDEFAULT_AllowOpenKeylocWin(TRUE);
-        break;
-        
-    default:
-        result = MMI_RESULT_FALSE;
-        break;
-    }
-    
-    return (result);
+       mmi_aigc_win_background();
+       
+       if((FALSE == MMIAPIPHONE_IsSimAvailable(MN_DUAL_SYS_1))
+               #if defined MULTI_SIM_SYS_DUAL
+               && (FALSE == MMIAPIPHONE_IsSimAvailable(MN_DUAL_SYS_2))
+               #endif
+               )
+       {
+               s_aigc_ui_state = MMI_AIGC_UI_STATE_OPEN_FAIL;
+
+               // label 0
+               ctrl_rect.left = 0;
+               ctrl_rect.right = MMI_MAINSCREEN_WIDTH;
+               ctrl_rect.top = 50;
+               ctrl_rect.bottom = ctrl_rect.top + 40;
+               GUILABEL_SetRect( MMI_AIGC_LABEL_0_CTRL_ID, &ctrl_rect, FALSE);
+               ctrl_bg.bg_type = GUI_BG_NONE;
+               //ctrl_bg.img_id = ;
+               GUILABEL_SetBg( MMI_AIGC_LABEL_0_CTRL_ID, &ctrl_bg);
+               GUILABEL_SetFont( MMI_AIGC_LABEL_0_CTRL_ID, font_all.font, font_all.color);
+               MMI_GetLabelTextByLang(TXT_AIGC_ASSITANT, &display_text);
+               GUILABEL_SetText( MMI_AIGC_LABEL_0_CTRL_ID, &display_text, FALSE);
+
+       /*
+               // image
+               image_id = IMAGE_AIGC_PROMPT;
+               GUIRES_GetImgWidthHeight(&image_width, &image_height, image_id, win_id);
+               display_point.x = (MMI_MAINSCREEN_WIDTH - image_width) / 2;
+               display_point.y = 100;
+               IMG_EnableTransparentColor(TRUE);
+               GUIRES_DisplayImg(&display_point,
+                               PNULL,
+                               PNULL,
+                               win_id,
+                               image_id,
+                               dev_info_ptr);
+               IMG_EnableTransparentColor(FALSE);
+       */
+               // label 1
+               image_id = IMAGE_AIGC_PROMPT;
+               GUIRES_GetImgWidthHeight(&image_width, &image_height, image_id, win_id);
+               ctrl_rect.top = 100;
+               ctrl_rect.bottom = ctrl_rect.top + image_height;
+               GUILABEL_SetRect( MMI_AIGC_LABEL_2_CTRL_ID, &ctrl_rect, FALSE);
+               ctrl_bg.bg_type = GUI_BG_IMG;
+               ctrl_bg.img_id = IMAGE_AIGC_PROMPT;
+               GUILABEL_SetBg( MMI_AIGC_LABEL_2_CTRL_ID, &ctrl_bg);
+               GUILABEL_SetFont( MMI_AIGC_LABEL_2_CTRL_ID, font_all.font, font_all.color);
+               MMI_GetLabelTextByLang(TXT_AIGC_OPEN_FAIL, &display_text);
+               GUILABEL_SetText( MMI_AIGC_LABEL_2_CTRL_ID, &display_text, FALSE);
+
+               // label 2
+               ctrl_rect.top = MMI_MAINSCREEN_HEIGHT/ 2;
+               ctrl_rect.bottom = ctrl_rect.top + 70;
+               GUILABEL_SetRect( MMI_AIGC_LABEL_2_CTRL_ID, &ctrl_rect, FALSE);
+               ctrl_bg.bg_type = GUI_BG_NONE;
+               //ctrl_bg.img_id = ;
+               GUILABEL_SetBg( MMI_AIGC_LABEL_2_CTRL_ID, &ctrl_bg);
+               GUILABEL_SetFont( MMI_AIGC_LABEL_2_CTRL_ID, font_all.font, font_all.color);
+               MMI_GetLabelTextByLang(TXT_AIGC_OPEN_FAIL, &display_text);
+               GUILABEL_SetText( MMI_AIGC_LABEL_2_CTRL_ID, &display_text, FALSE);
+                               
+               // label 3
+               ctrl_rect.top = 250;
+               ctrl_rect.bottom = ctrl_rect.top + 50;
+               GUILABEL_SetRect( MMI_AIGC_LABEL_3_CTRL_ID, &ctrl_rect, FALSE);
+               ctrl_bg.bg_type = GUI_BG_IMG;
+               ctrl_bg.img_id = IMAGE_AIGC_RECORD_BUTTON_PRESSED;
+               GUILABEL_SetBg( MMI_AIGC_LABEL_3_CTRL_ID, &ctrl_bg);
+               GUILABEL_SetFont( MMI_AIGC_LABEL_3_CTRL_ID, font_all.font, font_all.color);
+               MMI_GetLabelTextByLang(TXT_COMMON_OK, &display_text);
+               GUILABEL_SetText( MMI_AIGC_LABEL_3_CTRL_ID, &display_text, FALSE);
+       }
+       else
+       {
+               s_aigc_ui_state = MMI_AIGC_UI_STATE_NONE;
+
+               // label 0
+               ctrl_rect.left = 0;
+               ctrl_rect.right = MMI_MAINSCREEN_WIDTH;
+               ctrl_rect.top = 50;
+               ctrl_rect.bottom = ctrl_rect.top + 40;
+               GUILABEL_SetRect( MMI_AIGC_LABEL_0_CTRL_ID, &ctrl_rect, FALSE);
+               ctrl_bg.bg_type = GUI_BG_NONE;
+               //ctrl_bg.img_id = ;
+               GUILABEL_SetBg( MMI_AIGC_LABEL_0_CTRL_ID, &ctrl_bg);
+               GUILABEL_SetFont( MMI_AIGC_LABEL_0_CTRL_ID, font_all.font, font_all.color);
+               MMI_GetLabelTextByLang(TXT_AIGC_ASSITANT, &display_text);
+               GUILABEL_SetText( MMI_AIGC_LABEL_0_CTRL_ID, &display_text, FALSE);
+
+       /*
+               // image
+               image_id = IMAGE_AIGC_DEFAULT;
+               GUIRES_GetImgWidthHeight(&image_width, &image_height, image_id, win_id);
+               display_point.x = (MMI_MAINSCREEN_WIDTH - image_width) / 2;
+               display_point.y = (MMI_MAINSCREEN_HEIGHT- image_height) / 2 - 30;
+               IMG_EnableTransparentColor(TRUE);
+               GUIRES_DisplayImg(&display_point,
+                               PNULL,
+                               PNULL,
+                               win_id,
+                               image_id,
+                               dev_info_ptr);
+               IMG_EnableTransparentColor(FALSE);
+       */
+               // label 1
+               image_id = IMAGE_AIGC_DEFAULT;
+               GUIRES_GetImgWidthHeight(&image_width, &image_height, image_id, win_id);
+               ctrl_rect.top = (MMI_MAINSCREEN_HEIGHT- image_height) / 2 - 30;
+               ctrl_rect.bottom = ctrl_rect.top + image_height;
+               GUILABEL_SetRect( MMI_AIGC_LABEL_2_CTRL_ID, &ctrl_rect, FALSE);
+               ctrl_bg.bg_type = GUI_BG_IMG;
+               ctrl_bg.img_id = IMAGE_AIGC_PROMPT;
+               GUILABEL_SetBg( MMI_AIGC_LABEL_2_CTRL_ID, &ctrl_bg);
+               GUILABEL_SetFont( MMI_AIGC_LABEL_2_CTRL_ID, font_all.font, font_all.color);
+               MMI_GetLabelTextByLang(TXT_AIGC_OPEN_FAIL, &display_text);
+               GUILABEL_SetText( MMI_AIGC_LABEL_2_CTRL_ID, &display_text, FALSE);
+
+               // label 2
+               GUIAPICTRL_SetState(MMI_AIGC_LABEL_2_CTRL_ID, GUICTRL_STATE_INVISIBLE, TRUE);
+
+               // label 3
+               ctrl_rect.top = 250;
+               ctrl_rect.bottom = ctrl_rect.top + 50;
+               GUILABEL_SetRect( MMI_AIGC_LABEL_3_CTRL_ID, &ctrl_rect, FALSE);
+               ctrl_bg.bg_type = GUI_BG_IMG;
+               ctrl_bg.img_id = IMAGE_AIGC_RECORD_BUTTON_DEFAULT;
+               GUILABEL_SetBg( MMI_AIGC_LABEL_3_CTRL_ID, &ctrl_bg);
+               GUILABEL_SetFont( MMI_AIGC_LABEL_3_CTRL_ID, font_all.font, font_all.color);
+               MMI_GetLabelTextByLang(TXT_AIGC_CONVERSATION, &display_text);
+               GUILABEL_SetText( MMI_AIGC_LABEL_3_CTRL_ID, &display_text, FALSE);
+       }
+       
+       GUIAPICTRL_SetState(MMI_AIGC_ANIM_CTRL_ID, GUICTRL_STATE_INVISIBLE, TRUE);
 }
 
-/*****************************************************************************/
-//     Description : ´¦Àínew pin again INPUTINGµÄÏûÏ¢
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL MMI_RESULT_E HandleNewPinAgainInputWindow (
-                                                 MMI_WIN_ID_T    win_id,       // new pin input´°¿ÚµÄID
-                                                 MMI_MESSAGE_ID_E      msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                                 DPARAM                param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                                 )
+LOCAL void mmi_aigc_main_win_display(MMI_WIN_ID_T win_id)
 {
-    MMI_RESULT_E    result = MMI_RESULT_TRUE;
-    MMI_STRING_T   new_pin_again_value = {0};   
-    GUI_BOTH_RECT_T edit_both_rect = {0};
-    BOOLEAN is_input_emergency_call = FALSE;
-    uint16 emergency_call_len = 0;
-    
-    switch (msg_id)
-    {
-    case MSG_OPEN_WINDOW:
-        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
-#ifdef MAINLCD_SIZE_128X64 //added by taiping.lai 2011/01/03
-               {
-                       GUI_RECT_T title_rect = GetPasswordTitleRect();
 
-                   GUIWIN_SetTitleRect(win_id, title_rect);    
-               }
-        edit_both_rect = GetPinPukEditRect(win_id, FALSE);
-#else
-        edit_both_rect = GetPinPukEditRect(win_id, TRUE);
-#endif                         
-        GUIAPICTRL_SetBothRect(PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID, &edit_both_rect);
+}
 
-        GUIEDIT_SetPasswordStyle(PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID,GUIEDIT_PASSWORD_STYLE_DIGITAL_PIN);
+LOCAL void mmi_aigc_main_win_process(MMI_WIN_ID_T win_id)
+{
+       switch(s_aigc_ui_state)
+       {
+               case MMI_AIGC_UI_STATE_NONE:
 
-        //set left softkey
-        GUIEDIT_SetSoftkey(PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID, 0, MMI_PIN_MIN_LENGTH,TXT_NULL,TXT_COMMON_OK, PinPukInputWinSoftkey);
+                       break;
 
-        MMK_SetAtvCtrl(win_id,PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID);
-        break;
+               case MMI_AIGC_UI_STATE_OPEN_FAIL:
+                       //if(MMK_IsOpenWin(MMI_AIGC_MAIN_WIN_ID))
+                       if(MMK_IsFocusWin(MMI_AIGC_MAIN_WIN_ID))
+                       {
+                               MMK_SendMsg(MMI_AIGC_MAIN_WIN_ID, MSG_APP_CANCEL, PNULL);
+                               //MMK_PostMsg
+                       }
+                       break;
 
-#if 0
-#ifdef MMI_PDA_SUPPORT
-    case MSG_NOTIFY_EDITBOX_UPDATE_STRNUM:
-        {
-            MMI_STRING_T str_info = {0};
-            GUIEDIT_GetString(PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID, &str_info); 
-        
-            is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&str_info, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
-            if ((is_input_emergency_call) &&
-                (str_info.wstr_len == emergency_call_len))
-            {    
-                MMIPUB_SetWinSoftkey(win_id, TXT_SOS, STXT_RETURN,TRUE);
-            }
-            else
-            {
-                MMIPUB_SetWinSoftkey(win_id, TXT_COMMON_OK, STXT_RETURN,TRUE);
-            }
-        }
-        break;
-#endif
-#endif
-        
-#ifndef MMI_PDA_SUPPORT
-    case MSG_FULL_PAINT:
-        SetPasswordBackground(win_id,PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID,FALSE);
-        break;
-#endif
-        
-#ifdef TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_PENOK:
-#endif //TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_MIDSK:
-    case MSG_CTL_OK:
-    case MSG_APP_OK:
-    case MSG_APP_WEB:
-    case MSG_APP_GREEN:
-    case MSG_APP_CALL2:
-    case MSG_APP_CALL3:
-    case MSG_APP_CALL4:    
-        // get the value about new PIN again
-        GUIEDIT_GetString(PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID,&new_pin_again_value);
-        
-        is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&new_pin_again_value, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
+               case MMI_AIGC_UI_STATE_LISTENING:
 
-        if ((is_input_emergency_call) &&
-            (new_pin_again_value.wstr_len == emergency_call_len))
-        {
-            MakeEmergencyCall(&new_pin_again_value);
-        }
-        else if (PIN_LEN_IS_IN_RANGE(new_pin_again_value.wstr_len) 
-               && MSG_APP_GREEN != msg_id 
-               && MSG_APP_CALL2 != msg_id
-               && MSG_APP_CALL3 != msg_id
-               && MSG_APP_CALL4 != msg_id)
-        {
-            //send the new pin again to input new pin window
-            MMK_SendMsg(PHONE_NEW_PIN_INPUT_WIN_ID,MSG_SET_NEW_PIN_AGAIN,PNULL);
-        }
-        break;
-        
-    case MSG_CTL_CANCEL:
-    case MSG_APP_CANCEL:
-        MMK_CloseWin( win_id );
-        break;
-        
-    case MSG_APP_RED://puk½çÃæ´æÔÚ£¬red and flip²»ÔÊÐí·µ»Ø
-        if (!MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
-        {
-            result = MMI_RESULT_FALSE;
-        }
-        break;
+                       break;
 
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.        
-    case MSG_APP_FLIP:
-        if (!MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
-        {
-            result = MMI_RESULT_FALSE;
-        }
-        else
-        {
-            MMIDEFAULT_HandleFlipKey(FALSE);
-        }
-        break;
-#endif        
 
-    case MSG_GET_FOCUS:
-        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
-        break;
+       }
 
-    case MSG_CLOSE_WINDOW:
-        MMIDEFAULT_AllowOpenKeylocWin(TRUE);
-        break;
-        
-    default:
-        result = MMI_RESULT_FALSE;
-        break;
-    }
-    
+}
+
+LOCAL void mmi_aigc_main_win_close(MMI_WIN_ID_T win_id)
+{
+       mmi_aigc_trans_websocket_close();
+       mmi_aigc_chat_websocket_close();
+       mmi_aigc_tts_websocket_close();
+
+       s_aigc_ui_state = MMI_AIGC_UI_STATE_NONE;
+
+       MMIDEFAULT_AllowTurnOffBackLight(TRUE);
+}
+
+LOCAL MMI_RESULT_E mmi_aigc_main_win_handle(MMI_WIN_ID_T win_id, MMI_MESSAGE_ID_E msg_id, DPARAM param)
+{
+    MMI_RESULT_E result = MMI_RESULT_TRUE;
+
+    switch (msg_id)
+    {
+           case MSG_OPEN_WINDOW:
+               mmi_aigc_main_win_open(win_id);
+               break;
+
+           case MSG_FULL_PAINT:
+                       mmi_aigc_main_win_display(win_id);
+                       break;
+
+               case MSG_APP_MENU:
+               case MSG_APP_WEB:
+               case MSG_CTL_MIDSK:
+                       mmi_aigc_main_win_process(win_id);
+                       break;
+
+               case MSG_APP_OK:
+               case MSG_CTL_OK:
+                       break;
+
+               case MSG_APP_CANCEL:
+               case MSG_CTL_CANCEL:
+                       MMK_CloseWin(win_id);      
+                       break;
+
+           case MSG_APP_RED:
+                       MMK_CloseWin(win_id);
+               break;
+
+           case MSG_CLOSE_WINDOW:
+               mmi_aigc_main_win_close(win_id);
+               break;
+                       
+           default:
+               result = MMI_RESULT_FALSE;
+               break;
+       }
+       
     return (result);
 }
 
+WINDOW_TABLE(MMI_AIGC_MAIN_WIN_TAB) = 
+{
+    WIN_FUNC((uint32)mmi_aigc_main_win_handle),    
+    WIN_ID(MMI_AIGC_MAIN_WIN_ID),
+       //WIN_STATUSBAR,
+       WIN_HIDE_STATUS,
+    WIN_TITLE(TXT_NULL),
+    WIN_SOFTKEY(TXT_NULL, TXT_NULL, TXT_NULL),
+       //WIN_STYLE(WS_DISABLE_COMMON_BG | WS_DISABLE_RETURN_WIN),
+       CREATE_LABEL_CTRL(GUILABEL_ALIGN_MIDDLE, MMI_AIGC_LABEL_0_CTRL_ID),
+       CREATE_LABEL_CTRL(GUILABEL_ALIGN_MIDDLE, MMI_AIGC_LABEL_1_CTRL_ID),
+       CREATE_LABEL_CTRL(GUILABEL_ALIGN_MIDDLE, MMI_AIGC_LABEL_2_CTRL_ID),
+       CREATE_LABEL_CTRL(GUILABEL_ALIGN_MIDDLE, MMI_AIGC_LABEL_3_CTRL_ID),
+       CREATE_ANIM_CTRL(MMI_AIGC_ANIM_CTRL_ID, MMI_AIGC_MAIN_WIN_ID),
+       //CREATE_TEXT_CTRL(MMI_AIGC_TEXT_0_CTRL_ID),
+       //CREATE_BUTTON_CTRL(IMAGE_AIGC_RECORD_BUTTON_DEFAULT, MMI_AIGC_BUTTON_0_CTRL_ID),
+    END_WIN
+};
+
+PUBLIC void MMIAPIAIGC_EntergWin(void)
+{
+       SCI_TRACE_LOW("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       if(MMK_IsOpenWin(MMI_AIGC_MAIN_WIN_ID))
+       {
+               MMK_CloseWin(MMI_AIGC_MAIN_WIN_ID);
+       }
+       
+       MMK_CreateWin((uint32 *) MMI_AIGC_MAIN_WIN_TAB, PNULL);
+}
+
+#if 0
 /*****************************************************************************/
-//     Description : ´¦ÀíÊäÈëµÄPuk and new pinÂë
+//     Description : ´¦ÀíÊäÈëµÄPINÂë
 //     Global resource dependence : 
 //  Author: Jassmine
 //     Note:
 /*****************************************************************************/
-LOCAL void HandlePukAndNewPin(
-                              MMI_STRING_T *puk_ptr,
-                              MMI_STRING_T *pin_ptr
-                              )
+LOCAL void HandlePinInputingString(
+                                   MMI_STRING_T *pin_ptr
+                                   )
 {
-    MN_BLOCK_T  puk_value = {0};
-    MN_BLOCK_T  pin_value = {0};
+    MN_BLOCK_T      pin_value = {0};
     MMI_STRING_T    wait_text = {0};
     
-    if(PNULL == pin_ptr ||PNULL == puk_ptr)
+    if(PNULL == pin_ptr)
     {
-        //SCI_TRACE_LOW:"HandlePinInputingString pin_ptr=%d ||puk_ptr=%d"
-        SCI_TRACE_ID(TRACE_TOOL_CONVERT,MMIPHONE_WINTAB_1899_112_2_18_2_45_32_231,(uint8*)"dd", pin_ptr, puk_ptr);
+        //SCI_TRACE_LOW:"HandlePinInputingString pin_ptr is NULL"
+        SCI_TRACE_ID(TRACE_TOOL_CONVERT,MMIPHONE_WINTAB_1209_112_2_18_2_45_30_230,(uint8*)"");
         return;
     }
     
-    //ת»»PUKµÄ½á¹¹
-    puk_value.blocklen = puk_ptr->wstr_len;
-
-    MMI_WSTRNTOSTR((uint8 *)puk_value.blockbuf,
-        MN_MAX_BLOCK_LEN,
-        puk_ptr->wstr_ptr,
-        puk_value.blocklen,
-        puk_value.blocklen);
+    SCI_MEMSET(&pin_value, 0, sizeof(MN_BLOCK_T));
     
     //ת»»PINµÄ½á¹¹
     pin_value.blocklen = pin_ptr->wstr_len;
@@ -1248,9 +365,15 @@ LOCAL void HandlePukAndNewPin(
         pin_ptr->wstr_ptr,
         pin_value.blocklen,
         pin_value.blocklen);
+        
+#ifdef MMI_SIM_LOCK_SUPPORT
+    SCI_MEMCPY(&g_pin_value[MMIAPIPHONE_GetCurResponsePinSimID()],
+                         &pin_value,
+                         sizeof(MN_BLOCK_T)); //¼Ç¼ÐµÄpin1Âë
+#endif
 
     //response pin before receive signal of sim is ready
-    MNPHONE_ResponsePinEx(MMIAPIPHONE_GetCurResponsePinSimID(), MNSIM_PIN1, TRUE, &pin_value, &puk_value);
+    MNPHONE_ResponsePinEx(MMIAPIPHONE_GetCurResponsePinSimID(), MNSIM_PIN1, FALSE, &pin_value, PNULL);
     
     MMK_CloseWin(PHONE_PIN_WAIT_WIN_ID);
     
@@ -1264,128 +387,123 @@ LOCAL void HandlePukAndNewPin(
 
 
 /*****************************************************************************/
-//     Description : handle pin and puk flow
+//     Description : ´¦ÀíÊäÈëµÄPuk modify pinÂë
+//  **05*PUK*NEW_PIN*NEW_PIN# to change pin   **052*PUK2*NEW_PIN2*NEW_PIN2# to change pin2
 //     Global resource dependence : 
-//  Author:jassmine.meng
-//     Note: 
+//  Author: Jassmine
+//     Note:
 /*****************************************************************************/
-void MMIAPIPHONE_HandlePinAndPukFlow(
-                             MNSIM_PIN_REQ_TYPE_E       operate_type,   //PINµÄ²Ù×÷±êʶ
-                             MNSIM_PIN_INDICATION_E     pin_num,        //MNSIM_PIN1 or MNSIM_PIN2
-                             uint32                     win_tab,
-                             BOOLEAN is_special_func
-                             )
+LOCAL void HandlePukModifyPin(
+                              uint8 *puk_pin_str
+                              )
 {
-    MNSIM_PIN_STATUS_E  pin_status = MNSIM_PIN_READY;
-    MMI_OPERATE_PIN_T   *opreate_pin_ptr = SCI_ALLOC_APPZ(sizeof(MMI_OPERATE_PIN_T));
-    SIM_STATUS_E sim_status = SIM_STATUS_OK;
+    MMI_PIN_INFO_T  pin_info = {0};
+    MMI_STRING_T    wait_text = {0};
     
-    opreate_pin_ptr->operate_type = operate_type;
-    opreate_pin_ptr->pin_num = pin_num;
-    g_operate_pin_win_tab = win_tab;
-    g_is_operate_pin_special_func = is_special_func;
+    SCI_MEMSET(((void*)&pin_info), 0, sizeof(MMI_PIN_INFO_T));
     
-    //get the status of PIN
-    pin_status = MNSIM_GetPinStatusEx(MMIAPIPHONE_GetCurHandlingPinSimID(), pin_num);
-    if (MNSIM_PIN_BLOCKED == pin_status)//PUK±»Ëø
+    //parse input str
+    if (PARS_RESULT_SUCCESS == MMIAPIPARSE_ParsePukAndPinStr((char *)puk_pin_str,&pin_info))
     {
-        sim_status = MMIAPIPHONE_GetSimStatus(MMIAPIPHONE_GetCurHandlingPinSimID());
+        //response pin before receive signal of sim is ready
+        MNPHONE_ResponsePinEx(MMIAPIPHONE_GetCurResponsePinSimID(), MNSIM_PIN1, TRUE, &(pin_info.pin_value), &(pin_info.ext_pin_value));
         
-        if (SIM_STATUS_NO_SIM == sim_status)
-        {
-            MMIPUB_OpenAlertWarningWin(TXT_NO_SIM);
-        }
-        else if((SIM_STATUS_REGISTRATION_FAILED == sim_status) || (SIM_STATUS_REJECTED == sim_status))
-        {
-#ifndef MMI_IDLE_MINI_SUPPORT
-            MMIPUB_OpenAlertWarningWin(TXT_SIM_REGISTRATION_FAILED);
-#else
-            MMIPUB_OpenAlertWarningWin(TXT_SIM_REGISTRATION_FAILED_MINI);
-#endif
+        MMK_CloseWin(PHONE_PIN_WAIT_WIN_ID);
+        
+        //½øÈëµÈ´ý½çÃæ
+        MMI_GetLabelTextByLang(TXT_COMMON_WAITING, &wait_text);
+        MMIPUB_OpenWaitWin(1,&wait_text,PNULL,PNULL,PHONE_PIN_WAIT_WIN_ID,IMAGE_NULL,
+            ANIM_PUBWIN_WAIT,WIN_ONE_LEVEL,MMIPUB_SOFTKEY_NONE,HandlePukWaitingWindow);
 
-        }
-        else
-        {
-            if (MNSIM_PIN1 == pin_num)//PIN1
-            {
-                MMIPUB_OpenAlertWarningWin(TXT_PUK_BLOCKED);
-            }
-            else//PIN2
-            {
-                MMIPUB_OpenAlertWarningWin(TXT_PUK2_BLOCKED);
-            }
-        }
+        MMK_SetWinDisplayStyleState(PHONE_PIN_WAIT_WIN_ID, WS_DISABLE_RETURN_WIN, TRUE);
     }
     else
     {
-        if (MNSIM_PIN_PUK == pin_status)//PIN±»Ëø£¬ÒªÇóÊäÈëPUK
-        {
-            if (MNSIM_PIN1 == pin_num)//PIN1
-            {
-                MMK_CloseWin(MMI_PUK_INPUTING_WIN_ID);
-
-                opreate_pin_ptr->operate_type = MNSIM_PIN_UNBLOCK;
-                // ´ò¿ªÊäÈëPUKµÄ½çÃæ
-                MMK_CreatePubEditWin((uint32*)MMI_PUK_INPUTING_WIN_TAB,(ADD_DATA)opreate_pin_ptr);
-            }
-            else//PIN2±»ËøsimÈÔÈ»¿ÉÒÔÓÃ
-            {
-                SCI_MEMSET(&s_operate_pin2_blocked_info,0,sizeof(MMI_OPERATE_PIN_T));
-                s_operate_pin2_blocked_info.operate_type = operate_type;
-                s_operate_pin2_blocked_info.pin_num = pin_num;
-                MMIPUB_CloseAlertWin();
-                MMIPUB_OpenAlertWinByTextId(PNULL,TXT_PIN2_BLOCKED,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePin2BlockedExceptPhone);
+        MMIPUB_OpenAlertWinByTextId(PNULL,TXT_INPUT_ERROR,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePukAlertWindow);
+        
+        //Çå¿Õpassword
+        GUIEDIT_ClearAllStr(PHONE_PUK_EDITBOX_CTRL_ID);
+    }
+}
+
+/*****************************************************************************/
+//     Description : PUKÊäÈë½çÃæ´ò¿ªÊ±£¬µÈ´ý½çÃæ²»ÔÊÐí·µ»Ø£¬pin£¬new pin½çÃæ²»ÔÊÐíred key,flip·µ»Ø
+//     Global resource dependence : 
+//  Author: Jassmine
+//     Note:
+/*****************************************************************************/
+LOCAL MMI_RESULT_E HandlePukWaitingWindow (
+                                           MMI_WIN_ID_T      win_id,   // ´°¿ÚµÄID
+                                           MMI_MESSAGE_ID_E     msg_id,        // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
+                                           DPARAM                      param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
+                                           )
+{
+    MMI_RESULT_E result = MMI_RESULT_TRUE;
+    
+    switch (msg_id)
+    {
+    case MSG_APP_RED://pukÊäÈë½çÃæ´æÔÚ,wait window²»ÔÊÐí·µ»Ø
+        break;
 
-                SCI_FREE(opreate_pin_ptr);
-                opreate_pin_ptr = PNULL;
-            }
-        }
-        else//PIN2ûÓб»Ëø£¬ÒªÇóÊäÈëPIN2
-        {
-            MMK_CloseWin(MMI_PIN_INPUTING_WIN_ID);
+#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.        
+    case MSG_APP_FLIP:
+        MMIDEFAULT_HandleFlipKey(FALSE);
+        break;
+#endif
 
-            // ´ò¿ªÊäÈëPINµÄ½çÃæ
-            MMK_CreatePubEditWin((uint32*)MMI_PIN_INPUTING_WIN_TAB,(ADD_DATA)opreate_pin_ptr);
-        }
+    case MSG_OPEN_WINDOW:
+        MMK_SetWinDisplayStyleState(win_id, WS_DISABLE_RETURN_WIN, TRUE);
+        result = MMIPUB_HandleWaitWinMsg(win_id, msg_id, param);
+        break;
+        
+    default:
+        result = MMIPUB_HandleWaitWinMsg(win_id, msg_id, param);
+        break;
     }
+    
+    return (result);
 }
 
 /*****************************************************************************/
-//     Description : pin2 blockedµÄÇé¿öϹرմ°¿Ú£¬ÔòÆô¶¯ÊäÈëpukµÄ´°¿Ú
+//     Description : PUKÊäÈë½çÃæ´ò¿ªÊ±£¬alert½çÃæ.²»ÔÊÐíred key,flip·µ»Ø(Æô¶¯¹ý³Ì)
 //     Global resource dependence : 
 //  Author: Jassmine
 //     Note:
 /*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePin2BlockedExceptPhone(
-                                                MMI_WIN_ID_T     win_id,       // Pin boloked´°¿ÚµÄID
-                                                MMI_MESSAGE_ID_E       msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                                DPARAM                         param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                                )
+LOCAL MMI_RESULT_E HandlePukAlertWindow(
+                                        MMI_WIN_ID_T     win_id,       // ´°¿ÚµÄID
+                                        MMI_MESSAGE_ID_E       msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
+                                        DPARAM                         param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
+                                        )
 {
-    MMI_OPERATE_PIN_T   *operate_pin_ptr = &s_operate_pin2_blocked_info;
-    MMI_RESULT_E        result = MMI_RESULT_TRUE;
+    MMI_RESULT_E result = MMI_RESULT_TRUE;
     
     switch (msg_id)
     {
-    case MSG_CLOSE_WINDOW:
+    case MSG_APP_RED://puk½çÃæ´æÔÚ£¬red and flip²»ÔÊÐí·µ»Ø
+        if (MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
         {
-            MMI_OPERATE_PIN_T   *new_opreate_pin_ptr = SCI_ALLOC_APPZ(sizeof(MMI_OPERATE_PIN_T));
-            
-            MMI_MEMCPY(new_opreate_pin_ptr,
-                sizeof(MMI_OPERATE_PIN_T),
-                operate_pin_ptr,
-                sizeof(MMI_OPERATE_PIN_T),
-                sizeof(MMI_OPERATE_PIN_T));
-            
-            result = MMIPUB_HandleAlertWinMsg(win_id,msg_id,param);
+            MMK_CloseWin(win_id);
+        }
+        else
+        {
+            result = MMI_RESULT_FALSE;
+        }
+        break;
 
-            MMK_CloseWin(MMI_PUK_INPUTING_WIN_ID);
-            
-            new_opreate_pin_ptr->operate_type = MNSIM_PIN_UNBLOCK;
-            // ´ò¿ªÊäÈëPUKµÄ½çÃæ
-            MMK_CreatePubEditWin((uint32*)MMI_PUK_INPUTING_WIN_TAB,(ADD_DATA)new_opreate_pin_ptr);
+#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.
+    case MSG_APP_FLIP:
+        if (MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
+        {
+            MMIDEFAULT_HandleFlipKey(FALSE);
+            MMK_CloseWin(win_id);
+        }
+        else
+        {
+            result = MMI_RESULT_FALSE;
         }
         break;
+#endif        
         
     default:
         result = MMIPUB_HandleAlertWinMsg(win_id,msg_id,param);
@@ -1396,98 +514,77 @@ LOCAL MMI_RESULT_E HandlePin2BlockedExceptPhone(
 }
 
 /*****************************************************************************/
-//     Description : ´¦ÀíËùÓÐPIN INPUTµÄÏûÏ¢£¬³ýÈ¥¿ª¹Ø»úreponse PINµÄÇé¿ö
+//     Description : ´¦Àínew pin INPUTINGµÄÏûÏ¢
 //     Global resource dependence : 
 //  Author: Jassmine
 //     Note:
 /*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePinInputExceptPhone(
-                                             MMI_WIN_ID_T    win_id,   // PIN2 INPUTING´°¿ÚµÄID
-                                             MMI_MESSAGE_ID_E  msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                             DPARAM                param               // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                             )
+LOCAL MMI_RESULT_E HandleNewPinInputWindow (
+                                            MMI_WIN_ID_T     win_id,   // new pin input´°¿ÚµÄID
+                                            MMI_MESSAGE_ID_E   msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
+                                            DPARAM                     param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
+                                            )
 {
-    MMI_OPERATE_PIN_T   *operate_pin_ptr = (MMI_OPERATE_PIN_T *)MMK_GetWinAddDataPtr(win_id);
     MMI_RESULT_E    result = MMI_RESULT_TRUE;
-    MMI_STRING_T   pin_value = {0};  
+    MMI_STRING_T   puk_value = {0};
+    MMI_STRING_T   new_pin_value = {0};
+    MMI_STRING_T   new_pin_again_value = {0};
     GUI_BOTH_RECT_T edit_both_rect = {0};
-    MMI_STRING_T    pin_puk_remain_str = {0};
+    BOOLEAN is_input_emergency_call = FALSE;
+    uint16 emergency_call_len = 0;
     
     switch (msg_id)
     {
     case MSG_OPEN_WINDOW:
+        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
 #ifdef MAINLCD_SIZE_128X64 //added by taiping.lai 2011/01/03
-        {
-            GUI_BOTH_RECT_T both_rect = GetPasswordLabelBothRect();
-                         GUI_RECT_T title_rect = GetPasswordTitleRect();
+               {
+                   GUI_RECT_T title_rect = GetPasswordTitleRect();
 
-                    GUIWIN_SetTitleRect(win_id, title_rect);   
-            GUIAPICTRL_SetBothRect(MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID, &both_rect);
+              GUIWIN_SetTitleRect(win_id, title_rect); 
+       
                }
-#else                  
-        {
-            GUI_BOTH_RECT_T both_rect = MMITHEME_GetWinClientBothRect(win_id);
-
-            both_rect.h_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN;
-            both_rect.v_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN;
-            both_rect.h_rect.bottom = both_rect.h_rect.top + MMIPHONE_PIN_PUK_REMAIN_HEIGHT;
-            both_rect.v_rect.bottom = both_rect.v_rect.top + MMIPHONE_PIN_PUK_REMAIN_HEIGHT;
-
-            GUIAPICTRL_SetBothRect(MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID, &both_rect);
-        }
+        edit_both_rect = GetPinPukEditRect(win_id, FALSE);
+#else
+        edit_both_rect = GetPinPukEditRect(win_id, FALSE);
 #endif 
-        IGUICTRL_SetState(MMK_GetCtrlPtr(MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID), GUICTRL_STATE_DISABLE_ACTIVE, TRUE);
-
-        SCI_MEMSET(&pin_puk_remain_str, 0x00, sizeof(MMI_STRING_T));
-        MMIPHONE_GetPinPukRemainStr(MMIAPIPHONE_GetCurHandlingPinSimID(), &pin_puk_remain_str, operate_pin_ptr->pin_num, FALSE);
-
-        if (PNULL != pin_puk_remain_str.wstr_ptr)
-        {
-            GUILABEL_SetText(MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID,&pin_puk_remain_str,FALSE);
-
-            SCI_FREE(pin_puk_remain_str.wstr_ptr);
-            pin_puk_remain_str.wstr_ptr = PNULL;
-        }
+        GUIAPICTRL_SetBothRect(PHONE_NEW_PIN_EDITBOX_CTRL_ID, &edit_both_rect);
 
-        edit_both_rect = GetPinPukEditRect(win_id, TRUE);
-        GUIAPICTRL_SetBothRect(MMI_PIN_INPUT_EDITBOX_CTRL_ID, &edit_both_rect);
-        
-        GUIEDIT_SetPasswordStyle(MMI_PIN_INPUT_EDITBOX_CTRL_ID,GUIEDIT_PASSWORD_STYLE_DIGITAL_PIN);
+        GUIEDIT_SetPasswordStyle(PHONE_NEW_PIN_EDITBOX_CTRL_ID,GUIEDIT_PASSWORD_STYLE_DIGITAL_PIN);
 
         //set left softkey
-        GUIEDIT_SetSoftkey(MMI_PIN_INPUT_EDITBOX_CTRL_ID,0,MMI_PIN_MIN_LENGTH,TXT_NULL,TXT_COMMON_OK,PNULL);
-        MMK_SetAtvCtrl(win_id,MMI_PIN_INPUT_EDITBOX_CTRL_ID);
+        GUIEDIT_SetSoftkey(PHONE_NEW_PIN_EDITBOX_CTRL_ID, 0, MMI_PIN_MIN_LENGTH,TXT_NULL,TXT_COMMON_OK, PinPukInputWinSoftkey);
+        MMK_SetAtvCtrl(win_id,PHONE_NEW_PIN_EDITBOX_CTRL_ID);
         break;
 
-    case MSG_GET_FOCUS:
-        SCI_MEMSET(&pin_puk_remain_str, 0x00, sizeof(MMI_STRING_T));
-        MMIPHONE_GetPinPukRemainStr(MMIAPIPHONE_GetCurHandlingPinSimID(), &pin_puk_remain_str, operate_pin_ptr->pin_num, FALSE);
-
-        if (PNULL != pin_puk_remain_str.wstr_ptr)
+#if 0
+#ifdef MMI_PDA_SUPPORT
+    case MSG_NOTIFY_EDITBOX_UPDATE_STRNUM:
         {
-            GUILABEL_SetText(MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID,&pin_puk_remain_str,FALSE);
-
-            SCI_FREE(pin_puk_remain_str.wstr_ptr);
-            pin_puk_remain_str.wstr_ptr = PNULL;
+            MMI_STRING_T str_info = {0};
+            GUIEDIT_GetString(PHONE_NEW_PIN_EDITBOX_CTRL_ID, &str_info);       
+        
+            is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&str_info, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
+            if ((is_input_emergency_call) &&
+                (str_info.wstr_len == emergency_call_len))
+            {    
+                MMIPUB_SetWinSoftkey(win_id, TXT_SOS, STXT_RETURN,TRUE);
+            }
+            else
+            {
+                MMIPUB_SetWinSoftkey(win_id, TXT_COMMON_OK, STXT_RETURN,TRUE);
+            }
         }
         break;
+#endif
+#endif
         
+#ifndef MMI_PDA_SUPPORT
     case MSG_FULL_PAINT:
-        //set title
-        if (MNSIM_PIN1 == operate_pin_ptr->pin_num)
-        {
-            GUIWIN_SetTitleTextId(MMI_PIN_INPUTING_WIN_ID,TXT_ENTER_PIN,FALSE);
-        }
-        else
-        {
-            GUIWIN_SetTitleTextId(MMI_PIN_INPUTING_WIN_ID,TXT_ENTER_PIN2,FALSE);
-        }
-#if !defined(MMI_PDA_SUPPORT) && !defined(MMIPUBWIN_PDASTYLE_SUPPORT)
-        //MMIAPISET_SetPwBg(win_id, IMAGE_NUMBERINPUT_PIN);
-        SetPasswordBackground(win_id,MMI_PIN_INPUT_EDITBOX_CTRL_ID,TRUE);
-#endif
+        SetPasswordBackground(win_id,PHONE_NEW_PIN_EDITBOX_CTRL_ID,FALSE);
         break;
-        
+#endif
+
 #ifdef TOUCH_PANEL_SUPPORT //IGNORE9527
     case MSG_CTL_PENOK:
 #endif //TOUCH_PANEL_SUPPORT //IGNORE9527
@@ -1495,36 +592,100 @@ LOCAL MMI_RESULT_E HandlePinInputExceptPhone(
     case MSG_CTL_OK:
     case MSG_APP_OK:
     case MSG_APP_WEB:
-        // get the value about PIN
-        GUIEDIT_GetString(MMI_PIN_INPUT_EDITBOX_CTRL_ID,&pin_value);
+    case MSG_APP_GREEN:
+    case MSG_APP_CALL2:
+     case MSG_APP_CALL3:
+     case MSG_APP_CALL4:   
+        // get the value about new PIN
+        GUIEDIT_GetString(PHONE_NEW_PIN_EDITBOX_CTRL_ID,&new_pin_value);
+        
+        is_input_emergency_call = MMIAPICC_IsInputEmergencyCall(&new_pin_value, &emergency_call_len, MMIAPIPHONE_GetCurResponsePinSimID());
+
+        if ((is_input_emergency_call) &&
+            (new_pin_value.wstr_len == emergency_call_len))
+        {
+            MakeEmergencyCall(&new_pin_value);
+        }
+        else if (PIN_LEN_IS_IN_RANGE(new_pin_value.wstr_len) 
+                    && MSG_APP_GREEN != msg_id 
+                    && MSG_APP_CALL2 != msg_id
+                    && MSG_APP_CALL3 != msg_id
+                    && MSG_APP_CALL4 != msg_id)
+        {
+            //open the window of input new pin again
+            MMK_CreatePubEditWin((uint32*)PHONE_NEW_PIN_AGAIN_INPUTING_WIN_TAB,PNULL);
+        }
+        break;
+        
+    case MSG_SET_NEW_PIN_AGAIN:
+        // get the value about new PIN again
+        GUIEDIT_GetString(PHONE_NEW_PIN_AGAIN_EDITBOX_CTRL_ID,&new_pin_again_value);
+        
+        // get the value about new PIN
+        GUIEDIT_GetString(PHONE_NEW_PIN_EDITBOX_CTRL_ID,&new_pin_value);
         
-        if (PIN_LEN_IS_IN_RANGE(pin_value.wstr_len))
+        //±È½ÏÁ½¸öPINÊÇ·ñÏàͬ
+        if( MMIAPICOM_StrCompare( &new_pin_value, &new_pin_again_value ) )
+        //if (MMIAPICOM_CompareTwoTeleNum( new_pin_again_value.wstr_ptr, new_pin_again_value.wstr_len, new_pin_value.wstr_ptr, new_pin_value.wstr_len))
         {
-            if (MNSIM_PIN_CHANGE == operate_pin_ptr->operate_type)
-            {
-                //·ÅÔÚ´Ë´¦·ÖÅä¿Õ¼ä£¬¿ÉÒÔ±ÜÃâ¶à´ÎAlloc
-                MMI_OPERATE_PIN_T   *new_opreate_pin_ptr = SCI_ALLOC_APPZ(sizeof(MMI_OPERATE_PIN_T));
-                MMI_MEMCPY(new_opreate_pin_ptr,
-                    sizeof(MMI_OPERATE_PIN_T),
-                    operate_pin_ptr,
-                    sizeof(MMI_OPERATE_PIN_T),
-                    sizeof(MMI_OPERATE_PIN_T));
-                MMK_CreatePubEditWin((uint32*)MMI_NEW_PIN_INPUTING_WIN_TAB,(ADD_DATA)new_opreate_pin_ptr);
-            }
-            else
-            {
-                HandleOperatePin(operate_pin_ptr,&pin_value);
-            }
+            // get the value about PUK
+            GUIEDIT_GetString(PHONE_PUK_EDITBOX_CTRL_ID,&puk_value);
+            
+            HandlePukAndNewPin(&puk_value,&new_pin_value);
+            
+            //close input new pin and input new pin again window
+            MMK_CloseWin(PHONE_NEW_PIN_INPUT_WIN_ID);
+            MMK_CloseWin(PHONE_NEW_PIN_AGAIN_INPUT_WIN_ID);
+        }
+        else
+        {
+            //Ìáʾ´íÎó´°¿Ú,Á½´ÎÊäÈëµÄPIN²»Ò»ÖÂ
+            #ifdef MMI_PDA_SUPPORT
+            MMIPUB_OpenAlertWinByTextId(PNULL,TXT_INPUT_CONFLICT,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePukAlertWindow);            
+            #else
+            MMIPUB_OpenAlertWinByTextId(PNULL,TXT_MSGBOX_PIN_CONFLICT,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePukAlertWindow);
+            #endif
+            //Çå¿Õpassword
+            GUIEDIT_ClearAllStr(PHONE_NEW_PIN_EDITBOX_CTRL_ID);
+            
+            //close input new pin again window
+            MMK_CloseWin(PHONE_NEW_PIN_AGAIN_INPUT_WIN_ID);
+            
+            MMK_SetAtvCtrl(win_id,PHONE_NEW_PIN_EDITBOX_CTRL_ID);
         }
         break;
         
     case MSG_CTL_CANCEL:
     case MSG_APP_CANCEL:
-        MMK_CloseWin(win_id);
+        MMK_CloseWin( win_id );
         break;
         
+    case MSG_APP_RED://puk½çÃæ´æÔÚ£¬red and flip²»ÔÊÐí·µ»Ø
+        if (!MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
+        {
+            result = MMI_RESULT_FALSE;
+        }
+        break;
+
+#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.        
+    case MSG_APP_FLIP:
+        if (!MMK_IsOpenWin(PHONE_PUK_INPUT_WIN_ID))
+        {
+            result = MMI_RESULT_FALSE;
+        }
+        else
+        {
+            MMIDEFAULT_HandleFlipKey(FALSE);
+        }
+        break;
+#endif        
+
+    case MSG_GET_FOCUS:
+        MMIDEFAULT_AllowOpenKeylocWin(FALSE);
+        break;
+
     case MSG_CLOSE_WINDOW:
-        MMK_FreeWinAddData(MMI_PIN_INPUTING_WIN_ID);
+        MMIDEFAULT_AllowOpenKeylocWin(TRUE);
         break;
         
     default:
@@ -1535,28 +696,37 @@ LOCAL MMI_RESULT_E HandlePinInputExceptPhone(
     return (result);
 }
 
+
 /*****************************************************************************/
-//     Description : ´¦ÀíÊäÈëµÄPINÂ룬³ýÈ¥¿ª¹Ø»úreponse PINµÄÇé¿ö
+//     Description : ´¦ÀíÊäÈëµÄPuk and new pinÂë
 //     Global resource dependence : 
 //  Author: Jassmine
 //     Note:
 /*****************************************************************************/
-LOCAL void HandleOperatePin(
-                            MMI_OPERATE_PIN_T   *operate_pin_info,
-                            MMI_STRING_T       *pin_ptr
-                            )
+LOCAL void HandlePukAndNewPin(
+                              MMI_STRING_T *puk_ptr,
+                              MMI_STRING_T *pin_ptr
+                              )
 {
-    MN_BLOCK_T      pin_value = {0};
+    MN_BLOCK_T  puk_value = {0};
+    MN_BLOCK_T  pin_value = {0};
     MMI_STRING_T    wait_text = {0};
     
-    if(PNULL == pin_ptr)
+    if(PNULL == pin_ptr ||PNULL == puk_ptr)
     {
-        //SCI_TRACE_LOW:"HandlePinInputingString pin_ptr "
-        SCI_TRACE_ID(TRACE_TOOL_CONVERT,MMIPHONE_WINTAB_2208_112_2_18_2_45_32_232,(uint8*)"");
+        //SCI_TRACE_LOW:"HandlePinInputingString pin_ptr=%d ||puk_ptr=%d"
+        SCI_TRACE_ID(TRACE_TOOL_CONVERT,MMIPHONE_WINTAB_1899_112_2_18_2_45_32_231,(uint8*)"dd", pin_ptr, puk_ptr);
         return;
     }
     
-    //SCI_MEMSET(&pin_value, 0, sizeof(MN_BLOCK_T));
+    //ת»»PUKµÄ½á¹¹
+    puk_value.blocklen = puk_ptr->wstr_len;
+
+    MMI_WSTRNTOSTR((uint8 *)puk_value.blockbuf,
+        MN_MAX_BLOCK_LEN,
+        puk_ptr->wstr_ptr,
+        puk_value.blocklen,
+        puk_value.blocklen);
     
     //ת»»PINµÄ½á¹¹
     pin_value.blocklen = pin_ptr->wstr_len;
@@ -1566,234 +736,108 @@ LOCAL void HandleOperatePin(
         pin_ptr->wstr_ptr,
         pin_value.blocklen,
         pin_value.blocklen);
-    //SCI_TRACE_LOW:"HandleOperatePin:operate_type is %d,pin_num is %d "
-    SCI_TRACE_ID(TRACE_TOOL_CONVERT,MMIPHONE_WINTAB_2222_112_2_18_2_45_32_233,(uint8*)"dd",operate_pin_info->operate_type,operate_pin_info->pin_num);
-    
-    //operate pin
-    MNPHONE_OperatePinEx(MMIAPIPHONE_GetCurHandlingPinSimID(), operate_pin_info->operate_type,operate_pin_info->pin_num,&pin_value, PNULL);
+
+    //response pin before receive signal of sim is ready
+    MNPHONE_ResponsePinEx(MMIAPIPHONE_GetCurResponsePinSimID(), MNSIM_PIN1, TRUE, &pin_value, &puk_value);
     
     MMK_CloseWin(PHONE_PIN_WAIT_WIN_ID);
     
     //½øÈëµÈ´ý½çÃæ
     MMI_GetLabelTextByLang(TXT_COMMON_WAITING, &wait_text);
     MMIPUB_OpenWaitWin(1,&wait_text,PNULL,PNULL,PHONE_PIN_WAIT_WIN_ID,IMAGE_NULL,
-        ANIM_PUBWIN_WAIT,WIN_ONE_LEVEL,MMIPUB_SOFTKEY_NONE,PNULL);
-}
+        ANIM_PUBWIN_WAIT,WIN_ONE_LEVEL,MMIPUB_SOFTKEY_NONE,HandlePukWaitingWindow);
 
-/*****************************************************************************/
-//     Description : HandleExitPinBlockedExceptPhone
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL void HandleExitPinBlockedExceptPhone(void)
-{
-    MN_DUAL_SYS_E dual_sys = MMIAPIPHONE_GetCurHandlingPinSimID();
-    
-    MMIAPICC_SetSimCallReady(dual_sys, FALSE);
-    MMIAPISET_SetIsQueryCfu(FALSE,dual_sys);
-    MAIN_SetIdleForwardState(dual_sys, FALSE);
+    MMK_SetWinDisplayStyleState(PHONE_PIN_WAIT_WIN_ID, WS_DISABLE_RETURN_WIN, TRUE);
 }
 
+
 /*****************************************************************************/
-//     Description : ´¦ÀíÊäÈëµÄPUKÂ룬³ýÈ¥¿ª¹Ø»úreponse PINµÄÇé¿ö
+//     Description : handle pin and puk flow
 //     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
+//  Author:jassmine.meng
+//     Note: 
 /*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePukInputExceptPhone (
-                                              MMI_WIN_ID_T   win_id,   // PUK INPUTING´°¿ÚµÄID
-                                              MMI_MESSAGE_ID_E         msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                              DPARAM               param               // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                              )
+void MMIAPIPHONE_HandlePinAndPukFlow(
+                             MNSIM_PIN_REQ_TYPE_E       operate_type,   //PINµÄ²Ù×÷±êʶ
+                             MNSIM_PIN_INDICATION_E     pin_num,        //MNSIM_PIN1 or MNSIM_PIN2
+                             uint32                     win_tab,
+                             BOOLEAN is_special_func
+                             )
 {
-    //wchar                    star_value[]= {'*'};
-    //wchar                    hash_value[]= {'#'};
-    MMI_OPERATE_PIN_T   *operate_pin_ptr = (MMI_OPERATE_PIN_T *)MMK_GetWinAddDataPtr(win_id);
-    MMI_RESULT_E        result = MMI_RESULT_TRUE;
-    MMI_STRING_T        puk_value = {0};
-    GUI_BOTH_RECT_T edit_both_rect = {0};
-    MMI_STRING_T    pin_puk_remain_str = {0};
-
-    if(PNULL == operate_pin_ptr)//bug1256366
-    {
-        SCI_TRACE_LOW("HandlePukInputExceptPhone: operate_pin_ptr is PNULL");
-        return (result);
-    }
+    MNSIM_PIN_STATUS_E  pin_status = MNSIM_PIN_READY;
+    MMI_OPERATE_PIN_T   *opreate_pin_ptr = SCI_ALLOC_APPZ(sizeof(MMI_OPERATE_PIN_T));
+    SIM_STATUS_E sim_status = SIM_STATUS_OK;
     
-    switch (msg_id)
+    opreate_pin_ptr->operate_type = operate_type;
+    opreate_pin_ptr->pin_num = pin_num;
+    g_operate_pin_win_tab = win_tab;
+    g_is_operate_pin_special_func = is_special_func;
+    
+    //get the status of PIN
+    pin_status = MNSIM_GetPinStatusEx(MMIAPIPHONE_GetCurHandlingPinSimID(), pin_num);
+    if (MNSIM_PIN_BLOCKED == pin_status)//PUK±»Ëø
     {
-    case MSG_OPEN_WINDOW:
-#ifdef MAINLCD_SIZE_128X64 //added by taiping.lai 2011/01/03
-        {
-            GUI_BOTH_RECT_T both_rect = GetPasswordLabelBothRect();
-                         GUI_RECT_T title_rect = GetPasswordTitleRect();
-
-                    GUIWIN_SetTitleRect(win_id, title_rect);   
-            GUIAPICTRL_SetBothRect(MMIPHONE_PIN_INPUT_REMAIN_LABEL_CTRL_ID, &both_rect);
-               }
-#else                                          
-        {
-            GUI_BOTH_RECT_T both_rect = MMITHEME_GetWinClientBothRect(win_id);
-
-            both_rect.h_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN;
-            both_rect.v_rect.top += MMIPHONE_PIN_PUK_REMAIN_TOP_MARGIN;
-            both_rect.h_rect.bottom = both_rect.h_rect.top + MMIPHONE_PIN_PUK_REMAIN_HEIGHT;
-            both_rect.v_rect.bottom = both_rect.v_rect.top + MMIPHONE_PIN_PUK_REMAIN_HEIGHT;
-
-            GUIAPICTRL_SetBothRect(MMIPHONE_PUK_INPUT_REMAIN_LABEL_CTRL_ID, &both_rect);
-        }
-#endif
-        IGUICTRL_SetState(MMK_GetCtrlPtr(MMIPHONE_PUK_INPUT_REMAIN_LABEL_CTRL_ID), GUICTRL_STATE_DISABLE_ACTIVE, TRUE);
-
-        SCI_MEMSET(&pin_puk_remain_str, 0x00, sizeof(MMI_STRING_T));
-        MMIPHONE_GetPinPukRemainStr(MMIAPIPHONE_GetCurHandlingPinSimID(), &pin_puk_remain_str, operate_pin_ptr->pin_num, TRUE);
-
-        if (PNULL != pin_puk_remain_str.wstr_ptr)
-        {
-            GUILABEL_SetText(MMIPHONE_PUK_INPUT_REMAIN_LABEL_CTRL_ID,&pin_puk_remain_str,FALSE);
-
-            SCI_FREE(pin_puk_remain_str.wstr_ptr);
-            pin_puk_remain_str.wstr_ptr = PNULL;
-        }
-
-        edit_both_rect = GetPinPukEditRect(win_id, TRUE);
-        GUIAPICTRL_SetBothRect(MMI_PUK_INPUT_EDITBOX_CTRL_ID, &edit_both_rect);
-
-        GUIEDIT_SetPasswordStyle(MMI_PUK_INPUT_EDITBOX_CTRL_ID,GUIEDIT_PASSWORD_STYLE_DIGITAL_PIN);
+        sim_status = MMIAPIPHONE_GetSimStatus(MMIAPIPHONE_GetCurHandlingPinSimID());
         
-        //set left softkey
-        GUIEDIT_SetSoftkey(MMI_PUK_INPUT_EDITBOX_CTRL_ID,0,MMI_PIN_MIN_LENGTH,TXT_NULL,TXT_COMMON_OK,PNULL);
-        MMK_SetAtvCtrl(win_id,MMI_PUK_INPUT_EDITBOX_CTRL_ID);
-        break;
-
-    case MSG_GET_FOCUS:
-        SCI_MEMSET(&pin_puk_remain_str, 0x00, sizeof(MMI_STRING_T));
-        MMIPHONE_GetPinPukRemainStr(MMIAPIPHONE_GetCurHandlingPinSimID(), &pin_puk_remain_str, operate_pin_ptr->pin_num, TRUE);
-
-        if (PNULL != pin_puk_remain_str.wstr_ptr)
+        if (SIM_STATUS_NO_SIM == sim_status)
         {
-            GUILABEL_SetText(MMIPHONE_PUK_INPUT_REMAIN_LABEL_CTRL_ID,&pin_puk_remain_str,FALSE);
-
-            SCI_FREE(pin_puk_remain_str.wstr_ptr);
-            pin_puk_remain_str.wstr_ptr = PNULL;
+            MMIPUB_OpenAlertWarningWin(TXT_NO_SIM);
         }
-        break;
-        
-    case MSG_FULL_PAINT:
-        //set title
-        if (MNSIM_PIN1 == operate_pin_ptr->pin_num)
+        else if((SIM_STATUS_REGISTRATION_FAILED == sim_status) || (SIM_STATUS_REJECTED == sim_status))
         {
-            GUIWIN_SetTitleTextId(MMI_PUK_INPUTING_WIN_ID,TXT_ENTER_PUK,FALSE);
+#ifndef MMI_IDLE_MINI_SUPPORT
+            MMIPUB_OpenAlertWarningWin(TXT_SIM_REGISTRATION_FAILED);
+#else
+            MMIPUB_OpenAlertWarningWin(TXT_SIM_REGISTRATION_FAILED_MINI);
+#endif
+
         }
         else
         {
-            GUIWIN_SetTitleTextId(MMI_PUK_INPUTING_WIN_ID,TXT_ENTER_PUK2,FALSE);
-        }
-#ifndef MMI_PDA_SUPPORT
-        SetPasswordBackground(win_id,MMI_PUK_INPUT_EDITBOX_CTRL_ID,TRUE);
-#endif
-        break;
-        
-#ifdef TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_PENOK:
-#endif //TOUCH_PANEL_SUPPORT //IGNORE9527
-    case MSG_CTL_MIDSK:
-    case MSG_CTL_OK:
-    case MSG_APP_OK:
-    case MSG_APP_WEB:
-        {
-            uint8 temp_str[MN_MAX_BLOCK_LEN] = {0};
-
-            // get the value about PUK
-            GUIEDIT_GetString(MMI_PUK_INPUT_EDITBOX_CTRL_ID,&puk_value);
-
-            MMI_WSTRNTOSTR( (uint8 *)temp_str, MN_MAX_BLOCK_LEN, puk_value.wstr_ptr, puk_value.wstr_len, puk_value.wstr_len );
-            
-            if(0 == strncmp( (char*)temp_str,"**05*",5))//input **05*PUK*NEW_PIN*NEW_PIN#
+            if (MNSIM_PIN1 == pin_num)//PIN1
             {
-                if (PUK_MODIFY_PIN_LEN_IS_IN_RANGE(puk_value.wstr_len))
-                {
-                    HandlePukModifyPinExceptPhone( temp_str, MNSIM_PIN1 );
-                }
+                MMIPUB_OpenAlertWarningWin(TXT_PUK_BLOCKED);
             }
-            else if (0 == strncmp( (char*)temp_str,"**052*",6))//input **052*PUK2*NEW_PIN2*NEW_PIN2# to change pin2
+            else//PIN2
             {
-                if (PUK2_MODIFY_PIN2_LEN_IS_IN_RANGE(puk_value.wstr_len))
-                {
-                    HandlePukModifyPinExceptPhone( temp_str,MNSIM_PIN2);
-                }
+                MMIPUB_OpenAlertWarningWin(TXT_PUK2_BLOCKED);
             }
-            else
+        }
+    }
+    else
+    {
+        if (MNSIM_PIN_PUK == pin_status)//PIN±»Ëø£¬ÒªÇóÊäÈëPUK
+        {
+            if (MNSIM_PIN1 == pin_num)//PIN1
             {
-                if (PIN_LEN_IS_IN_RANGE(puk_value.wstr_len))
-                {
-                    //·ÅÔÚ´Ë´¦·ÖÅä¿Õ¼ä£¬¿ÉÒÔ±ÜÃâ¶à´ÎAlloc
-                    MMI_OPERATE_PIN_T   *new_opreate_pin_ptr = SCI_ALLOC_APPZ(sizeof(MMI_OPERATE_PIN_T));
-                    MMI_MEMCPY(new_opreate_pin_ptr,
-                        sizeof(MMI_OPERATE_PIN_T),
-                        operate_pin_ptr,
-                        sizeof(MMI_OPERATE_PIN_T),
-                        sizeof(MMI_OPERATE_PIN_T));
-                    
-                    MMK_CreatePubEditWin((uint32*)MMI_NEW_PIN_INPUTING_WIN_TAB,(ADD_DATA)new_opreate_pin_ptr);
-                }
+                MMK_CloseWin(MMI_PUK_INPUTING_WIN_ID);
+
+                opreate_pin_ptr->operate_type = MNSIM_PIN_UNBLOCK;
+                // ´ò¿ªÊäÈëPUKµÄ½çÃæ
+                MMK_CreatePubEditWin((uint32*)MMI_PUK_INPUTING_WIN_TAB,(ADD_DATA)opreate_pin_ptr);
             }
-        }
-        break;
+            else//PIN2±»ËøsimÈÔÈ»¿ÉÒÔÓÃ
+            {
+                SCI_MEMSET(&s_operate_pin2_blocked_info,0,sizeof(MMI_OPERATE_PIN_T));
+                s_operate_pin2_blocked_info.operate_type = operate_type;
+                s_operate_pin2_blocked_info.pin_num = pin_num;
+                MMIPUB_CloseAlertWin();
+                MMIPUB_OpenAlertWinByTextId(PNULL,TXT_PIN2_BLOCKED,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePin2BlockedExceptPhone);
 
-    case MSG_APP_CANCEL:
-    case MSG_CTL_CANCEL:
-    case MSG_APP_RED://pukÊäÈë½çÃæ²»ÔÊÐí·µ»Ø
-        if(MNSIM_PIN1 == operate_pin_ptr->pin_num)//bug1256366, 1246219µÄÐÞ¸ÄÓЩ¶´£¬PUK²»ÔÊÐí·µ»Øµ«PUK2ÔÊÐí·µ»Ø
-        {
-            HandleExitPinBlockedExceptPhone();
-            MMIPUB_OpenAlertWinByTextId(PNULL,TXT_PLS_INPUT_PUK,TXT_NULL,IMAGE_PUBWIN_WARNING,PNULL,PNULL,MMIPUB_SOFTKEY_ONE,HandlePinAlertWindow);
-        }
-        else
-        {
-            MMK_CloseWin(win_id);
-        }
-        break;
-    case MSG_APP_FLIP:
-        if (MNSIM_PIN1 == operate_pin_ptr->pin_num)
-        {
-            HandleExitPinBlockedExceptPhone();
-            
-            MMK_CloseWin(win_id);
+                SCI_FREE(opreate_pin_ptr);
+                opreate_pin_ptr = PNULL;
+            }
         }
-        else
+        else//PIN2ûÓб»Ëø£¬ÒªÇóÊäÈëPIN2
         {
-            MMK_CloseWin(win_id);
-        }
+            MMK_CloseWin(MMI_PIN_INPUTING_WIN_ID);
 
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.        
-        if(MSG_APP_FLIP == msg_id)
-        {
-            MMIDEFAULT_HandleFlipKey(FALSE);
+            // ´ò¿ªÊäÈëPINµÄ½çÃæ
+            MMK_CreatePubEditWin((uint32*)MMI_PIN_INPUTING_WIN_TAB,(ADD_DATA)opreate_pin_ptr);
         }
-#endif        
-        break;
-        
-    case MSG_CLOSE_WINDOW:
-        MMK_FreeWinAddData(MMI_PUK_INPUTING_WIN_ID);
-        break;
-        
-    default:
-        result = MMI_RESULT_FALSE;
-        break;
     }
-    
-    return (result);
 }
 
-/*****************************************************************************/
-//     Description : ´¦ÀíÊäÈëµÄPuk modify pinÂë(¿ª»úÖ®ºó)
-//  **05*PUK*NEW_PIN*NEW_PIN# to change pin   **052*PUK2*NEW_PIN2*NEW_PIN2# to change pin2
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
 LOCAL void HandlePukModifyPinExceptPhone(
                                          uint8                      *puk_pin_str,
                                          MNSIM_PIN_INDICATION_E     pin_num
@@ -1833,54 +877,6 @@ LOCAL void HandlePukModifyPinExceptPhone(
     }
 }
 
-/*****************************************************************************/
-//     Description : PUKÊäÈë½çÃæ´ò¿ªÊ±£¬alert½çÃæ\²»ÔÊÐíred key,flip·µ»Ø(³ýÈ¥¿ª¹Ø»úreponse PINµÄÇé¿ö)
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-LOCAL MMI_RESULT_E HandlePukAlertWindowExceptPhone(
-                                                   MMI_WIN_ID_T     win_id,    // ´°¿ÚµÄID
-                                                   MMI_MESSAGE_ID_E    msg_id,         // ´°¿ÚµÄÄÚ²¿ÏûÏ¢ID
-                                                   DPARAM                      param           // ÏàÓ¦ÏûÏ¢µÄ²ÎÊý
-                                                   )
-{
-    MMI_RESULT_E result = MMI_RESULT_TRUE;
-    
-    switch (msg_id)
-    {
-    case MSG_APP_RED://puk½çÃæ´æÔÚ£¬red and flip²»ÔÊÐí·µ»Ø
-        if (MMK_IsOpenWin(MMI_PUK_INPUTING_WIN_ID))
-        {
-            MMK_CloseWin(win_id);
-        }
-        else
-        {
-            result = MMI_RESULT_FALSE;
-        }
-        break;
-
-#ifdef FLIP_PHONE_SUPPORT  //close flip ring codes, just open for flip phone.
-    case MSG_APP_FLIP:
-        if (MMK_IsOpenWin(MMI_PUK_INPUTING_WIN_ID))
-        {
-            MMIDEFAULT_HandleFlipKey(FALSE);
-            MMK_CloseWin(win_id);
-        }
-        else
-        {
-            result = MMI_RESULT_FALSE;
-        }
-        break;
-#endif
-        
-    default:
-        result = MMIPUB_HandleAlertWinMsg(win_id,msg_id,param);
-        break;
-    }
-    
-    return (result);
-}
 
 /*****************************************************************************/
 //     Description : ´¦Àínew pin INPUTINGµÄÏûÏ¢,³ýÈ¥¿ª¹Ø»úreponse PINµÄÇé¿ö
@@ -2346,54 +1342,6 @@ LOCAL void HandleOperatePinAndNewPin(
     MMIPUB_OpenWaitWin(1,&wait_text,PNULL,PNULL,PHONE_PIN_WAIT_WIN_ID,IMAGE_NULL,
         ANIM_PUBWIN_WAIT,WIN_ONE_LEVEL,MMIPUB_SOFTKEY_NONE,PNULL);
 }
-/*****************************************************************************/
-//     Description : Get Pin/PUK Remain string
-//     Global resource dependence : 
-//  Author: wancan.you
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIPHONE_GetPinPukRemainStr(MN_DUAL_SYS_E dual_sys,
-                                                                                    MMI_STRING_T *pin_puk_str_ptr,
-                                                                                    MNSIM_PIN_INDICATION_E pin_ind,
-                                                                                    BOOLEAN chv_is_blocked)
-{
-    uint16 pin_puk_remain = 0;
-    MMI_STRING_T remain_str = {0};
-    MMI_STRING_T times_str = {0};
-    uint8 pin_puk_remain_ptr[MMIPHONE_MAX_PIN_PUK_REMAIN_TIMES + 3] = {0};
-    uint16 length = 0;
-
-    if(PNULL == pin_puk_str_ptr)
-    {
-        //SCI_TRACE_LOW:"HandleOperatePukAndNewPin  pin_puk_str_ptr is NULL"
-        SCI_TRACE_ID(TRACE_TOOL_CONVERT,MMIPHONE_WINTAB_2967_112_2_18_2_45_34_236,(uint8*)"");
-        return;
-    }
-
-    pin_puk_remain = MNSIM_GetPinOrPukFalseRemainEx(dual_sys, pin_ind, chv_is_blocked);
-
-    //SCI_TRACE_LOW:"MMI_PHONE: pin_puk_remain=%d"
-    SCI_TRACE_ID(TRACE_TOOL_CONVERT,MMIPHONE_WINTAB_2973_112_2_18_2_45_34_237,(uint8*)"d", pin_puk_remain);
-
-    MMI_GetLabelTextByLang(TXT_PIN_PUK_REMAIN, &remain_str);
-    MMI_GetLabelTextByLang(TXT_PIN_PUK_TIMES, &times_str);
-
-    sprintf((char *)pin_puk_remain_ptr, " %d ", pin_puk_remain);
-
-    length = strlen( (char *)pin_puk_remain_ptr );
-
-    pin_puk_str_ptr->wstr_ptr = SCI_ALLOC_APPZ((remain_str.wstr_len + length + times_str.wstr_len) * sizeof(wchar));
-    //SCI_MEMSET(pin_puk_str_ptr->wstr_ptr, 0x00, ((remain_str.wstr_len + length + times_str.wstr_len) * sizeof(wchar)));
-
-    MMI_WSTRNCPY(pin_puk_str_ptr->wstr_ptr, remain_str.wstr_len, remain_str.wstr_ptr, remain_str.wstr_len, remain_str.wstr_len);
-    pin_puk_str_ptr->wstr_len = remain_str.wstr_len;
-    
-    MMI_STRNTOWSTR( pin_puk_str_ptr->wstr_ptr+pin_puk_str_ptr->wstr_len, length, (uint8 *)pin_puk_remain_ptr, MMIPHONE_MAX_PIN_PUK_REMAIN_TIMES, length );
-    pin_puk_str_ptr->wstr_len += length;
-    
-    MMI_WSTRNCPY((pin_puk_str_ptr->wstr_ptr+pin_puk_str_ptr->wstr_len), times_str.wstr_len, times_str.wstr_ptr, times_str.wstr_len, times_str.wstr_len);
-    pin_puk_str_ptr->wstr_len += times_str.wstr_len;
-}
 
 /*****************************************************************************/
 //     Description : HandlePoweroffQueryWin
@@ -2460,23 +1408,7 @@ PUBLIC void MMIPHONE_OpenQueryPowerOff(MMIPHONE_QUERY_POWER_OFF_TYPE_E query_typ
     }
 }
 
-/*****************************************************************************/
-//     Description : Open IMEI Display Win
-//     Global resource dependence : 
-//  Author: wancan.you
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_OpenIMEIDisplayWin(void)
-{
-    MMK_CreateWin((uint32*)MMIPHONE_DISPLAY_IMEI_WIN_TAB, PNULL);
-}
 
-/*****************************************************************************/
-//  Description : Append IMEI Detail
-//  Global resource dependence : none
-//  Author: wancan.you
-//  Note:
-/*****************************************************************************/
 LOCAL void AppendIMEIDetail(MMI_CTRL_ID_T ctrl_id)
 {
     uint16 index = 0;
@@ -3140,6 +2072,7 @@ PUBLIC  MMI_RESULT_E MMIAPIPHONE_OpenSelectSimWin(MMIPHONE_SELECT_SIM_DATA_T* se
     }
     return MMI_RESULT_TRUE;
 }//End of MMICOM_OpenSelectSimWin 
+#endif
 
 
 #endif
index f5d5842..52fa716 100644 (file)
@@ -10,7 +10,6 @@
 **--------------------------------------------------------------------------*/
 #include "sci_types.h"
 #include "mn_type.h"
-#include "mmi_text.h"
 #include "mmk_type.h"
 #include "mmi_signal.h"
 #include "mmi_signal_ext.h"
@@ -25,210 +24,12 @@ extern   "C"
 #endif
     
 
-#if 0 // def MMI_CUSTOM_AIGC_SUPPORT
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
 
-/**--------------------------------------------------------------------------*
-**                         MACRO DEFINITION                                 *
-    **--------------------------------------------------------------------------*/
-    // PIN, PUK ×î¶àºÍ×îÉÙ¸öÊý
-#define MMI_PIN_MIN_LENGTH  4
-#define MMI_PIN_MAX_LENGTH  8
-    
-#define MMI_PUK_MODIFY_PIN_MIN_LENGTH       20
-#define MMI_PUK_MODIFY_PIN_MAX_LENGTH       32
-#define MMI_PUK2_MODIFY_PIN2_MIN_LENGTH     21
-#define MMI_PUK2_MODIFY_PIN2_MAX_LENGTH     33
-    
-#define PHONE_PIN_BLOCKED_TIME              1000
-#define PHONE_ANIM_TIME_INTERVAL               500    // ÒÔºÁÃëΪµ¥Î»µÄÖµ
-    
-#define PHONE_RX_BAT_LEVEL_SPAN                        20  
-//ref±¨ÉϵçÁ¿µÄ°Ù·Ö±È£¬·Ö±ð±¨ÉÏ0£¬20£¬
-//40£¬60£¬80, 100Áù¸öµÈ¼¶¡£
-//ĿǰΪÁù¸öµÈ¼¶ÉÏÃæÎå¸öµÈ¼¶·Ö±ð¶ÔÓ¦12345¸ñ£¬
-//µ±±¨ÉÏwarningÐźÅʱ£¬ÐźÅÁ¿±ä³É¿Õ£¡
-    
-    // ÓÃÓÚÅжÏÊäÈëµÄλÊýÊÇ·ñÕýÈ·¡£
-#define PIN_LEN_IS_IN_RANGE(_LEN)               \
-    ((MMI_PIN_MIN_LENGTH <= (_LEN))         \
-    && (MMI_PIN_MAX_LENGTH >= (_LEN)))
-    
-    // ÓÃÓÚÅжÏÊäÈëµÄPUK modify PINλÊýÊÇ·ñÕýÈ·¡£
-#define PUK_MODIFY_PIN_LEN_IS_IN_RANGE(_LEN)            \
-    ((MMI_PUK_MODIFY_PIN_MIN_LENGTH <= (_LEN))      \
-    && (MMI_PUK_MODIFY_PIN_MAX_LENGTH >= (_LEN)))
-    
-    // ÓÃÓÚÅжÏÊäÈëµÄPUK modify PINλÊýÊÇ·ñÕýÈ·¡£
-#define PUK2_MODIFY_PIN2_LEN_IS_IN_RANGE(_LEN)            \
-    ((MMI_PUK2_MODIFY_PIN2_MIN_LENGTH <= (_LEN))      \
-    && (MMI_PUK2_MODIFY_PIN2_MAX_LENGTH >= (_LEN)))
-    
-
-#define MAX_ACI_INFO_LEN     3
-
-#define MMIPHONE_MAX_OPER_NAME_LEN  (MAX_ACI_INFO_LEN + MAX_ONSHORTFORM_LEN + MN_SPN_ID_NUM_LEN + 2) //opn_spn
-
-/**--------------------------------------------------------------------------*
-**                         TYPE AND CONSTANT                                *
-**--------------------------------------------------------------------------*/
-       
-// ¸ù¾ÝREFÉ趨µÄ¿ª»úÌõ¼þ 
-typedef enum
-{
-    STARTUP_NONE,
-    STARTUP_NORMAL,
-    STARTUP_ALARM,
-    STARTUP_CHARGE,
-    STARTUP_ASSERT,
-    STARTUP_MAX
-}PHONE_STARTUP_CONDITION_E;
-
-
-// ¼Ç¼µ±Ç°ÍøÂçµÄ״̬¡£
-typedef struct
-{
-    uint8 rssiLevel;
-    BOOLEAN is_first_rssi;
-    uint8 batteryLevel;
-    BOOLEAN isInCharging;
     
-    BOOLEAN isRoaming;    // if plmn is roaming plmn
-    BOOLEAN is_slecting;  // 
-    MN_PLMN_T plmn;
-    uint16 lac;
-    uint16 cell_id;
-    MN_PHONE_PLMN_STATUS_E plmn_status;  // plmn statue        
-    BOOLEAN gprs_support;
-    BOOLEAN mbms_support;              //TRUE means support
-    BOOLEAN edge_support;              //TRUE means support
-    BOOLEAN hsdpa_support;             //TRUE means support
-    BOOLEAN hsupa_support;             //TRUE means support, always FALSE for Tianlong R5    
-
-    /*the following item is added for report operators's name*/
-    MMI_GMMREG_RAT_E rat;
-}PHONE_SERVICE_STATUS_T;
-
-
-/**--------------------------------------------------------------------------*
-**                         FUNCTION DEFINITION                              *
-**--------------------------------------------------------------------------*/
-/*****************************************************************************/
-//     Description : Õý³£¿ª»ú½çÃæµÄ³õʼ»¯
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_NormalInit(void);
-
-/*****************************************************************************/
-//     Description : Õý³£¿ª»úÊäÈ뿪»úÃÜÂëºó½çÃæµÄ³õʼ»¯
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_NormalInitAfterPwd(void);
-
-/*****************************************************************************/
-//     Description : ÄÖÁåÆô¶¯¿ª»ú½çÃæµÄ³õʼ»¯
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_AlarmInit(void);
-
-/*****************************************************************************/
-//     Description : ³äµçÆô¶¯¿ª»ú½çÃæµÄ³õʼ»¯
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_ChargeInit(void);
-
-/*****************************************************************************/
-//     Description : init the phone application
-//     Global resource dependence : g_service_status,g_phone_app
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_AppInit(void);
-PUBLIC void MMIAPIPHONE_SetNetworkSSCFUFlag(BOOLEAN state);
-
-
-/*****************************************************************************/
-//     Description : power off
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_PowerOff(void);
-
-/*****************************************************************************/
-//     Description : power off directly
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note: sometimes we should poweroff directly
-/*****************************************************************************/
-void MMIAPIPHONE_PowerOffEx(void);
-
-/*****************************************************************************/
-//     Description : power reset the phone should de_init the BT
-//     Global resource dependence : 
-//  Author: kelly.li
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_PowerReset(void);
-
-/*****************************************************************************/
-//     Description : Sim¿¨ÊÇ·ñOK£¬°üÀ¨PS
-//     Global resource dependence : 
-//  Author:ycd / michael
-//     Note:  SIM OK µÄ״̬: 'SIM_STATUS_OK' and 'PS_Ready_Normal' and '!fly_Mode'
-//     Pay attention to this interface used,should better considered MMIAPIPHONE_IsSimAvailable 
-/*****************************************************************************/
-PUBLIC BOOLEAN MMIAPIPHONE_IsSimOk(MN_DUAL_SYS_E dual_sys);
-
-/*****************************************************************************/
-//     Description : Sim¿¨ÊÇ·ñOK£¬°üÀ¨PS
-//     Global resource dependence : 
-//  Author:dave.ruanl
-//     Note:  this for push mail lib func
-/*****************************************************************************/
-PUBLIC BOOLEAN MMIPHONE_IsSimOk(MN_DUAL_SYS_E dual_sys);
-
-/*****************************************************************************/
-//     Description : Sim¿¨ÊÇ·ñ¿ÉÓÃ
-//     Global resource dependence : 
-//  Author: Michael.shi
-//     Note:  SIM ¿¨ÊÇ·ñ¿ÉÓõÄÅжÏÌõ¼þ : sim ¿¨´æÔÚ²¢ÇÒ´¦ÓÚ´ý»úÉèÖã¡£¡
-/*****************************************************************************/
-PUBLIC BOOLEAN MMIAPIPHONE_IsSimAvailable(MN_DUAL_SYS_E dual_sys);
-
-/*****************************************************************************/
-//     Description : Sim¿¨ÊÇ·ñOK£¬²»°üÀ¨PS
-//     Global resource dependence : 
-//  Author: michael
-//     Note:  SIM Card OK µÄ״̬°üÀ¨Á½ÖÖ: SIM_STATUS_OK / SIM_STATUS_REGISTRATION_FAILED
-/*****************************************************************************/
-PUBLIC BOOLEAN MMIAPIPHONE_IsSimCardOk(MN_DUAL_SYS_E dual_sys);
-
-/*****************************************************************************/
-//     Description : »ñµÃsim card״̬
-//     Global resource dependence : 
-//  Author:
-//     Note:  
-/*****************************************************************************/
-PUBLIC SIM_STATUS_E MMIAPIPHONE_GetSimStatus(MN_DUAL_SYS_E dual_sys);
-PUBLIC BOOLEAN MMIAPIPHONE_GetSimExistedStatusEx(MN_DUAL_SYS_E dual_sys);
-
 
-/*****************************************************************************/
-//  Description : init a virtual window
-//  Global resource dependence : 
-//  Author:
-//  Note:
-/*****************************************************************************/
-PUBLIC void MMIAPIPHONE_VirtualWinInit(void);
 
+PUBLIC void MMIAPIAIGC_EnterWin(void);
 
 
 #endif
index daaabbd..a271be6 100644 (file)
 #endif
 
 
-#if 0 // def MMI_CUSTOM_AIGC_SUPPORT
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
 
-/*****************************************************************************/
-//     Description : power off MS
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIPHONE_PowerOff(void);
+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,
+       
+       MMI_AIGC_UI_STATE_MAX
+}MMI_AIGC_UI_STATE_E;
 
-/*****************************************************************************/
-//     Description : ÉèÖÃsim card״̬
-//     Global resource dependence : 
-//  Author:
-//     Note:  
-/*****************************************************************************/
-PUBLIC void MMIPHONE_SetSimStatus(MN_DUAL_SYS_E dual_sys, SIM_STATUS_E sim_status);
 
-/*****************************************************************************/
-//     Description : Get Pin/PUK Remain string
-//     Global resource dependence : 
-//  Author: wancan.you
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIPHONE_GetPinPukRemainStr(MN_DUAL_SYS_E dual_sys,
-                                                                                    MMI_STRING_T *pin_puk_str_ptr,
-                                                                                    MNSIM_PIN_INDICATION_E pin_ind,
-                                                                                    BOOLEAN chv_is_blocked);
+typedef enum
+{
+    STARTUP_NONE,
+    STARTUP_NORMAL,
+    STARTUP_ALARM,
+    STARTUP_CHARGE,
+    STARTUP_ASSERT,
+    STARTUP_MAX
+}__STARTUP_CONDITION_E;
 
-/*****************************************************************************/
-//     Description : open query power off 
-//     Global resource dependence : 
-//  Author: wancan.you
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIPHONE_OpenQueryPowerOff(MMIPHONE_QUERY_POWER_OFF_TYPE_E query_type);
 
+// ¼Ç¼µ±Ç°ÍøÂçµÄ״̬¡£
+typedef struct
+{
+    uint8 rssiLevel;
+    BOOLEAN is_first_rssi;
+    uint8 batteryLevel;
+    BOOLEAN isInCharging;
+    
+    BOOLEAN isRoaming;    // if plmn is roaming plmn
+    BOOLEAN is_slecting;  // 
+    MN_PLMN_T plmn;
+    uint16 lac;
+    uint16 cell_id;
+    MN_PHONE_PLMN_STATUS_E plmn_status;  // plmn statue        
+    BOOLEAN gprs_support;
+    BOOLEAN mbms_support;              //TRUE means support
+    BOOLEAN edge_support;              //TRUE means support
+    BOOLEAN hsdpa_support;             //TRUE means support
+    BOOLEAN hsupa_support;             //TRUE means support, always FALSE for Tianlong R5    
 
-/*****************************************************************************/
-//     Description : get opn display string
-//     Global resource dependence : 
-//  Author: kun.yu
-//     Note:  
-/*****************************************************************************/
-PUBLIC void MMIPHONE_GetAciString(PHONE_SERVICE_STATUS_T *service_status,//IN:
-                                         MMI_STRING_T *aci_str_ptr, //OUT
-                                         uint16 max_aci_len //IN
-                                         );
+}__SERVICE_STATUS_T;
 
-/*****************************************************************************/
-//     Description : cat opn spn display string
-//     Global resource dependence : 
-//   Author: kun.yu
-//     Note:  
-/*****************************************************************************/
-PUBLIC void MMIPHONE_CatAciOpnSpnString(MMI_STRING_T *aci_str_ptr,//IN 
-                                                MMI_STRING_T *opn_str_ptr,//IN:
-                                                MMI_STRING_T *spn_str_ptr,//IN:
-                                                MMI_STRING_T *network_str_ptr//OUT
-                                                );
 
-/*****************************************************************************/
-//     Description : get the status of battery(if it is charging)
-//     Global resource dependence : 
-//  Author: Jassmine
-//     Note:
-/*****************************************************************************/
-PUBLIC BOOLEAN MMIPHONE_GetChargeStatus(void);
 
-/*****************************************************************************/
-//     Description : init nitz info
-//     Global resource dependence : none
-//    Author: dave.ruan
-//     Note:
-/*****************************************************************************/
-PUBLIC void MMIPHONE_InitNITZ(void);
+void mmi_aigc_trans_websocket_open(void);
+
+void mmi_aigc_chat_websocket_open(void);
+
+void mmi_aigc_tts_websocket_open(void);
+
+void mmi_aigc_trans_websocket_close(void);
+
+void mmi_aigc_chat_websocket_close(void);
+
+void mmi_aigc_tts_websocket_close(void);
 
-/*****************************************************************************/
-//     Description : Store Network Name Info
-//     Global resource dependence : none
-//    Author: dave.ruan
-//     Note:only update and store network name, do not Parse name string 
-/*****************************************************************************/
-PUBLIC MMI_RESULT_E MMIPHONE_StoreNetworkNameInfo(const APP_MN_NETWORK_INFO_IND_T *network_info_ind);
 
-/*****************************************************************************/
-//     Description : get NV Network Name Info
-//     Global resource dependence : none
-//    Author: dave.ruan
-//     Note:
-/*****************************************************************************/
-PUBLIC MMIPHONE_NV_NETWORK_NAME_T* MMIPHONE_GetNVNetworkNameInfo(void);
 
 /*****************************************************************************/
-//     Description : deal with signal of APP_MN_NETWORK_INFO_IND
+//     Description : power off MS
 //     Global resource dependence : 
-//  Author: dave.ruan
-//     Note:store, update network name,and update mm nitz time£¬full nameºÍshort name
-//          ,Óëopn״̬Ïàͬ,ÔÚ´¦Àíopnʱ´æNV
+//  Author: Jassmine
+//     Note:
 /*****************************************************************************/
-PUBLIC MMI_RESULT_E MMIPHONE_HandleNetworkInfoInd(
-                                          DPARAM              param
-                                          );
+//PUBLIC void MMIPHONE_PowerOff(void);
+
 
 /*****************************************************************************/
-//     Description : get Network Name Info
-//     Global resource dependence : none
-//    Author: dave.ruan
+//     Description : get the status of battery(if it is charging)
+//     Global resource dependence : 
+//  Author: Jassmine
 //     Note:
 /*****************************************************************************/
-PUBLIC void MMIPHONE_InitNetworkNameInfo(void);
+//PUBLIC BOOLEAN MMIPHONE_GetChargeStatus(void);
 
 #endif
 
index 5983ce3..d0cea92 100644 (file)
@@ -9530,3 +9530,28 @@ RES_ADD_STRING(TXT_KEYLOCK_UNLOCKED,"Keypad unlocked")
 RES_ADD_STRING(TXT_KEYLOCK_LOCKED,"Keypad locked")
 #endif
 
+
+// aigc
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
+RES_ADD_IMG(ANIM_AIGC_LISTENING,"\\MMI_RES_##\\IMAG\\mmi_aigc\\ANIM_AIGC_LISTENING.gif",IMG_CMP_GIF_SCI,0)
+RES_ADD_IMG(ANIM_AIGC_THINKING,"\\MMI_RES_##\\IMAG\\mmi_aigc\\ANIM_AIGC_THINKING.gif",IMG_CMP_GIF_SCI,0)
+
+RES_ADD_IMG(IMAGE_AIGC_DEFAULT, "\\MMI_RES_##\\IMAG\\mmi_aigc\\IMAGE_AIGC_DEFAULT.png", IMG_CMP_PNG_ARGB_RLE, 0)
+RES_ADD_IMG(IMAGE_AIGC_RECORD_BUTTON_DEFAULT, "\\MMI_RES_##\\IMAG\\mmi_aigc\\IMAGE_AIGC_RECORD_BUTTON_DEFAULT.png", IMG_CMP_PNG_ARGB_RLE, 0)
+RES_ADD_IMG(IMAGE_AIGC_RECORD_BUTTON_PRESSED, "\\MMI_RES_##\\IMAG\\mmi_aigc\\IMAGE_AIGC_RECORD_BUTTON_PRESSED.png", IMG_CMP_PNG_ARGB_RLE, 0)
+RES_ADD_IMG(IMAGE_AIGC_PROMPT, "\\MMI_RES_##\\IMAG\\mmi_aigc\\IMAGE_AIGC_PROMPT.png", IMG_CMP_PNG_ARGB_RLE, 0)
+RES_ADD_IMG(IMAGE_AIGC_CANCEL_BUTTON, "\\MMI_RES_##\\IMAG\\mmi_aigc\\IMAGE_AIGC_CANCEL_BUTTON.png", IMG_CMP_PNG_ARGB_RLE, 0)
+
+
+RES_ADD_STRING(TXT_AIGC_ASSITANT,"Ai assitant")
+RES_ADD_STRING(TXT_AIGC_OPEN_FAIL,"Open failed\nPlease check network")
+RES_ADD_STRING(TXT_AIGC_CONVERSATION,"Conversation")
+RES_ADD_STRING(TXT_AIGC_LISTENING,"Listening")
+RES_ADD_STRING(TXT_AIGC_THINKING,"Thinking")
+RES_ADD_STRING(TXT_AIGC_TALK_FINISH,"Finish")
+RES_ADD_STRING(TXT_AIGC_TIMEOUT,"Timeout\nPlease try again")
+RES_ADD_STRING(TXT_AIGC_CONTINUE,"Continue")
+#endif
+
+
+
index 245e97e..39959ef 100644 (file)
@@ -243,3 +243,8 @@ WIN_ID_DEF(MMI_CHR_POWER_SAVE_QUERY_WIN_ID),
     WIN_ID_DEF(MMIKL_UNLOCK_TIP_WIN_ID),
 #endif 
 
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
+       WIN_ID_DEF(MMI_AIGC_MAIN_WIN_ID),
+#endif
+
+
index b4e5130..51522c1 100644 (file)
@@ -384,6 +384,16 @@ typedef enum
     MMIMMENUWIN_LIST_ANIM_CTRL_ID,
     MAINMENUWIN_ONEICON_ANIM_CTRL_ID,
 #endif
+#ifdef MMI_CUSTOM_AIGC_SUPPORT
+       MMI_AIGC_ANIM_CTRL_ID,
+       MMI_AIGC_TEXT_0_CTRL_ID,
+       MMI_AIGC_TEXT_1_CTRL_ID,
+       MMI_AIGC_TEXT_2_CTRL_ID,
+       MMI_AIGC_LABEL_0_CTRL_ID,
+       MMI_AIGC_LABEL_1_CTRL_ID,
+       MMI_AIGC_LABEL_2_CTRL_ID,
+       MMI_AIGC_LABEL_3_CTRL_ID,
+#endif
 
    TOTAL_CONTROL_ID_NUMBER         // ¿Ø¼þIDµÄ×ÜÊýÄ¿
 
diff --git a/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/ANIM_AIGC_LISTENING.gif b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/ANIM_AIGC_LISTENING.gif
new file mode 100644 (file)
index 0000000..ca881c6
Binary files /dev/null and b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/ANIM_AIGC_LISTENING.gif differ
diff --git a/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/ANIM_AIGC_THINKING.gif b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/ANIM_AIGC_THINKING.gif
new file mode 100644 (file)
index 0000000..8bde133
Binary files /dev/null and b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/ANIM_AIGC_THINKING.gif differ
diff --git a/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_CANCEL_BUTTON.png b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_CANCEL_BUTTON.png
new file mode 100644 (file)
index 0000000..de9d638
Binary files /dev/null and b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_CANCEL_BUTTON.png differ
diff --git a/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_DEFAULT.png b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_DEFAULT.png
new file mode 100644 (file)
index 0000000..2ecf59b
Binary files /dev/null and b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_DEFAULT.png differ
diff --git a/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_PROMPT.png b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_PROMPT.png
new file mode 100644 (file)
index 0000000..df210ce
Binary files /dev/null and b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_PROMPT.png differ
diff --git a/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_RECORD_BUTTON_DEFAULT.png b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_RECORD_BUTTON_DEFAULT.png
new file mode 100644 (file)
index 0000000..2f8f452
Binary files /dev/null and b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_RECORD_BUTTON_DEFAULT.png differ
diff --git a/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_RECORD_BUTTON_PRESSED.png b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_RECORD_BUTTON_PRESSED.png
new file mode 100644 (file)
index 0000000..80989d0
Binary files /dev/null and b/sdk/MS_MMI_Main/source/resource/mmi_res_240x320/common/MMI_RES_DEFAULT/IMAG/mmi_aigc/IMAGE_AIGC_RECORD_BUTTON_PRESSED.png differ