1. 程式人生 > >MTK6225-狀態列圖示的顯示與隱藏

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();

}