camera_suite_scene_menu.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "../camera_suite.h"
  2. enum SubmenuIndex {
  3. /** Camera. */
  4. SubmenuIndexSceneCamera = 10,
  5. /** Cam settings menu. */
  6. SubmenuIndexCamSettings,
  7. /** App settings menu. */
  8. SubmenuIndexAppSettings,
  9. /** Guide/how-to. */
  10. SubmenuIndexGuide,
  11. };
  12. void camera_suite_scene_menu_submenu_callback(void* context, uint32_t index) {
  13. CameraSuite* app = context;
  14. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  15. }
  16. void camera_suite_scene_menu_on_enter(void* context) {
  17. CameraSuite* app = context;
  18. submenu_add_item(
  19. app->submenu,
  20. "Stream Camera to Screen",
  21. SubmenuIndexSceneCamera,
  22. camera_suite_scene_menu_submenu_callback,
  23. app);
  24. submenu_add_item(
  25. app->submenu,
  26. "Camera Settings",
  27. SubmenuIndexCamSettings,
  28. camera_suite_scene_menu_submenu_callback,
  29. app);
  30. submenu_add_item(
  31. app->submenu,
  32. "Application Settings",
  33. SubmenuIndexAppSettings,
  34. camera_suite_scene_menu_submenu_callback,
  35. app);
  36. submenu_add_item(
  37. app->submenu,
  38. "Camera Suite Guide",
  39. SubmenuIndexGuide,
  40. camera_suite_scene_menu_submenu_callback,
  41. app);
  42. submenu_set_selected_item(
  43. app->submenu, scene_manager_get_scene_state(app->scene_manager, CameraSuiteSceneMenu));
  44. view_dispatcher_switch_to_view(app->view_dispatcher, CameraSuiteViewIdMenu);
  45. }
  46. bool camera_suite_scene_menu_on_event(void* context, SceneManagerEvent event) {
  47. CameraSuite* app = context;
  48. UNUSED(app);
  49. if(event.type == SceneManagerEventTypeBack) {
  50. // Exit application.
  51. scene_manager_stop(app->scene_manager);
  52. view_dispatcher_stop(app->view_dispatcher);
  53. return true;
  54. } else if(event.type == SceneManagerEventTypeCustom) {
  55. if(event.event == SubmenuIndexSceneCamera) {
  56. scene_manager_set_scene_state(
  57. app->scene_manager, CameraSuiteSceneMenu, SubmenuIndexSceneCamera);
  58. scene_manager_next_scene(app->scene_manager, CameraSuiteSceneCamera);
  59. return true;
  60. } else if(event.event == SubmenuIndexAppSettings) {
  61. scene_manager_set_scene_state(
  62. app->scene_manager, CameraSuiteSceneMenu, SubmenuIndexAppSettings);
  63. scene_manager_next_scene(app->scene_manager, CameraSuiteSceneAppSettings);
  64. return true;
  65. } else if(event.event == SubmenuIndexCamSettings) {
  66. scene_manager_set_scene_state(
  67. app->scene_manager, CameraSuiteSceneMenu, SubmenuIndexCamSettings);
  68. scene_manager_next_scene(app->scene_manager, CameraSuiteSceneCamSettings);
  69. return true;
  70. } else if(event.event == SubmenuIndexGuide) {
  71. scene_manager_set_scene_state(
  72. app->scene_manager, CameraSuiteSceneMenu, SubmenuIndexGuide);
  73. scene_manager_next_scene(app->scene_manager, CameraSuiteSceneGuide);
  74. return true;
  75. }
  76. }
  77. return false;
  78. }
  79. void camera_suite_scene_menu_on_exit(void* context) {
  80. CameraSuite* app = context;
  81. submenu_reset(app->submenu);
  82. }