diff options
| author | [email protected] <[email protected]> | 2010-12-12 23:40:04 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2010-12-12 23:40:04 +0000 |
| commit | 5d0786513e57042f01b43e4531ec4e15a1bcc256 (patch) | |
| tree | 4c01d57d000409bc208c774c70c42f6fd60e88aa /components/rtgui/include | |
| parent | 3ba6d887daed668c7296359c0ca8207771b33832 (diff) | |
update combobox widget; add listctrl.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1193 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'components/rtgui/include')
| -rw-r--r-- | components/rtgui/include/rtgui/widgets/combobox.h | 20 | ||||
| -rw-r--r-- | components/rtgui/include/rtgui/widgets/listctrl.h | 64 |
2 files changed, 71 insertions, 13 deletions
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 <rtgui/rtgui.h>
#include <rtgui/image.h>
#include <rtgui/widgets/window.h>
-
-/* combobox item */
-struct rtgui_combobox_item
-{
- char* name;
- rtgui_image_t *image;
-};
+#include <rtgui/widgets/listbox.h>
/** 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 <rtgui/rtgui.h>
+#include <rtgui/image.h>
+#include <rtgui/rtgui_system.h>
+#include <rtgui/widgets/widget.h>
+
+/** 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
|
