update combobox widget; add listctrl.

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1193 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
bernard.xiong@gmail.com
2010-12-12 23:40:04 +00:00
parent 3ba6d887da
commit 5d0786513e
5 changed files with 473 additions and 33 deletions
@@ -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
@@ -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