submenu.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /**
  2. * @file submenu.h
  3. * GUI: SubMenu view module API
  4. */
  5. #pragma once
  6. #include <gui/view.h>
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. /** Submenu anonymous structure */
  11. typedef struct Submenu Submenu;
  12. typedef void (*SubmenuItemCallback)(void* context, uint32_t index);
  13. /** Allocate and initialize submenu
  14. *
  15. * This submenu is used to select one option
  16. *
  17. * @return Submenu instance
  18. */
  19. Submenu* submenu_alloc();
  20. /** Deinitialize and free submenu
  21. *
  22. * @param submenu Submenu instance
  23. */
  24. void submenu_free(Submenu* submenu);
  25. /** Get submenu view
  26. *
  27. * @param submenu Submenu instance
  28. *
  29. * @return View instance that can be used for embedding
  30. */
  31. View* submenu_get_view(Submenu* submenu);
  32. /** Add item to submenu
  33. *
  34. * @param submenu Submenu instance
  35. * @param label menu item label
  36. * @param index menu item index, used for callback, may be
  37. * the same with other items
  38. * @param callback menu item callback
  39. * @param callback_context menu item callback context
  40. */
  41. void submenu_add_item(
  42. Submenu* submenu,
  43. const char* label,
  44. uint32_t index,
  45. SubmenuItemCallback callback,
  46. void* callback_context);
  47. /** Remove all items from submenu
  48. *
  49. * @param submenu Submenu instance
  50. */
  51. void submenu_clean(Submenu* submenu);
  52. /** Set submenu item selector
  53. *
  54. * @param submenu Submenu instance
  55. * @param index The index
  56. */
  57. void submenu_set_selected_item(Submenu* submenu, uint32_t index);
  58. /** Set optional header for submenu
  59. *
  60. * @param submenu Submenu instance
  61. * @param header header to set
  62. */
  63. void submenu_set_header(Submenu* submenu, const char* header);
  64. #ifdef __cplusplus
  65. }
  66. #endif