view_i.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include "view.h"
  3. #include "view_dispatcher_i.h"
  4. #include <furi.h>
  5. typedef struct {
  6. void* data;
  7. osMutexId_t mutex;
  8. } ViewModelLocking;
  9. struct View {
  10. ViewDispatcher* dispatcher;
  11. ViewDrawCallback draw_callback;
  12. ViewInputCallback input_callback;
  13. ViewModelType model_type;
  14. ViewNavigationCallback previous_callback;
  15. ViewNavigationCallback next_callback;
  16. ViewCallback enter_callback;
  17. ViewCallback exit_callback;
  18. void* model;
  19. void* context;
  20. };
  21. /* Set View dispatcher */
  22. void view_set_dispatcher(View* view, ViewDispatcher* view_dispatcher);
  23. /* Unlock model */
  24. void view_unlock_model(View* view);
  25. /* Draw Callback for View dispatcher */
  26. void view_draw(View* view, Canvas* canvas);
  27. /* Input Callback for View dispatcher */
  28. bool view_input(View* view, InputEvent* event);
  29. /* Previous Callback for View dispatcher */
  30. uint32_t view_previous(View* view);
  31. /* Next Callback for View dispatcher */
  32. uint32_t view_next(View* view);
  33. /* Enter Callback for View dispatcher */
  34. void view_enter(View* view);
  35. /* Exit Callback for View dispatcher */
  36. void view_exit(View* view);