view_dispatcher.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include "view.h"
  3. #include "gui.h"
  4. /* ViewDispatcher widget placement */
  5. typedef enum {
  6. ViewDispatcherTypeNone, /* Special layer for internal use only */
  7. ViewDispatcherTypeWindow, /* Main widget layer, status bar is shown */
  8. ViewDispatcherTypeFullscreen /* Fullscreen widget layer */
  9. } ViewDispatcherType;
  10. typedef struct ViewDispatcher ViewDispatcher;
  11. /* Allocate ViewDispatcher
  12. * @return pointer to ViewDispatcher instance
  13. */
  14. ViewDispatcher* view_dispatcher_alloc();
  15. /* Free ViewDispatcher
  16. * @param pointer to View
  17. */
  18. void view_dispatcher_free(ViewDispatcher* view_dispatcher);
  19. /* Add view to ViewDispatcher
  20. * @param view_dispatcher, ViewDispatcher instance
  21. * @param view_id, View id to register
  22. * @param view, View instance
  23. */
  24. void view_dispatcher_add_view(ViewDispatcher* view_dispatcher, uint32_t view_id, View* view);
  25. /* Switch to View
  26. * @param view_dispatcher, ViewDispatcher instance
  27. * @param view_id, View id to register
  28. */
  29. void view_dispatcher_switch_to_view(ViewDispatcher* view_dispatcher, uint32_t view_id);
  30. /* Attach ViewDispatcher to GUI
  31. * @param view_dispatcher, ViewDispatcher instance
  32. * @param gui, GUI instance to attach to
  33. */
  34. void view_dispatcher_attach_to_gui(
  35. ViewDispatcher* view_dispatcher,
  36. Gui* gui,
  37. ViewDispatcherType type);