meal_pager_scene_menu.c 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. } else if (event.event == Meal_PagerCustomEventViewTransmitterSendStop) {
  41. app->state_notifications = SubGhzNotificationStateIDLE;
  42. subghz_txrx_stop(app->subghz->txrx);
  43. FURI_LOG_D(TAG, "Stop Event from Menu");
  44. return true;
  45. }
  46. } else if(event.type == SceneManagerEventTypeTick) {
  47. if(app->state_notifications == SubGhzNotificationStateTx) {
  48. notification_message(app->notification, &sequence_blink_magenta_10);
  49. }
  50. return true;
  51. }
  52. return false;
  53. }
  54. void meal_pager_scene_menu_on_exit(void* context) {
  55. Meal_Pager* app = context;
  56. submenu_reset(app->submenu);
  57. }