MTK623508B发短信流程

本文详细解析了手机短信界面的操作流程,从进入短信主菜单到发送短信的全过程,涉及多个屏幕显示与交互处理函数。

点击【短信】

1.       EntrySMSMainMenuList(void)

EntryNewScreen(SCR_ID_MSG_SMS_MAIN_MENU,mmi_msg_exit_generic, EntrySMSMainMenuList, NULL);

SetMessagesCurrScrnID(SCR_ID_MSG_SMS_MAIN_MENU);

    guiBuffer = GetCurrGuiBuffer(SCR_ID_MSG_SMS_MAIN_MENU);

    SetParentHandler(MESSAGES_MENU_SMS_MENUID);

    RegisterHighlightHandler(ExecuteCurrHiliteHandler);

ShowCategory52Screen(

        STR_SMS_MENUENTRY,

        IMG_SMS_ENTRY_SCRN_CAPTION,

        STR_GLOBAL_OK,

        IMG_SMS_COMMON_NOIMAGE,

        STR_GLOBAL_BACK,

        IMG_SMS_COMMON_NOIMAGE,

        numItems,

        nStrItemList,

        itemIcons,

        (U8 **) pPopUpList,

        0,

        0,

        guiBuffer);

---à ShowCategory323Screen()  

---à wgui_fixed_list_end_add_icontext_one_item()

---à fixed_list_goto_item_no_redraw(MMI_fixed_list_menu.highlighted_item);

---à gui_fixed_list_menu_goto_item(&MMI_fixed_list_menu, item_index);

---à gui_fixed_list_menu_switch_highlighted_item(m, last_highlighted_item);

---à m->item_highlighted(m->highlighted_item);(回调函数)

---à standard_list_highlight_handler(S32 item_index)

---à MMI_list_highlight_handler(item_index);  ==  ExecuteCurrHiliteHandler

---àExecuteCurrHiliteHandler_Ext(hiliteid);

---à (*currFuncPtr) ();  == HighlightWMessageHandler(void)

    ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_SMS_COMMON_NOIMAGE);

    ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_SMS_COMMON_NOIMAGE);

    SetLeftSoftkeyFunction(mmi_msg_pre_entry_write_new_msg, KEY_EVENT_UP);

    SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);

    SetKeyHandler(mmi_msg_pre_entry_write_new_msg, KEY_RIGHT_ARROW,KEY_EVENT_DOWN);

     dm_redraw_category_screen()   //end ShowCategory323Screen

以上进入到短信界面 (设置写短信,收件箱,发件箱,短信设置等)

2.       mmi_msg_pre_entry_write_new_msg(void)

     g_msg_cntx.sendMessageCase = SEND_CASE_SEND_ONLY;

       g_msg_cntx.PhbSmsInterfaceState = MMI_SEND_ONLY;

        mmi_msg_pre_entry_write_msg(SEND_MSG_CASE_WRITE_NEW_MSG);

        --à mmi_msg_entry_write_msg()

            EntryNewScreen(SCR_ID_MSG_WRITE, mmi_msg_exit_generic, mmi_msg_entry_write_msg, NULL);

            AlmDisableSPOF();  //禁止定时关机

ShowCategory28Screen(

STR_WMESSAGE_MENUENTRY,

IMG_SMS_ENTRY_SCRN_CAPTION,

STR_GLOBAL_OPTIONS,

IMG_SMS_COMMON_NOIMAGE,

STR_GLOBAL_BACK,

IMG_SMS_COMMON_NOIMAGE,

pEMS,

guiBuffer);

----> mmi_imm_input_mode_enum default_input_mode = IMM_INPUT_MODE_NONE;//输入法

SetLeftSoftkeyFunction(mmi_msg_entry_option_write, KEY_EVENT_UP);

SetCategory28RightSoftkeyFunction(mmi_msg_go_back_from_write_msg, KEY_EVENT_UP);

以上是进入到短信输入界面 包括输入法设置等

3.       mmi_msg_entry_option_write (void)

EntryNewScreen(SCR_ID_MSG_WRITE_OPTION, mmi_msg_exit_generic, mmi_msg_entry_option_write, NULL);

ShowCategory529Screen(

        STR_GLOBAL_OPTIONS,

        IMG_SMS_ENTRY_SCRN_CAPTION,

        STR_GLOBAL_OK,

        IMG_GLOBAL_OK,

        STR_GLOBAL_BACK,

        IMG_GLOBAL_BACK,

        numItems,

        nStrItemList,

        (U16*) gIndexIconsImageList,

        NULL,

        0,

        0,

        guiBuffer,

        ExecuteCurrHiliteHandler,

        Messages2GoBackHistory);

--à ShowCategory539Screen(

        title,

        title_icon,

        left_softkey,

        left_softkey_icon,

        right_softkey,

        right_softkey_icon,

        number_of_items,

        subMenuDataPtrs,

        list_of_icons,

        list_of_descriptions,

        flags,

        highlighted_item,

        history_buffer,

        f_highlight,

        f_close);

   wgui_inputs_options_menu_highlight_handler

   g_wgui_inputs_option_menu_ctx.highlight_handler(item_index);

---à (*currFuncPtr) ();  == mmi_msg_highlight_done(void)

mmi_msg_highlight_generic(

        STR_GLOBAL_OK,

        IMG_GLOBAL_OK,

        STR_GLOBAL_BACK,

        IMG_GLOBAL_BACK,

        mmi_msg_entry_send_option,

        GoBackHistory);

以上进入到编辑内容的设置(选择完成发送 插入其他内容等)

4.mmi_msg_entry_send_option(void)

   EntryNewScreen(SCR_ID_MSG_SEND_OPTION, mmi_msg_exit_generic, mmi_msg_entry_send_option, NULL);

   ShowCategory52Screen(

                                    STRING_MTPNP_MASTER_SEND_OPTIONS_CAPTION,

                                    IMG_SMS_ENTRY_SCRN_CAPTION,

                                    STR_GLOBAL_OK,

                                    IMG_GLOBAL_OK,

                                    STR_GLOBAL_BACK,

                                    IMG_GLOBAL_BACK,

                                    numItems,

                                    nStrItemList,

                                    (U16*) gIndexIconsImageList,

                                    NULL,

                                    0,

                                    0,

                                    guiBuffer);

---------à ShowCategory353Screen(

        (U8*) GetString(title),

        title_icon,

        left_softkey,

        left_softkey_icon,

        right_softkey,

        right_softkey_icon,

        number_of_items,

        subMenuDataPtrs,

        list_of_icons,

        list_of_descriptions,

        flags,

        highlighted_item,

        history_buffer);

      standard_list_highlight_handler

---à (*currFuncPtr) ();  == mmi_msg_highlight_send_only(void)

       mmi_msg_highlight_generic(

               STR_GLOBAL_OK,

               IMG_GLOBAL_OK,

              STR_GLOBAL_BACK,

              IMG_GLOBAL_BACK,

              mmi_msg_send_msg_to_only_entry,

              GoBackHistory);

以上进入界面 (单一发送 多人发送等)

5. mmi_msg_send_msg_to_only_entry(void)

  mmi_msg_send_msg_req((U8*)g_msg_cntx.smsPhoneNumber,MMI_FRM_SMS_INVALID_INDEX, 0)

--------à mmi_frm_sms_send_sms(mmi_msg_send_msg_rsp, MOD_MMI, sendData)

   ---à mmi_frm_sms_write_action(callback, mod_src, data, mmi_frm_sms_pre_send_sms)

         --à mmi_frm_sms_read_action()

              ---à (*currFuncPtr) (currFuncData);  == mmi_frm_sms_pre_send_sms(void *inMsg)

mmi_frm_sms_pre_send_sms(void *inMsg)

--à mmi_frm_sms_send_sms_req()

      /* 检测信息中心号码, 如果信息中心号码为空, 则先从NV中读取当前的配置文件,
这通过mmi_frm_sms_get_sc_addr_req函数中由MMI层向L4层发送
 PRT_MSG_ID_MMI_SMS_GET_PROFILE_PARAMS_REQ
指令来实现。*/

    (sendSMS->sendcheck & MMI_FRM_SMS_SC) != MMI_FRM_SMS_SC(第一次执行,再次执行)

sndSMS->profile保存当前配置文件的索引

/*check DA: show input screen, inMsg keeps the number*/

/* 检测目的地, 当目的地为空时,(1)如果设置MMI_FRM_SMS_NUM_SCR掩码,则进入短信目的号码编辑Screen,并取消MMI_FRM_SMS_NUM_SCR标记;(2)否则如果目的地号码为0并且没有设置回复短信标记掩码MMI_FRM_SMS_REPLY,则也进入号码编辑界面 */

mmi_frm_sms_entry_number();

---à EntryNewScreen(SCR_ID_MSG_NUMBER, NULL, mmi_frm_sms_entry_number, NULL);

    AlmDisableSPOF();   /* in case schedule power off in sending a message */

    ShowCategory5Screen()

    ClearKeyEvents();

    SetKeyHandler(mmi_frm_sms_entry_number_done, KEY_SEND, KEY_EVENT_DOWN);

    SetDelScrnIDCallbackHandler(SCR_ID_MSG_NUMBER, (HistoryDelCBPtr) mmi_frm_sms_handle_number_deleted);

    SetCategory5RightSoftkeyFunction(mmi_frm_sms_go_back_from_send, KEY_EVENT_UP);

    SetKeyHandler(mmi_frm_sms_end_key_from_send, KEY_END, KEY_EVENT_DOWN);

   SetDelScrnIDCallbackHandler(SCR_ID_MSG_NUMBER,(HistoryDelCBPtr)mmi_frm_sms_delete_history_from_send);

// 设置MMI_FRM_SMS_DA标记

mmi_frm_sms_start_send_sms()

----àmmi_frm_sms_entry_send();

    EntryNewScreen(SCR_ID_MSG_SENDING, NULL, mmi_frm_sms_entry_send, NULL);

    ShowCategory8Screen  --à ShowCategory66Screen

    mmi_frm_sms_send_sms_seg()

出现发送界面 并开始发送(成功返回到短信界面 不成功)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值