filelist_view.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef __RTGUI_FILELIST_VIEW_H__
  2. #define __RTGUI_FILELIST_VIEW_H__
  3. #include <rtgui/widgets/container.h>
  4. #if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW)
  5. #define RTGUI_FITEM_FILE 0x0
  6. #define RTGUI_FITEM_DIR 0x1
  7. struct rtgui_file_item
  8. {
  9. char* name;
  10. rt_uint32_t type;
  11. rt_uint32_t size;
  12. };
  13. DECLARE_CLASS_TYPE(filelist);
  14. /** Gets the type of a filelist view */
  15. #define RTGUI_FILELIST_VIEW_TYPE (RTGUI_TYPE(filelist))
  16. /** Casts the object to a filelist */
  17. #define RTGUI_FILELIST_VIEW(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_FILELIST_VIEW_TYPE, rtgui_filelist_view_t))
  18. /** Checks if the object is a filelist view */
  19. #define RTGUI_IS_FILELIST_VIEW(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_FILELIST_VIEW_TYPE))
  20. struct rtgui_filelist_view
  21. {
  22. struct rtgui_container parent;
  23. /* widget private data */
  24. /* current directory */
  25. char* current_directory;
  26. char* pattern;
  27. /* the number of item in a page */
  28. rt_uint16_t page_items;
  29. rt_uint16_t items_count;
  30. /* the selected item */
  31. rt_uint16_t current_item;
  32. /* items array */
  33. struct rtgui_file_item *items;
  34. };
  35. typedef struct rtgui_filelist_view rtgui_filelist_view_t;
  36. rtgui_filelist_view_t* rtgui_filelist_view_create(const char* directory,
  37. const char* pattern,
  38. const rtgui_rect_t* rect);
  39. void rtgui_filelist_view_destroy(rtgui_filelist_view_t* view);
  40. rt_bool_t rtgui_filelist_view_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
  41. void rtgui_filelist_view_set_directory(rtgui_filelist_view_t* view, const char* directory);
  42. void rtgui_filelist_view_get_fullpath(rtgui_filelist_view_t* view, char* path, rt_size_t len);
  43. #endif
  44. #endif