今天实现tab页形式的通话记录tab页图标的修改,即高亮的图标与非高亮时的图标不同。而MTK默认形式为高亮,非高亮为同一图标,只不过高亮时图标位置稍稍上移以突显出 高亮。此问题看似不难,而对刚接触tab页形式的MTK新手来说,也不易。于是我一点一点的分析tab图标的来源和去处。终于找到正解:
我发现了一个至关重要的变量g_tab_bar_items_p,它用于保存tab页相关信息,它的定义如下:
并将最终将信息传递给变量MMI_tab_bar_items用于创建最终的tab页。至于其中的来龙去脉,看我慢慢道来:
① 在函数mmi_advmix_entry_tab_call_log_list中通过函数mmi_advmix_fill_call_log_tab构建tab页信息,保存于临时变量tab_pages_info_array中。
② 通过参数的不断传递,通过函数mmi_frm_set_tab_bar_items将变量tab_pages_info_array信息保存于变量g_tab_bar_items_p中。
③ 在模板FTN_ShowCategory92Screen中通过函数mmi_frm_get_tab_bar_items从变量g_tab_bar_items_p中获得tab页信息保存于变量MMI_tab_bar_items中。
④ 函数wgui_create_horizontal_tab_bar运用变量MMI_tab_bar_items中的信息创建tab页。
整个过程便是如此,那么我要修改tab的信息必须做两处修改:
(1) 初始化修改,即在函数mmi_advmix_fill_call_log_tab中修改。另外两个函数mmi_slave_chist_fill_call_log_tab和mmi_chist_fill_call_log_tab修改类似。
修改如下:
(2) 动态修改,在构建tab页完成后,移动左右方向键更换高亮tab页之前修改。即在左右方向键响应函数中,函数mmi_frm_set_cur_sel_page之前做修改。这里封装了两个函数,即左方向键修改tab页函数和右方向键修改tab页函数。它们分别如下:
可以看出上面两处修改都修改了变量g_tab_bar_items_p,这样才能在以后的tab页构建过程中起作用。