xremote_scene_menu.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "../helpers/subghz/subghz.h"
  2. #include "../xremote.h"
  3. enum SubmenuIndex {
  4. SubmenuIndexCreate = 10,
  5. SubmenuIndexLoad,
  6. SubmenuIndexEdit,
  7. SubmenuIndexSettings,
  8. SubmenuIndexInfoscreen,
  9. };
  10. void xremote_scene_menu_submenu_callback(void* context, uint32_t index) {
  11. XRemote* app = context;
  12. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  13. }
  14. void xremote_scene_menu_on_enter(void* context) {
  15. XRemote* app = context;
  16. submenu_add_item(
  17. app->submenu,
  18. "New Command Chain",
  19. SubmenuIndexCreate,
  20. xremote_scene_menu_submenu_callback,
  21. app);
  22. submenu_add_item(
  23. app->submenu,
  24. "Run Saved Command",
  25. SubmenuIndexLoad,
  26. xremote_scene_menu_submenu_callback,
  27. app);
  28. submenu_add_item(
  29. app->submenu,
  30. "Edit / Delete Command",
  31. SubmenuIndexEdit,
  32. xremote_scene_menu_submenu_callback,
  33. app);
  34. submenu_add_item(
  35. app->submenu, "Settings", SubmenuIndexSettings, xremote_scene_menu_submenu_callback, app);
  36. submenu_add_item(
  37. app->submenu, "App Info", SubmenuIndexInfoscreen, xremote_scene_menu_submenu_callback, app);
  38. submenu_set_selected_item(
  39. app->submenu, scene_manager_get_scene_state(app->scene_manager, XRemoteSceneMenu));
  40. view_dispatcher_switch_to_view(app->view_dispatcher, XRemoteViewIdMenu);
  41. }
  42. bool xremote_scene_menu_on_event(void* context, SceneManagerEvent event) {
  43. XRemote* app = context;
  44. if(event.type == SceneManagerEventTypeBack) {
  45. //exit app
  46. scene_manager_stop(app->scene_manager);
  47. view_dispatcher_stop(app->view_dispatcher);
  48. return true;
  49. } else if(event.type == SceneManagerEventTypeCustom) {
  50. if(event.event == SubmenuIndexCreate) {
  51. scene_manager_set_scene_state(
  52. app->scene_manager, XRemoteSceneMenu, SubmenuIndexCreate);
  53. scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
  54. return true;
  55. } else if(event.event == SubmenuIndexLoad) {
  56. scene_manager_set_scene_state(app->scene_manager, XRemoteSceneMenu, SubmenuIndexLoad);
  57. scene_manager_next_scene(app->scene_manager, XRemoteSceneXrList);
  58. return true;
  59. } else if(event.event == SubmenuIndexSettings) {
  60. scene_manager_set_scene_state(
  61. app->scene_manager, XRemoteSceneMenu, SubmenuIndexSettings);
  62. scene_manager_next_scene(app->scene_manager, XRemoteSceneSettings);
  63. return true;
  64. } else if(event.event == SubmenuIndexInfoscreen) {
  65. scene_manager_set_scene_state(
  66. app->scene_manager, XRemoteSceneMenu, SubmenuIndexInfoscreen);
  67. scene_manager_next_scene(app->scene_manager, XRemoteSceneInfoscreen);
  68. return true;
  69. } else if(event.event == SubmenuIndexEdit) {
  70. scene_manager_set_scene_state(app->scene_manager, XRemoteSceneMenu, SubmenuIndexEdit);
  71. scene_manager_next_scene(app->scene_manager, XRemoteSceneXrListEdit);
  72. }
  73. }
  74. return false;
  75. }
  76. void xremote_scene_menu_on_exit(void* context) {
  77. XRemote* app = context;
  78. submenu_reset(app->submenu);
  79. }