MTK 状态栏总结

 一、   状态栏

状态栏上所有显示的东西都在Wgui_status_icons.c文件中

Typedef struct _MMI_status_icon

{

         S32 x,y;                                   //在状态栏中显示的位置

         S32 width,height;                      //用于快速查找

         MMI_ID_TYPE icon_ID;           //图标ID

         U32 flag;                                  //用于控制状态栏图标显示的属性(显示1/不显示0/动画/闪烁)

         U8 states;                                 //对动画有效

         U8 group_ID;                            //这个优先级有啥用?

         U8 priority;                               //优先级,1,2,3..高优先级到低优先级

         PU8 icon_data;                          //

         S16 n_frames;                            //

         S16 current_frame;                      //动画图标

}MMI_status_icon; 

MMI_status_icon_icon MMI_status_icons[MAX_STATUS_ICONS]; //状态栏中所有要显示的图标都在次数组中定义

Typedef struct _MMI_status_icon_bar

{

         S32 x,y;

         U32 flags;

         S32 x1,y1,x2,y2;

         U8 group_ID;

         S16 n_icons;                                      //记录状态栏显示图片的数量

         S16 *icon_list;                                   //此指针指向待显示的图片

         Bitmap *graphics_context;

         U8 *layer_buffer;

         GDI_HANDLE layer_handle;

         MMI_BOOL rotate_flag_for_wap;

         ----------------------------------------

}MMI_status_icon_bar;    

 

MMI_status_icon_bars MMI_status_icon_bars[3];        //分别代表水平、垂直、SubLCD 的状态栏的初始坐标

Const S16 MMI_status_icons_pool1;                              //Main LCD图标ID,里面的值与MMI_status_icons[]中的内容有对应关系

Const S16 MMI_status_icons_pool2;

S16 MMI_status_icons_list1[MMI_N_STATUS_ICONS_LIST1];                            //存放当前状态栏要显示的图片

S16 MMI_status_icons_list2[MMI_N_STATUS_ICONS_LIST2];                            //存储Main LCD中垂直状态栏的图标ID

S16 MMI_status_icons_list3[MMI_N_STATUS_ICONS_LIST3];                            //存储Sub LCD中水平状态栏的图标ID

MMI_status_icon_bar MMI_status_icon_bars[MAX_STATUS_ICON_BARS];     //可定制的状态栏列表

 

在画完信号条、电池后,在进入else流程(画电池的分子)中判断,如果不是话电池,则画出动态图标

void IdleSetStatusIcon()

{
          ShowStatusIcon(STATUS_ICON_RING);
          UpdateStatusIcons();

}

Void wgui_status_icon_show_status_icons()                         //有状态改变的时候,显示相应图标的流程

{

          if(STATUS_ICON_SLAVE_SIGNAL_STRENGTH )

          {

                   绘制SIM2卡图标和显示信息

          }

          else if (STATUS_ICON_SIGNAL_STRING)

          {

                  绘制SIM1卡图标和显示文字

          }

          else

          {

                   绘制电池图标--

                   绘制动态显示图标(闹钟、耳塞)--

          }

}
状态栏包含电池电量指示,信号指示,日期时间显示,运营商名字和各个状态图标显示。

网络运营商
         文件:Wgui_categories_idlescreen.c
         函数idle_screen_show_network_details() 调整网络运营商的名字坐标
电池电量显示:
         图标ID为STATUS_ICON_BATTERY_STRENGTH
         位于MainLCD\IdleScreen\Statusicons\battery 注意的是图标保证5帧。关于电量显示的控制位于文件PoweronCharger.c
函数BatteryStatusIndication 根据当前的电量值设置显示的帧数。

信号指示图标:
         图标ID 为 STATUS_ICON_SIGNAL_STRENGTH
         位于MainLCD\IdleScreen\Statusicons\signal
         文件 NetWorkFunctions.c
         函数ChangeStatusIconLevel根据当前的信号值设置显示的图片帧数。

时间和日期:
         文件:wgui_datetime.c
         函数:show_main_LCD_date_time.设置日期,星期,时间的显示坐标。
         注意的是:在函数hide_main_LCD_date_time中需要根据前面各个对象的坐标重新设置刷新区域的坐标。并且修改Wgui_categories_idlescreen.c下面的三个函数的注册函数(之前屏蔽的)
         set_main_LCD_dt_date_hide_function(cat33_hide_date_display);
         set_main_LCD_dt_time_hide_function(cat33_hide_time_display);
         set_main_LCD_day_hide_function(cat33_hide_day_string_display);
         为了正确的显示时间格式(用户选择12小时制,会增加AM/PM两个字母),在函数show_main_LCD_date_time. 时间显示的clip的地方增加格式判断 PhnsetGetTimeFormat()。根据所返回的时间格式,设定clip区域。


常用函数:

Gui_show_scrolling_text()                                         //此函数用来显示状态栏中滚动的字符串

Wgui_status_icon_arrange_status_icons();         //此函数当状态栏上显示的图片有变动时,才调用此函数。用来重新排序显示图片

根据传进来的icon_ID来计算出图片显示的位置

wgui_status_icon_show_status_icon();           //次函数根据传进来的icon_ID,将MMI_status_icons[icon_ID].flags设置为显示状态

wgui_status_icon_translate_pen_event();       //状态栏图标事件检测函数

wgui_status_icon_translate_pen_position();  //状态栏图标触笔位置检测函数

wgui_status_icon_hide_status_icon();             //隐藏状态栏图标 – 将状态栏刷黑或刷透明

mmi_bootup_is_uim_removed()                       //UIM卡是否被拆下,如拆下返回true

GetUIMCardIsOpenFlag()                                    //UIM卡是否被打开,如打开返回1

changeStatusIconImage()                                   //

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值