callback.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include <flip_world.h>
  3. #include <flip_storage/storage.h>
  4. void free_all_views(void *context, bool free_variable_list, bool free_settings_submenu, bool free_submenu_game);
  5. void callback_submenu_choices(void *context, uint32_t index);
  6. uint32_t callback_to_submenu(void *context);
  7. // Add edits by Derek Jamison
  8. typedef enum DataState DataState;
  9. enum DataState
  10. {
  11. DataStateInitial,
  12. DataStateRequested,
  13. DataStateReceived,
  14. DataStateParsed,
  15. DataStateParseError,
  16. DataStateError,
  17. };
  18. typedef enum MessageState MessageState;
  19. enum MessageState
  20. {
  21. MessageStateAbout, // The about screen
  22. MessageStateLoading, // The loading screen (for game)
  23. MessageStateWaitingLobby, // The waiting lobby screen
  24. };
  25. typedef struct MessageModel MessageModel;
  26. struct MessageModel
  27. {
  28. MessageState message_state;
  29. };
  30. typedef struct DataLoaderModel DataLoaderModel;
  31. typedef bool (*DataLoaderFetch)(DataLoaderModel *model);
  32. typedef char *(*DataLoaderParser)(DataLoaderModel *model);
  33. struct DataLoaderModel
  34. {
  35. char *title;
  36. char *data_text;
  37. DataState data_state;
  38. DataLoaderFetch fetcher;
  39. DataLoaderParser parser;
  40. void *parser_context;
  41. size_t request_index;
  42. size_t request_count;
  43. ViewNavigationCallback back_callback;
  44. FuriTimer *timer;
  45. FlipperHTTP *fhttp;
  46. };
  47. void generic_switch_to_view(FlipWorldApp *app, char *title, DataLoaderFetch fetcher, DataLoaderParser parser, size_t request_count, ViewNavigationCallback back, uint32_t view_id);
  48. void loader_draw_callback(Canvas *canvas, void *model);
  49. void loader_init(View *view);
  50. void loader_free_model(View *view);
  51. bool custom_event_callback(void *context, uint32_t index);