meal_pager_scene_menu.c 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include "../meal_pager_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexTransmit = 10,
  4. SubmenuIndexScene2,
  5. SubmenuIndexScene3,
  6. SubmenuIndexScene4,
  7. SubmenuIndexScene5,
  8. SubmenuIndexSettings,
  9. };
  10. void meal_pager_scene_menu_submenu_callback(void* context, uint32_t index) {
  11. Meal_Pager* app = context;
  12. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  13. }
  14. void meal_pager_scene_menu_on_enter(void* context) {
  15. Meal_Pager* app = context;
  16. submenu_add_item(app->submenu, "Scene 1 (empty)", SubmenuIndexTransmit, meal_pager_scene_menu_submenu_callback, app);
  17. submenu_add_item(app->submenu, "Settings", SubmenuIndexSettings, meal_pager_scene_menu_submenu_callback, app);
  18. submenu_set_selected_item(app->submenu, scene_manager_get_scene_state(app->scene_manager, Meal_PagerSceneMenu));
  19. view_dispatcher_switch_to_view(app->view_dispatcher, Meal_PagerViewIdMenu);
  20. }
  21. bool meal_pager_scene_menu_on_event(void* context, SceneManagerEvent event) {
  22. Meal_Pager* app = context;
  23. UNUSED(app);
  24. if(event.type == SceneManagerEventTypeBack) {
  25. //exit app
  26. scene_manager_stop(app->scene_manager);
  27. view_dispatcher_stop(app->view_dispatcher);
  28. return true;
  29. } else if(event.type == SceneManagerEventTypeCustom) {
  30. if(event.event == SubmenuIndexTransmit) {
  31. scene_manager_set_scene_state(
  32. app->scene_manager, Meal_PagerSceneMenu, SubmenuIndexTransmit);
  33. scene_manager_next_scene(app->scene_manager, Meal_PagerSceneTransmit);
  34. return true;
  35. } else if (event.event == SubmenuIndexSettings) {
  36. scene_manager_set_scene_state(
  37. app->scene_manager, Meal_PagerSceneMenu, SubmenuIndexSettings);
  38. scene_manager_next_scene(app->scene_manager, Meal_PagerSceneSettings);
  39. return true;
  40. }
  41. }
  42. return false;
  43. }
  44. void meal_pager_scene_menu_on_exit(void* context) {
  45. Meal_Pager* app = context;
  46. submenu_reset(app->submenu);
  47. }