irda_app_view_manager.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include <gui/modules/button_menu.h>
  3. #include <gui/modules/text_input.h>
  4. #include <gui/view_stack.h>
  5. #include <gui/modules/button_panel.h>
  6. #include <furi.h>
  7. #include <gui/view_dispatcher.h>
  8. #include <gui/modules/dialog_ex.h>
  9. #include <gui/modules/submenu.h>
  10. #include <gui/modules/popup.h>
  11. #include <gui/modules/loading.h>
  12. #include "irda_app_event.h"
  13. #include "view/irda_progress_view.h"
  14. class IrdaAppViewManager {
  15. public:
  16. enum class ViewType : uint8_t {
  17. DialogEx,
  18. TextInput,
  19. Submenu,
  20. ButtonMenu,
  21. UniversalRemote,
  22. Popup,
  23. };
  24. IrdaAppViewManager();
  25. ~IrdaAppViewManager();
  26. void switch_to(ViewType type);
  27. void receive_event(IrdaAppEvent* event);
  28. void send_event(IrdaAppEvent* event);
  29. void clear_events();
  30. DialogEx* get_dialog_ex();
  31. Submenu* get_submenu();
  32. Popup* get_popup();
  33. TextInput* get_text_input();
  34. ButtonMenu* get_button_menu();
  35. ButtonPanel* get_button_panel();
  36. ViewStack* get_universal_view_stack();
  37. IrdaProgressView* get_progress();
  38. Loading* get_loading();
  39. osMessageQueueId_t get_event_queue();
  40. uint32_t previous_view_callback(void* context);
  41. private:
  42. ViewDispatcher* view_dispatcher;
  43. Gui* gui;
  44. TextInput* text_input;
  45. DialogEx* dialog_ex;
  46. Submenu* submenu;
  47. Popup* popup;
  48. ButtonMenu* button_menu;
  49. ButtonPanel* button_panel;
  50. ViewStack* universal_view_stack;
  51. IrdaProgressView* progress_view;
  52. Loading* loading_view;
  53. osMessageQueueId_t event_queue;
  54. void add_view(ViewType view_type, View* view);
  55. };