variable-item-list.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /**
  2. * @file variable-item-list.h
  3. * GUI: VariableItemList view module API
  4. */
  5. #pragma once
  6. #include <gui/view.h>
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. typedef struct VariableItemList VariableItemList;
  11. typedef struct VariableItem VariableItem;
  12. typedef void (*VariableItemChangeCallback)(VariableItem* item);
  13. typedef void (*VariableItemListEnterCallback)(void* context, uint32_t index);
  14. /** Allocate and initialize VariableItemList
  15. *
  16. * @return VariableItemList*
  17. */
  18. VariableItemList* variable_item_list_alloc();
  19. /** Deinitialize and free VariableItemList
  20. *
  21. * @param variable_item_list VariableItemList instance
  22. */
  23. void variable_item_list_free(VariableItemList* variable_item_list);
  24. /** Clear all elements from list
  25. *
  26. * @param variable_item_list VariableItemList instance
  27. */
  28. void variable_item_list_clean(VariableItemList* variable_item_list);
  29. /** Get VariableItemList View instance
  30. *
  31. * @param variable_item_list VariableItemList instance
  32. *
  33. * @return View instance
  34. */
  35. View* variable_item_list_get_view(VariableItemList* variable_item_list);
  36. /** Add item to VariableItemList
  37. *
  38. * @param variable_item_list VariableItemList instance
  39. * @param label item name
  40. * @param values_count item values count
  41. * @param change_callback called on value change in gui
  42. * @param context item context
  43. *
  44. * @return VariableItem* item instance
  45. */
  46. VariableItem* variable_item_list_add(
  47. VariableItemList* variable_item_list,
  48. const char* label,
  49. uint8_t values_count,
  50. VariableItemChangeCallback change_callback,
  51. void* context);
  52. /** Set enter callback
  53. *
  54. * @param variable_item_list VariableItemList instance
  55. * @param callback VariableItemListEnterCallback instance
  56. * @param context pointer to context
  57. */
  58. void variable_item_list_set_enter_callback(
  59. VariableItemList* variable_item_list,
  60. VariableItemListEnterCallback callback,
  61. void* context);
  62. void variable_item_list_set_selected_item(VariableItemList* variable_item_list, uint8_t index);
  63. uint8_t variable_item_list_get_selected_item_index(VariableItemList* variable_item_list);
  64. /** Set item current selected index
  65. *
  66. * @param item VariableItem* instance
  67. * @param current_value_index The current value index
  68. */
  69. void variable_item_set_current_value_index(VariableItem* item, uint8_t current_value_index);
  70. /** Set item current selected text
  71. *
  72. * @param item VariableItem* instance
  73. * @param current_value_text The current value text
  74. */
  75. void variable_item_set_current_value_text(VariableItem* item, const char* current_value_text);
  76. /** Get item current selected index
  77. *
  78. * @param item VariableItem* instance
  79. *
  80. * @return uint8_t current selected index
  81. */
  82. uint8_t variable_item_get_current_value_index(VariableItem* item);
  83. /** Get item context
  84. *
  85. * @param item VariableItem* instance
  86. *
  87. * @return void* item context
  88. */
  89. void* variable_item_get_context(VariableItem* item);
  90. #ifdef __cplusplus
  91. }
  92. #endif