1,IDLE窗口是由两个层组成,一个是基层,一个是墙纸层,这一点可以使用gdi_layer_get_blt_layer_ext函数来获取当前窗口的层,所以如果我们需要创建新层,只能使用gdi_layer_create_using_outside_memory从外部Memoyr创建。
2.IDLE的代码由于改动的人多,看起来或者维护起来总是让人感觉那么的不爽,但一般情况下,最好不要尝试重写一个IDLE,可以在老的IDLE上修改。有很多变量都在IDLE上初始化,刷新,回调都在这个窗口,除非你对他足够了解,否则会可能会因为漏掉什么东西而导致难以预料的错误
3.IDLE显示的内容大概包括状态栏,运营商名字,日期时间,歌词显示,FM显示,快捷按钮等内容,如果你需要重新设计,请不要漏掉应该显示的内容。
4.记住一些IDLE内容的位置信息有时可能是很重要的,至少可以使你的工作效率提高很多。同时注意的修改时请在原函数里修改,这样可以节约别人的时间。
5.网络运营商2的位置在idle_screen_show_card2_network_name里修改
6.网络运营商1的位置在idle_screen_show_network_name中修改
7歌词等一些内容的位置在idle_screen_show_network_details里修改
8日期时间在DrawDateTimeImage里修改
9.mmi_idle_entry_dual_sim_root_screen()函数中,MTPNP_AD_Get_Card1Status(),MTPNP_AD_Get_Card2Status()函数分别用来判断卡1,卡2是否存在。
MTPNP_AD_Get_Startup_Mode()函数用来获取当前的模式。
这是飞行模式进入idle的函数:mmi_idle_entry_dual_sim_root_screen-->EntryIdleScreen--> EntryFlightModeIdleScreen
其他模式进入:mmi_idle_entry_dual_sim_root_screen-->EntryIdleScreen--> mmi_idle_entry_idle_screen
ShowCategory33Screen函数中会执行一个回调dm_category_33_controlled_area-->idle_screen_show_network_details(运营商信息显示在这个函数)。
有三个全局变量idle_screen_network_name(eg:"查找","可打紧急电话")、g_slave_idle_screen_line1text、g_slave_idle_screen_line2text,
IdleRefreshServiceIndicationArea-->SetLine1Text(gNWProviderName)==SetIdleScreenNetworkName(gNWProviderName)函数对idle_screen_network_name进行赋值。
MTPNP_PFAL_Show_Idle_NW_Register||MTPNP_PFAL_Show_Idle_Card2Closed-->SetLine3Text(g_slave_nw_providername)函数对g_slave_idle_screen_line1text进行赋值。
idle_screen_show_network_details-->idle_screen_show_network_name 显示idle_screen_network_name
idle_screen_show_network_details-->idle_screen_show_card2_network_name 显示g_slave_idle_screen_line1text
g_slave_idle_screen_line2text的值一般为空。