view_dispatcher.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #pragma once
  2. #include "view.h"
  3. #include "gui.h"
  4. #include "view_navigator.h"
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. /** ViewDispatcher view_port placement
  9. */
  10. typedef enum {
  11. ViewDispatcherTypeNone, /**< Special layer for internal use only */
  12. ViewDispatcherTypeWindow, /**< Main view_port layer, status bar is shown */
  13. ViewDispatcherTypeFullscreen /**< Fullscreen view_port layer */
  14. } ViewDispatcherType;
  15. typedef struct ViewDispatcher ViewDispatcher;
  16. /** Allocate ViewDispatcher instance
  17. * @return pointer to ViewDispatcher instance
  18. */
  19. ViewDispatcher* view_dispatcher_alloc();
  20. /** Free ViewDispatcher instance
  21. * @param view_dispatcher pointer to ViewDispatcher
  22. */
  23. void view_dispatcher_free(ViewDispatcher* view_dispatcher);
  24. /** Enable queue support
  25. * If queue enabled all input and custom events will be dispatched throw internal queue
  26. * @param view_dispatcher ViewDispatcher instance
  27. */
  28. void view_dispatcher_enable_queue(ViewDispatcher* view_dispatcher);
  29. /** Send custom event
  30. * @param view_dispatcher ViewDispatcher instance
  31. */
  32. void view_dispatcher_send_custom_event(ViewDispatcher* view_dispatcher, uint32_t event);
  33. /** Enable View Navigator to handle custom events and scene navigation
  34. * @param view_dispatcher ViewDispatcher instance
  35. * @param context context for all scenes
  36. */
  37. void view_dispatcher_enable_navigation(ViewDispatcher* view_dispatcher, void* context);
  38. /** Add Scene to view navigator
  39. * Use only after navigation enabled
  40. * @param view_dispatcher ViewDispatcher instance
  41. * @param scene AppScene instance
  42. */
  43. void view_dispatcher_add_scene(ViewDispatcher* view_dispatcher, AppScene* scene);
  44. /** Send navigation event
  45. * @param view_dispatcher ViewDispatcher instance
  46. * @param event event
  47. */
  48. void view_dispatcher_send_navigation_event(ViewDispatcher* view_dispatcher, uint32_t event);
  49. /** Send search scene event
  50. * @param view_dispatcher ViewDispatcher instance
  51. * @param event event
  52. */
  53. void view_dispatcher_send_back_search_scene_event(ViewDispatcher* view_dispatcher, uint32_t event);
  54. /** Run ViewDispatcher
  55. * Use only after queue enabled
  56. * @param view_dispatcher ViewDispatcher instance
  57. */
  58. void view_dispatcher_run(ViewDispatcher* view_dispatcher);
  59. /** Stop ViewDispatcher
  60. * Use only after queue enabled
  61. * @param view_dispatcher ViewDispatcher instance
  62. */
  63. void view_dispatcher_stop(ViewDispatcher* view_dispatcher);
  64. /** Add view to ViewDispatcher
  65. * @param view_dispatcher, ViewDispatcher instance
  66. * @param view_id View id to register
  67. * @param view View instance
  68. */
  69. void view_dispatcher_add_view(ViewDispatcher* view_dispatcher, uint32_t view_id, View* view);
  70. /** Remove view from ViewDispatcher
  71. * @param view_dispatcher ViewDispatcher instance
  72. * @param view_id View id to remove
  73. */
  74. void view_dispatcher_remove_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  75. /** Switch to View
  76. * @param view_dispatcher ViewDispatcher instance
  77. * @param view_id View id to register
  78. */
  79. void view_dispatcher_switch_to_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  80. /** Attach ViewDispatcher to GUI
  81. * @param view_dispatcher ViewDispatcher instance
  82. * @param gui GUI instance to attach to
  83. */
  84. void view_dispatcher_attach_to_gui(
  85. ViewDispatcher* view_dispatcher,
  86. Gui* gui,
  87. ViewDispatcherType type);
  88. #ifdef __cplusplus
  89. }
  90. #endif