view_i.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include "view.h"
  3. #include <furi.h>
  4. typedef struct {
  5. void* data;
  6. osMutexId_t mutex;
  7. } ViewModelLocking;
  8. struct View {
  9. ViewDrawCallback draw_callback;
  10. ViewInputCallback input_callback;
  11. ViewCustomCallback custom_callback;
  12. ViewModelType model_type;
  13. ViewNavigationCallback previous_callback;
  14. ViewNavigationCallback next_callback;
  15. ViewCallback enter_callback;
  16. ViewCallback exit_callback;
  17. ViewOrientation orientation;
  18. ViewUpdateCallback update_callback;
  19. void* update_callback_context;
  20. void* model;
  21. void* context;
  22. };
  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. /* Custom Callback for View dispatcher */
  30. bool view_custom(View* view, uint32_t event);
  31. /* Previous Callback for View dispatcher */
  32. uint32_t view_previous(View* view);
  33. /* Next Callback for View dispatcher */
  34. uint32_t view_next(View* view);
  35. /* Enter Callback for View dispatcher */
  36. void view_enter(View* view);
  37. /* Exit Callback for View dispatcher */
  38. void view_exit(View* view);