您的位置:首页 > 编程语言

MTK – 6253平台10A短信代码笔记

2011-12-02 14:51 169 查看
IN: MTK
23二2011
短信息菜单的设置函数
ADD_APPLICATION_MENUITEM_HILITE_HANDLER( MAIN_MENU_MESSAGES_MENUID, highlight_mainmenu_messages );
highlight_mainmenu_messages进入后为:
set_main_menu_softkey_handler(mmi_um_entry_main_message_menu, handle_mainmenu_right_softkey_up);
mmi_um_entry_main_message_menu为左键函数,也就是入口函数,
handle_mainmenu_right_softkey_up为右键返回函数。
mmi_um_entry_main_message_menu进入后为:
scrn_id = mmi_um_ui_if_entry_main_msg(0); //这个函数是获取信息主界面ID, ID值会从1开始增加,每次进入信息主界面,ID加1
mmi_um_ui_ut_send_init_event(scrn_id);//
对这个函数进行分析,里面起作用的语句为:
result = g_um_ui_p->cc_cntx.scrn_table[i].event_hdlr(scrn_id, (U16)event, arg);
这些所有的代码都关系到全局变量g_um_ui_p,
mmi_um_ui_cntx_struct *g_um_ui_p = &g_um_ui_cntx;
typedef struct
{
mmi_um_ui_setting_struct setting; /* Record the current UI setting */包含 scrn
mmi_um_ui_cc_cntx_struct cc_cntx; /* Central control table */
} mmi_um_ui_cntx_struct;
这个全局变量g_um_ui_p的初始化函数为:mmi_um_ui_init,但是在这个init函数里,只对结构体中的setting做了初始化,
cc_cntx的赋值在其他地方,系统通过mmi_um_ui_cc_create_scrn_cntx这个函数对cc_cntx进行赋值。
这个函数被调用的地方:
result = mmi_um_ui_cc_create_scrn_cntx(&setting, mmi_um_ui_sh_main_msg_init);
也就是setting在函数内被定义,赋值,然后马上就传给了后面的函数比如上面的mmi_um_ui_sh_main_msg_init
进入短信菜单调用顺序:
mmi_um_entry_main_message_menu
scrn_id = mmi_um_ui_if_entry_main_msg(0);(setting.event_hdlr = mmi_um_ui_sh_main_msg_event_hdlr;)
(对event_hdlr赋值,调用mmi_um_ui_sh_main_msg_init)
mmi_um_ui_sh_main_msg_init
(fsm_setting.scrn_callback_hdlr = mmi_um_ui_sh_main_msg_fsm_cb;)
mmi_um_ui_fsm_el_init(&(scrn_cntx->fsm), fsm_setting);
(fsm_cntx->event_hdlr = mmi_um_ui_fsm_el_event_hdlr;)
event_process_result =
(*g_um_ui_fsm_el_event_table[event][fsm_cntx->cntx.fsm_entry_list.state])(fsm_cntx, arg);
mmi_um_ui_ut_send_init_event(scrn_id);
mmi_um_ui_cc_send_event (event = 0)
result = g_um_ui_p->cc_cntx.scrn_table[i].event_hdlr(scrn_id, (U16)event, arg);
即调用mmi_um_ui_sh_main_msg_event_hdlr (event_hdlr)
(fsm_event = mmi_um_ui_ut_get_fsm_event_by_ui_event(event);)
(result = scrn_cntx->fsm.event_hdlr(scrn_id, fsm_event, arg);)
即调用mmi_um_ui_fsm_el_event_hdlr
(*g_um_ui_fsm_el_event_table[event][fsm_cntx->cntx.fsm_entry_list.state])(fsm_cntx, arg);
即调用全局数组函数g_um_ui_fsm_el_event_table中的函数
mmi_um_ui_sh_main_msg_fsm_cb([0][0])([2][4])
mmi_um_ui_sh_create(mmi_um_ui_sh_main_msg_entry, (void *)scrn_cntx);
入口函数即:mmi_um_ui_sh_main_msg_entry
这个函数进来后,设置了显示要用的title、softkey、菜单、string,icon等,
其显示函数为mmi_um_ui_aprc_53_draw 和mmi_um_ui_aprc_53_redraw
显示函数在mmi_um_ui_aprc_set_cntx这个函数中被设置,这个函数是在mmi_um_ui_sh_main_msg_init中调用到的
收件箱、发件箱等用的是MMI_UM_UI_SCRN_TYPE_FOLDER对应显示函数为:
mmi_um_ui_aprc_263_draw
mmi_um_ui_aprc_263_redraw
收件箱入口函数:mmi_um_ui_sh_main_msg_entry_inbox
发件箱入口函数:mmi_um_ui_sh_main_msg_entry_outbox
新短信息的最开始入口:void mmi_msg_new_msg_ind(srv_sms_event_new_sms_struct* event_info)
不是界面入口函数,而是事件入口,如果要截获短信息,应该在这里进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: