submenu.h 1.5 KB

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