点击【短信】
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()
出现发送界面 并开始发送(成功返回到短信界面 不成功)
本文详细解析了手机短信界面的操作流程,从进入短信主菜单到发送短信的全过程,涉及多个屏幕显示与交互处理函数。
1431

被折叠的 条评论
为什么被折叠?



