MTK6225-狀態列圖示的顯示與隱藏
enum STATUS_ICON_LIST中,定義了一系列的ICON。
陣列:MMI_status_icon MMI_status_icons[MAX_STATUS_ICONS]裡,定製status icons。
結構體:
typedef struct _MMI_status_icon
{
S32 x, y;
S32 width, height;
MMI_ID_TYPE icon_ID;
U32 flags;
U8 state;
U8 group_ID;
U8 priority;
PU8 icon_data;
S16 n_frames;
S16 current_frame;
} MMI_status_icon;
x,y--------ICON的位置。
例如: 訊號IMG_SI_SIGNAL_STRENGTH(x,y)=(1,2)
電池IMG_SI_BATTERY_STRENGTH(x,y)=(111,4)
簡訊IMG_SLSI_SMS_INDICATOR(x,y)=(11,2)
如果設定成(0,0),表示自動計算位置。only valid with Icon bars having STATUS_ICON_BAR_ARRANGE_XXXXXXXX
width, height—固定:(0,0)
FLAGS--------- Set status icon specific flags here
STATE---------- Set the default state of a multi-state status icon here(預設狀態,針對有多種而言)
GROUP---------ICON分組。0 = Icon is not grouped
PRIORITY------ Set the status icon priority here.當很多個ICONs需要在同一個位置顯示時,就按照
優先順序來決定SHOW哪個ICON。
IMAGE----------Pointer to Icons image data. Autocalculated. Always set to NULL
NFRAMES--------Number of frames in the image. Autocalculated. Always set to 0
幾個IDLE介面的有關ICON函式:
1. void IdleSetStatusIcon(S16 index)
{
ShowStatusIcon(index);
UpdateStatusIcons();
}
2. void ShowStatusIcon(S16 icon_ID)
{
MMI_status_icons[icon_ID].flags |= STATUS_ICON_DISPLAY;
IsReArrangeNeeded = 1;
}
3.void UpdateStatusIcons(void) //rearrange and refresh status icons
{
if (IsReArrangeNeeded)
{
arrange_status_icons(); //計算ICONs的位置
IsReArrangeNeeded = 0;
}
refresh_status_icon_display(); //重新顯示所有的status icons
}
4. void IdleResetStatusIcon(S16 index)
{
HideStatusIcon(index);
UpdateStatusIcons();
}
5. void HideStatusIcon(S16 icon_ID)
{
MMI_status_icons[icon_ID].flags = 0;
IsReArrangeNeeded = 1;
mmi_flight_mode_is_status_icon_visible(icon_ID, 0);// Hide status icon in flight mode
}
6. void BlinkStatusIcon(S16 icon_ID)
{
ShowStatusIcon(icon_ID);
blink_status_icon(icon_ID);
}
7. void blink_status_icon(S16 icon_ID)
{
MMI_status_icons[icon_ID].flags |= STATUS_ICON_BLINK;
setup_status_icon_blink_animate();
}
以鬧鐘ICON為例:STATUS_ICON_ALARM
在檔案:Wgui_status_iocns.h的列舉:enum STATUS_ICON_LIST中,新增Icon Name: STATUS_ICON_ALARM。
在檔案:Wgui_status_icons.c的陣列const S16 MMI_status_icons_pool1[]中,新增這個ICON ID:STATUS_ICON_ALARM。
注意: 在檔案Wgui_status_icons.c中,定義了3個數組:
const S16 MMI_status_icons_pool1[]:main LCD使用到的ICON IDs
const S16 MMI_status_icons_pool2[]:sub LCD使用到的ICON IDs
const S16 MMI_status_icons_pool_partial_display[]:其他的一些ICON IDs
這3個數組中的ICON IDs全部在Wgui_status_iocns.h的列舉enum STATUS_ICON_LIST 中宣告。
顯示鬧鐘ICON
void AlmActivateIndicator(void)
{
ShowStatusIcon(STATUS_ICON_ALARM);
UpdateStatusIcons();
}
隱藏鬧鐘ICON
void AlmDeactivateIndicator(void)
{
HideStatusIcon(STATUS_ICON_ALARM);
UpdateStatusIcons();
}