variable-item-list.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include <gui/view.h>
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. typedef struct VariableItemList VariableItemList;
  7. typedef struct VariableItem VariableItem;
  8. typedef void (*VariableItemChangeCallback)(VariableItem* item);
  9. /** Allocate and initialize VariableItemList
  10. * @return VariableItemList*
  11. */
  12. VariableItemList* variable_item_list_alloc();
  13. /** Deinitialize and free VariableItemList
  14. * @param variable_item_list VariableItemList instance
  15. */
  16. void variable_item_list_free(VariableItemList* variable_item_list);
  17. View* variable_item_list_get_view(VariableItemList* variable_item_list);
  18. /** Add item to VariableItemList
  19. * @param variable_item_list VariableItemList instance
  20. * @param label item name
  21. * @param values_count item values count
  22. * @param change_callback called on value change in gui
  23. * @param context item context
  24. * @return VariableItem* item instance
  25. */
  26. VariableItem* variable_item_list_add(
  27. VariableItemList* variable_item_list,
  28. const char* label,
  29. uint8_t values_count,
  30. VariableItemChangeCallback change_callback,
  31. void* context);
  32. /** Set item current selected index
  33. * @param item VariableItem* instance
  34. * @param current_value_index
  35. */
  36. void variable_item_set_current_value_index(VariableItem* item, uint8_t current_value_index);
  37. /** Set item current selected text
  38. * @param item VariableItem* instance
  39. * @param current_value_text
  40. */
  41. void variable_item_set_current_value_text(VariableItem* item, const char* current_value_text);
  42. /** Get item current selected index
  43. * @param item VariableItem* instance
  44. * @return uint8_t current selected index
  45. */
  46. uint8_t variable_item_get_current_value_index(VariableItem* item);
  47. /** Get item context
  48. * @param item VariableItem* instance
  49. * @return void* item context
  50. */
  51. void* variable_item_get_context(VariableItem* item);
  52. #ifdef __cplusplus
  53. }
  54. #endif