variable-item-list.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. typedef void (*VariableItemListEnterCallback)(void* context, uint32_t index);
  10. /** Allocate and initialize VariableItemList
  11. * @return VariableItemList*
  12. */
  13. VariableItemList* variable_item_list_alloc();
  14. /** Deinitialize and free VariableItemList
  15. * @param variable_item_list VariableItemList instance
  16. */
  17. void variable_item_list_free(VariableItemList* variable_item_list);
  18. /** Clear all elements from list
  19. * @param variable_item_list VariableItemList instance
  20. */
  21. void variable_item_list_clean(VariableItemList* variable_item_list);
  22. View* variable_item_list_get_view(VariableItemList* variable_item_list);
  23. /** Add item to VariableItemList
  24. * @param variable_item_list VariableItemList instance
  25. * @param label item name
  26. * @param values_count item values count
  27. * @param change_callback called on value change in gui
  28. * @param context item context
  29. * @return VariableItem* item instance
  30. */
  31. VariableItem* variable_item_list_add(
  32. VariableItemList* variable_item_list,
  33. const char* label,
  34. uint8_t values_count,
  35. VariableItemChangeCallback change_callback,
  36. void* context);
  37. /** Set enter callback
  38. * @param variable_item_list VariableItemList instance
  39. * @param calback VariableItemListEnterCallback instance
  40. * @param context pointer to context
  41. */
  42. void variable_item_list_set_enter_callback(
  43. VariableItemList* variable_item_list,
  44. VariableItemListEnterCallback callback,
  45. void* context);
  46. /** Set item current selected index
  47. * @param item VariableItem* instance
  48. * @param current_value_index
  49. */
  50. void variable_item_set_current_value_index(VariableItem* item, uint8_t current_value_index);
  51. /** Set item current selected text
  52. * @param item VariableItem* instance
  53. * @param current_value_text
  54. */
  55. void variable_item_set_current_value_text(VariableItem* item, const char* current_value_text);
  56. /** Get item current selected index
  57. * @param item VariableItem* instance
  58. * @return uint8_t current selected index
  59. */
  60. uint8_t variable_item_get_current_value_index(VariableItem* item);
  61. /** Get item context
  62. * @param item VariableItem* instance
  63. * @return void* item context
  64. */
  65. void* variable_item_get_context(VariableItem* item);
  66. #ifdef __cplusplus
  67. }
  68. #endif