loader.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include <flip_social.h>
  3. typedef enum DataState DataState;
  4. enum DataState
  5. {
  6. DataStateInitial,
  7. DataStateRequested,
  8. DataStateReceived,
  9. DataStateParsed,
  10. DataStateParseError,
  11. DataStateError,
  12. };
  13. typedef struct DataLoaderModel DataLoaderModel;
  14. typedef bool (*DataLoaderFetch)(DataLoaderModel *model);
  15. typedef char *(*DataLoaderParser)(DataLoaderModel *model);
  16. struct DataLoaderModel
  17. {
  18. char *title;
  19. char *data_text;
  20. DataState data_state;
  21. DataLoaderFetch fetcher;
  22. DataLoaderParser parser;
  23. void *parser_context;
  24. size_t request_index;
  25. size_t request_count;
  26. ViewNavigationCallback back_callback;
  27. FuriTimer *timer;
  28. FlipperHTTP *fhttp;
  29. };
  30. bool loader_view_alloc(void *context);
  31. void loader_view_free(void *context);
  32. void loader_switch_to_view(FlipSocialApp *app, char *title, DataLoaderFetch fetcher, DataLoaderParser parser, size_t request_count, ViewNavigationCallback back, uint32_t view_id);
  33. void loader_draw_callback(Canvas *canvas, void *model);
  34. void loader_init(View *view);
  35. void loader_widget_set_text(char *message, Widget **widget);
  36. void loader_free_model(View *view);
  37. bool loader_custom_event_callback(void *context, uint32_t index);