view_dispatcher_i.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include <furi.h>
  3. #include <m-dict.h>
  4. #include "view_dispatcher.h"
  5. #include "view_i.h"
  6. #include "gui_i.h"
  7. DICT_DEF2(ViewDict, uint32_t, M_DEFAULT_OPLIST, View*, M_PTR_OPLIST)
  8. struct ViewDispatcher {
  9. osMessageQueueId_t queue;
  10. Gui* gui;
  11. ViewPort* view_port;
  12. ViewDict_t views;
  13. View* current_view;
  14. };
  15. typedef enum {
  16. ViewDispatcherMessageTypeInput,
  17. ViewDispatcherMessageTypeStop,
  18. } ViewDispatcherMessageType;
  19. typedef struct {
  20. ViewDispatcherMessageType type;
  21. union {
  22. InputEvent input;
  23. };
  24. } ViewDispatcherMessage;
  25. /* ViewPort Draw Callback */
  26. void view_dispatcher_draw_callback(Canvas* canvas, void* context);
  27. /* ViewPort Input Callback */
  28. void view_dispatcher_input_callback(InputEvent* event, void* context);
  29. /* Input handler */
  30. void view_dispatcher_handle_input(ViewDispatcher* view_dispatcher, InputEvent* event);
  31. /* Set current view, dispatches view enter and exit */
  32. void view_dispatcher_set_current_view(ViewDispatcher* view_dispatcher, View* view);
  33. /* ViewDispatcher update event */
  34. void view_dispatcher_update(View* view, void* context);