您的位置:首页 > 其它

展讯 List控件的一些基础结构

2013-01-14 11:25 239 查看
GUILIST_ITEM_INFO_T *item_info_ptr

  │

  ├─void*              ctrl_ptr[GUIITEM_CONTENT_MAX_NUM]; //每个元素都可能内嵌控件

  ├─MMI_STRING_T       text_buffer;                       //使用大内存管理所有buffer

  └─GUILIST_ITEM_T     item;                              //用户传入的item

    │

    ├─GUIITEM_STYLE_E          item_style;        // item风格,可以指示出列表项是几行的,
    │                                              // 每行有几项内容及内容的类型(图片或文字)

    │                                              // 根据这个风格的指示,可以从s_item_style_table中
    │                                              // 取出风格所对应的GUIITEM_STYLE_T

    ├─GUIITEM_STATE_T          item_state;        // item状态

    ├─GUILIST_ITEM_DATA_T*     item_data_ptr;     // item数据

    │  │

    │  ├─MMI_TEXT_ID_T        softkey_id[GUISOFTKEY_BUTTON_NUM];        // softkey对应的文字资源id

    │  └─GUIITEM_CONTENT_T    item_content[GUIITEM_CONTENT_MAX_NUM];    // item的content,
    │      │                                                             // 最多支持双行5/6个content

    │      │

    │      ├─GUIITEM_DATA_TYPE_E         item_data_type;    // content数据类型,文字或图片

    │      └─GUIITEM_DATA_U              item_data;         // content数据结构,存放具体的文字/图片的ID或指针

    │

    └─uint32                   user_data;           /*!< 用户自定义数据*/    

   

GUIITEM_STYLE_T

  │

  ├─GUIITEM_THEME_ID_E       content_theme_id[GUIITEM_CONTENT_MAX_NUM];    // 列表item中各content的主题

  ├─GUIITEM_CONTENT_STATE_T  content_state[GUIITEM_CONTENT_MAX_NUM];       //item content state

  ├─GUIITEM_LAYOUT_ID_E      layout_id;                                    //item layout id

  └─uint16                   main_index;                                   //item main index, use for scroll

 

GUIITEM_LAYOUT_DATA_T

  │

  ├─uint16        item_height;                                  //item height

  ├─GUI_RECT_T    item_content_rect[GUIITEM_CONTENT_MAX_NUM];   //item content rect

  ├─GUI_RECT_T    item_select_icon_rect;                        //item selected icon rect

  └─GUI_RECT_T    item_num_icon_rect;                           //item num icon rect

 

画ListItem的基本流程

DrawListItem

├─GetItemInfoPtr    获取项数据的指针 item_info_ptr

├─若列表控件需要在窗口中插入项数据,而且当前项数据的指针为空,则SendNotify到窗口函数

├─MMITHEME_GetItemStyle    获取item_style_ptr GUIITEM_STYLE_T

├─GetItemThemeState    判断列表项的主题状态,如正常、高亮、无效、高亮无效

├─GetSelectIconId

├─GetNumberIconId

├─根据主题状态和GUIITEM_STYLE_T中的layout_id,从s_item_layout_id_table中提取合适的GUIITEM_LAYOUT_DATA_T

├─若整个item仅作为分隔符,则画出分隔符的背景

├─若item需要分隔线,则画分隔线

├─若需要画数字图标,则画出图标

├─画出item中的所有content

│  │

│  ├─根据列表item的主题状态和当前content的主题,来获取当前content的主题数据,如字体、颜色、字符间隔

│  ├─从GUIITEM_LAYOUT_DATA_T中提取content的区域,这个区域是相对于item区域而言的

│  ├─根据显示方向(左向右或者右向左),调整content的区域为相对于屏幕的区域

│  └─根据content数据的类型(文字或图片)进行显示



└─若需要画选择图标,则画出图标
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  LIST 控件 流程 结构