展讯 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数据的类型(文字或图片)进行显示
│
└─若需要画选择图标,则画出图标
│
├─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数据的类型(文字或图片)进行显示
│
└─若需要画选择图标,则画出图标
相关文章推荐
- Python基础数据结构之大循环(for list,set,dict,tuple)
- iOS开发 一些基础控件知识
- iOS部分-UI基础控件 - 01天 入门 第08课 创建应用程序中的一些细节
- Java 基础一些代码练习笔记(LinkedList)
- linux的文件目录结构和一些基础命令
- 第三方控件DEV中的TreeList如何显示树形结构
- 分录F7控件过滤-基础资料ListUI左树右表
- homerHEVC代码阅读(18)——基础结构之mv_candiate_list_t,motion_vector_t,temporal_info_t,wnd_t
- 计算机体系结构的一些基础知识
- QTP中一些基础代码结构累积
- redis源码解读(六):基础数据结构之quicklist
- qt入门--一些基础控件的应用
- QTP中一些基础代码结构累积(二)
- PE文件结构的一些基础知识
- python基础II(list、tuple、简单程序结构)
- linux 目录结构+常用命令+压缩命令+vim使用+及一些基础知识(非常好)
- GdiPlus[40]: 不该忽略的一些基础结构
- 基础控件 UIControl的一些用法
- 一些Linux上编的基础C程序(一)循环结构
- BulletedList项目控件基础CSS基础