MTK – 6253平臺10A短信代碼筆記

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)
不是界面入口函數,而是事件入口,如果要截獲短信息,應該在這裏進行處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章