wifi_marauder_scene_script_options.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "../wifi_marauder_app_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexRun,
  4. SubmenuIndexSettings,
  5. SubmenuIndexEditStages,
  6. SubmenuIndexSave,
  7. SubmenuIndexDelete
  8. };
  9. void wifi_marauder_scene_script_options_save_script(WifiMarauderApp* app) {
  10. char script_path[256];
  11. snprintf(
  12. script_path,
  13. sizeof(script_path),
  14. "%s/%s.json",
  15. MARAUDER_APP_FOLDER_SCRIPTS,
  16. app->script->name);
  17. wifi_marauder_script_save_json(app->storage, script_path, app->script);
  18. DialogMessage* message = dialog_message_alloc();
  19. dialog_message_set_text(message, "Saved!", 5, 7, AlignLeft, AlignTop);
  20. dialog_message_set_icon(message, &I_DolphinDone_80x58, 36, 5);
  21. dialog_message_set_buttons(message, NULL, "Ok", NULL);
  22. dialog_message_show(app->dialogs, message);
  23. dialog_message_free(message);
  24. }
  25. static void wifi_marauder_scene_script_options_callback(void* context, uint32_t index) {
  26. WifiMarauderApp* app = context;
  27. switch(index) {
  28. case SubmenuIndexRun:
  29. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions, index);
  30. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneConsoleOutput);
  31. break;
  32. case SubmenuIndexSettings:
  33. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions, index);
  34. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneScriptSettings);
  35. break;
  36. case SubmenuIndexEditStages:
  37. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions, index);
  38. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneScriptEdit);
  39. break;
  40. case SubmenuIndexSave:
  41. wifi_marauder_scene_script_options_save_script(app);
  42. break;
  43. case SubmenuIndexDelete:
  44. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions, index);
  45. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneScriptConfirmDelete);
  46. break;
  47. }
  48. }
  49. void wifi_marauder_scene_script_options_on_enter(void* context) {
  50. WifiMarauderApp* app = context;
  51. // If returning after confirming script deletion
  52. if(app->script == NULL) {
  53. scene_manager_previous_scene(app->scene_manager);
  54. return;
  55. }
  56. Submenu* submenu = app->submenu;
  57. submenu_set_header(submenu, app->script->name);
  58. submenu_add_item(
  59. submenu, "[>] RUN", SubmenuIndexRun, wifi_marauder_scene_script_options_callback, app);
  60. submenu_add_item(
  61. submenu,
  62. "[S] SETTINGS",
  63. SubmenuIndexSettings,
  64. wifi_marauder_scene_script_options_callback,
  65. app);
  66. submenu_add_item(
  67. submenu,
  68. "[+] EDIT STAGES",
  69. SubmenuIndexEditStages,
  70. wifi_marauder_scene_script_options_callback,
  71. app);
  72. submenu_add_item(
  73. submenu, "[*] SAVE", SubmenuIndexSave, wifi_marauder_scene_script_options_callback, app);
  74. submenu_add_item(
  75. submenu,
  76. "[X] DELETE",
  77. SubmenuIndexDelete,
  78. wifi_marauder_scene_script_options_callback,
  79. app);
  80. submenu_set_selected_item(
  81. submenu,
  82. scene_manager_get_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions));
  83. view_dispatcher_switch_to_view(app->view_dispatcher, WifiMarauderAppViewSubmenu);
  84. }
  85. bool wifi_marauder_scene_script_options_on_event(void* context, SceneManagerEvent event) {
  86. WifiMarauderApp* app = context;
  87. bool consumed = false;
  88. if(event.type == SceneManagerEventTypeBack) {
  89. wifi_marauder_script_free(app->script);
  90. app->script = NULL;
  91. }
  92. return consumed;
  93. }
  94. void wifi_marauder_scene_script_options_on_exit(void* context) {
  95. WifiMarauderApp* app = context;
  96. submenu_reset(app->submenu);
  97. }