文档详情

《《Iphone PhoneBook(iphone 电话本 MTK)》.doc

发布:2015-09-27约1.85万字共15页下载文档
文本预览下载声明
PhoneBook 一、PhoneBook的流程分析 查看MTK文档,PhoneBook主界面的入口函数是mmi_phb_entry_main_menu,因此需要找到这个函数,然后找到PhoneBook主界面的创建处。 1、首先在mmi_phb_entry_main_menu()函数处断下 直接F5进来,来到了第一个函数: MMI_TRACE(MMI_PHB_TRACE_GROUP, TRC_MMI_PHB_ENTRY_MAIN_MENU); 这个函数暂且不管,没有时间,估计是跟踪消息的。 接下来就到了这个函数,看意思是里面的界面元素是否准备好,不妨跟踪进去 if (!mmi_phb_check_ready(MMI_TRUE)) { return; } 跟踪进来发现函数描述是“测试电话本是否准备就绪”;其中的主要判断函数是: MTPNP_PFAL_Phb_IsReady() == MTPNP_FALSE 进过看看这个变量的定义: typedef enum { MTPNP_FALSE = 0, MTPNP_TRUE = 1 } MTPNP_BOOL; 下面来进入这个函数来看看 MTPNP_BOOL MTPNP_PFAL_Phb_IsReady(void) { MTPNP_BOOL SlaveEffect; if (MTPNP_PFAL_Is_Card2Absent() || MTPNP_AD_Get_Card2Status() == MTPNP_AD_SIMCARD_INVALID || MTPNP_AD_Get_Card2Status() MTPNP_AD_SIMCARD_VALID) { SlaveEffect = MTPNP_TRUE; } else { SlaveEffect = MTPNP_AD_ADN_SIM2_Is_LoadFinished(); } if (g_phb_cntx.phb_ready !g_phb_cessing SlaveEffect) { return MTPNP_TRUE; } else { return MTPNP_FALSE; } } 都是一些状态的判断,这里就不管了。接着mmi_phb_entry_main_menu函数讲。 中间过了几个函数,不是我们所关心的,下面直接来到函数: mmi_phb_quick_search_list_pre_entry(); 看名字也知道是很重要的,跟进: mmi_phb_entry_quick_search_list(); 这个是主要的函数。跟进来到的第一个函数就是: EntryNewScreen( SCR_ID_PHB_QUICK_SEARCH_LIST, mmi_phb_exit_quick_search_list, mmi_phb_quick_search_list_pre_entry, MMI_FULL_SCREEN); 接着保存屏幕历史机制: guiBuffer = GetCurrGuiBuffer(SCR_ID_PHB_QUICK_SEARCH_LIST); RegisterHighlightHandler(mmi_phb_quick_search_get_index); 这个是注册高亮处理,里面应该是处理函数,通过对mmi_phb_quick_search_get_index函数的断点发现,每次点击菜单子项都会高亮,并在相应事件的时候断下。 注册搜索函数: RegisterCat200SearchFunction(mmi_phb_quick_search_find_entry); 这个函数非常重要,通过我对mmi_phb_quick_search_find_entry下断点,发现,只要输入框中的字符串有变化(包括输入和删除),那么这个函数就被执行,可见这个函数对我有多主要。 void RegisterCat200SearchFunction(S32(*search_function) (U8 *)) { if (search_function) { cat200_search_function = search_function; } } 跟踪到内部发现RegisterCat200SearchFunction函数是对搜索函数做了一次封装,而被封装的函数的命名又是与200有关,这不仅让我汗颜,M
显示全部
相似文档