From 5d0786513e57042f01b43e4531ec4e15a1bcc256 Mon Sep 17 00:00:00 2001 From: "bernard.xiong@gmail.com" Date: Sun, 12 Dec 2010 23:40:04 +0000 Subject: update combobox widget; add listctrl. git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1193 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- components/rtgui/include/rtgui/widgets/combobox.h | 20 +++---- components/rtgui/include/rtgui/widgets/listctrl.h | 64 +++++++++++++++++++++++ 2 files changed, 71 insertions(+), 13 deletions(-) create mode 100644 components/rtgui/include/rtgui/widgets/listctrl.h (limited to 'components/rtgui/include') diff --git a/components/rtgui/include/rtgui/widgets/combobox.h b/components/rtgui/include/rtgui/widgets/combobox.h index 517b125d06..36895dc1a7 100644 --- a/components/rtgui/include/rtgui/widgets/combobox.h +++ b/components/rtgui/include/rtgui/widgets/combobox.h @@ -4,13 +4,7 @@ #include #include #include - -/* combobox item */ -struct rtgui_combobox_item -{ - char* name; - rtgui_image_t *image; -}; +#include /** Gets the type of a combobox */ #define RTGUI_COMBOBOX_TYPE (rtgui_combobox_type_get()) @@ -32,24 +26,24 @@ struct rtgui_combobox /* pull down window */ struct rtgui_win* pd_win; rt_bool_t pd_pressed; - rt_uint16_t pd_win_width; - rt_uint16_t pd_win_height; /* combobox items */ - struct rtgui_combobox_item* items; + struct rtgui_listbox_item* items; rt_uint16_t items_count; rt_uint16_t current_item; /* call back */ - rt_bool_t (*on_selected) (struct rtgui_widget* widget, struct rtgui_event* event); + void (*on_selected) (struct rtgui_widget* widget, struct rtgui_event* event); }; typedef struct rtgui_combobox rtgui_combobox_t; rtgui_type_t *rtgui_combobox_type_get(void); -rtgui_combobox_t *rtgui_combobox_create(); +rtgui_combobox_t *rtgui_combobox_create(struct rtgui_listbox_item* items, rt_uint16_t counter, struct rtgui_rect* rect); void rtgui_combobox_destroy(rtgui_combobox_t* box); rt_bool_t rtgui_combobox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event); -struct rtgui_combobox_item* rtgui_combox_get_select(struct rtgui_combobox* box); +struct rtgui_listbox_item* rtgui_combox_get_select(struct rtgui_combobox* box); + +void rtgui_combobox_set_onselected(struct rtgui_combobox* box, rtgui_onitem_func_t func); #endif diff --git a/components/rtgui/include/rtgui/widgets/listctrl.h b/components/rtgui/include/rtgui/widgets/listctrl.h new file mode 100644 index 0000000000..9ce3263d54 --- /dev/null +++ b/components/rtgui/include/rtgui/widgets/listctrl.h @@ -0,0 +1,64 @@ +/* + * File : listctrl.h + * This file is part of RTGUI in RT-Thread RTOS + * COPYRIGHT (C) 2010, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE + * + * Change Logs: + * Date Author Notes + * 2010-12-06 Bernard first version + */ + +#ifndef __RTGUI_LISTCTRL_H__ +#define __RTGUI_LISTCTRL_H__ + +#include +#include +#include +#include + +/** Gets the type of a list ctrl */ +#define RTGUI_LISTCTRL_TYPE (rtgui_listctrl_type_get()) +/** Casts the object to a filelist */ +#define RTGUI_LISTCTRL(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_LISTCTRL_TYPE, rtgui_listctrl_t)) +/** Checks if the object is a filelist ctrl */ +#define RTGUI_IS_LISTCTRL(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_LISTCTRL_TYPE)) + +struct rtgui_listctrl +{ + struct rtgui_widget parent; + + /* widget private data */ + /* listctrl items */ + rt_uint32_t items; + + /* total number of items */ + rt_uint16_t items_count; + /* the number of item in a page */ + rt_uint16_t page_items; + /* current item */ + rt_uint16_t current_item; + + /* item event handler */ + void (*on_item)(rtgui_widget_t *widget, struct rtgui_event* event); + void (*on_item_draw)(struct rtgui_listctrl *list, struct rtgui_dc* dc, rtgui_rect_t* rect, rt_uint16_t index); +}; +typedef struct rtgui_listctrl rtgui_listctrl_t; + +typedef void (*rtgui_onitem_func_t)(struct rtgui_widget* widget, rtgui_event_t *event); +typedef void (*rtgui_onitem_draw_t)(struct rtgui_listctrl *list, struct rtgui_dc* dc, rtgui_rect_t* rect, rt_uint16_t index); + +rtgui_type_t *rtgui_listctrl_type_get(void); + +rtgui_listctrl_t* rtgui_listctrl_create(rt_uint32_t items, rt_uint16_t count, + rtgui_rect_t *rect, rtgui_onitem_draw_t ondraw); +void rtgui_listctrl_destroy(rtgui_listctrl_t* ctrl); + +rt_bool_t rtgui_listctrl_event_handler(struct rtgui_widget* widget, struct rtgui_event* event); +void rtgui_listctrl_set_onitem(rtgui_listctrl_t* ctrl, rtgui_onitem_func_t func); +void rtgui_listctrl_set_items(rtgui_listctrl_t* ctrl, rt_uint32_t items, rt_uint16_t count); + +#endif -- cgit v1.3.1