wifi_marauder_scene_script_options.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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(script_path, sizeof(script_path), "%s/%s.json", MARAUDER_APP_FOLDER_SCRIPTS, app->script->name);
  12. wifi_marauder_script_save_json(app->storage, script_path, app->script);
  13. DialogMessage* message = dialog_message_alloc();
  14. dialog_message_set_text(message, "Saved!", 88, 32, AlignCenter, AlignCenter);
  15. dialog_message_set_icon(message, &I_DolphinCommon_56x48, 5, 6);
  16. dialog_message_set_buttons(message, NULL, "Ok", NULL);
  17. dialog_message_show(app->dialogs, message);
  18. dialog_message_free(message);
  19. }
  20. static void wifi_marauder_scene_script_options_callback(void* context, uint32_t index) {
  21. WifiMarauderApp* app = context;
  22. switch (index) {
  23. case SubmenuIndexRun:
  24. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions, index);
  25. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneConsoleOutput);
  26. break;
  27. case SubmenuIndexSettings:
  28. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions, index);
  29. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneScriptSettings);
  30. break;
  31. case SubmenuIndexEditStages:
  32. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions, index);
  33. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneScriptEdit);
  34. break;
  35. case SubmenuIndexSave:
  36. wifi_marauder_scene_script_options_save_script(app);
  37. break;
  38. case SubmenuIndexDelete:
  39. scene_manager_set_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions, index);
  40. scene_manager_next_scene(app->scene_manager, WifiMarauderSceneScriptConfirmDelete);
  41. break;
  42. }
  43. }
  44. void wifi_marauder_scene_script_options_on_enter(void* context) {
  45. WifiMarauderApp* app = context;
  46. // If returning after confirming script deletion
  47. if (app->script == NULL) {
  48. scene_manager_previous_scene(app->scene_manager);
  49. return;
  50. }
  51. Submenu* submenu = app->submenu;
  52. submenu_set_header(submenu, app->script->name);
  53. submenu_add_item(submenu, "[>] RUN", SubmenuIndexRun, wifi_marauder_scene_script_options_callback, app);
  54. submenu_add_item(submenu, "[S] SETTINGS", SubmenuIndexSettings, wifi_marauder_scene_script_options_callback, app);
  55. submenu_add_item(submenu, "[+] EDIT STAGES", SubmenuIndexEditStages, wifi_marauder_scene_script_options_callback, app);
  56. submenu_add_item(submenu, "[*] SAVE", SubmenuIndexSave, wifi_marauder_scene_script_options_callback, app);
  57. submenu_add_item(submenu, "[X] DELETE", SubmenuIndexDelete, wifi_marauder_scene_script_options_callback, app);
  58. submenu_set_selected_item(submenu, scene_manager_get_scene_state(app->scene_manager, WifiMarauderSceneScriptOptions));
  59. view_dispatcher_switch_to_view(app->view_dispatcher, WifiMarauderAppViewSubmenu);
  60. }
  61. bool wifi_marauder_scene_script_options_on_event(void* context, SceneManagerEvent event) {
  62. WifiMarauderApp* app = context;
  63. bool consumed = false;
  64. if(event.type == SceneManagerEventTypeBack) {
  65. wifi_marauder_script_free(app->script);
  66. app->script = NULL;
  67. }
  68. return consumed;
  69. }
  70. void wifi_marauder_scene_script_options_on_exit(void* context) {
  71. WifiMarauderApp* app = context;
  72. submenu_reset(app->submenu);
  73. }