listctrl.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * File : listctrl.h
  3. * This file is part of RTGUI in RT-Thread RTOS
  4. * COPYRIGHT (C) 2010, RT-Thread Development Team
  5. *
  6. * The license and distribution terms for this file may be
  7. * found in the file LICENSE in this distribution or at
  8. * http://www.rt-thread.org/license/LICENSE
  9. *
  10. * Change Logs:
  11. * Date Author Notes
  12. * 2010-12-06 Bernard first version
  13. */
  14. #ifndef __RTGUI_LISTCTRL_H__
  15. #define __RTGUI_LISTCTRL_H__
  16. #include <rtgui/rtgui.h>
  17. #include <rtgui/image.h>
  18. #include <rtgui/rtgui_system.h>
  19. #include <rtgui/widgets/widget.h>
  20. DECLARE_CLASS_TYPE(listctrl);
  21. /** Gets the type of a listctrl */
  22. #define RTGUI_LISTCTRL_TYPE (RTGUI_TYPE(listctrl))
  23. /** Casts the object to a listctrl */
  24. #define RTGUI_LISTCTRL(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_LISTCTRL_TYPE, rtgui_listctrl_t))
  25. /** Checks if the object is a listctrl */
  26. #define RTGUI_IS_LISTCTRL(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_LISTCTRL_TYPE))
  27. struct rtgui_listctrl
  28. {
  29. struct rtgui_widget parent;
  30. /* widget private data */
  31. /* listctrl items */
  32. rt_uint32_t items;
  33. /* total number of items */
  34. rt_uint16_t items_count;
  35. /* the number of item in a page */
  36. rt_uint16_t page_items;
  37. /* current item */
  38. rt_int16_t current_item;
  39. /* item event handler */
  40. rtgui_event_handler_ptr on_item;
  41. void (*on_item_draw)(struct rtgui_listctrl *list, struct rtgui_dc* dc, rtgui_rect_t* rect, rt_uint16_t index);
  42. };
  43. typedef struct rtgui_listctrl rtgui_listctrl_t;
  44. typedef void (*rtgui_onitem_draw_t)(struct rtgui_listctrl *list, struct rtgui_dc* dc, rtgui_rect_t* rect, rt_uint16_t index);
  45. rtgui_listctrl_t* rtgui_listctrl_create(rt_uint32_t items, rt_uint16_t count,
  46. rtgui_rect_t *rect, rtgui_onitem_draw_t ondraw);
  47. void rtgui_listctrl_destroy(rtgui_listctrl_t* ctrl);
  48. rt_bool_t rtgui_listctrl_event_handler(struct rtgui_object* object, struct rtgui_event* event);
  49. void rtgui_listctrl_set_onitem(rtgui_listctrl_t* ctrl, rtgui_event_handler_ptr func);
  50. void rtgui_listctrl_set_items(rtgui_listctrl_t* ctrl, rt_uint32_t items, rt_uint16_t count);
  51. rt_bool_t rtgui_listctrl_get_item_rect(rtgui_listctrl_t* ctrl, rt_uint16_t item, rtgui_rect_t* item_rect);
  52. #endif