camera_suite_scene_menu.c 2.5 KB

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