subghz_scene_delete_raw.c 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include "../subghz_i.h"
  2. #include "../helpers/subghz_custom_event.h"
  3. void subghz_scene_delete_raw_callback(GuiButtonType result, InputType type, void* context) {
  4. furi_assert(context);
  5. SubGhz* subghz = context;
  6. if((result == GuiButtonTypeRight) && (type == InputTypeShort)) {
  7. view_dispatcher_send_custom_event(
  8. subghz->view_dispatcher, SubGhzCustomEventSceneDeleteRAW);
  9. } else if((result == GuiButtonTypeLeft) && (type == InputTypeShort)) {
  10. view_dispatcher_send_custom_event(
  11. subghz->view_dispatcher, SubGhzCustomEventSceneDeleteRAWBack);
  12. }
  13. }
  14. void subghz_scene_delete_raw_on_enter(void* context) {
  15. SubGhz* subghz = context;
  16. FuriString* frequency_str;
  17. FuriString* modulation_str;
  18. frequency_str = furi_string_alloc();
  19. modulation_str = furi_string_alloc();
  20. char delete_str[SUBGHZ_MAX_LEN_NAME + 16];
  21. FuriString* file_name;
  22. file_name = furi_string_alloc();
  23. path_extract_filename(subghz->file_path, file_name, true);
  24. snprintf(delete_str, sizeof(delete_str), "\e#Delete %s?\e#", furi_string_get_cstr(file_name));
  25. furi_string_free(file_name);
  26. widget_add_text_box_element(
  27. subghz->widget, 0, 0, 128, 23, AlignCenter, AlignCenter, delete_str, false);
  28. widget_add_string_element(
  29. subghz->widget, 38, 25, AlignLeft, AlignTop, FontSecondary, "RAW signal");
  30. subghz_get_frequency_modulation(subghz, frequency_str, modulation_str);
  31. widget_add_string_element(
  32. subghz->widget,
  33. 35,
  34. 37,
  35. AlignLeft,
  36. AlignTop,
  37. FontSecondary,
  38. furi_string_get_cstr(frequency_str));
  39. widget_add_string_element(
  40. subghz->widget,
  41. 72,
  42. 37,
  43. AlignLeft,
  44. AlignTop,
  45. FontSecondary,
  46. furi_string_get_cstr(modulation_str));
  47. furi_string_free(frequency_str);
  48. furi_string_free(modulation_str);
  49. widget_add_button_element(
  50. subghz->widget, GuiButtonTypeRight, "Delete", subghz_scene_delete_raw_callback, subghz);
  51. widget_add_button_element(
  52. subghz->widget, GuiButtonTypeLeft, "Back", subghz_scene_delete_raw_callback, subghz);
  53. view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdWidget);
  54. }
  55. bool subghz_scene_delete_raw_on_event(void* context, SceneManagerEvent event) {
  56. SubGhz* subghz = context;
  57. if(event.type == SceneManagerEventTypeCustom) {
  58. if(event.event == SubGhzCustomEventSceneDeleteRAW) {
  59. furi_string_set(subghz->file_path_tmp, subghz->file_path);
  60. if(subghz_delete_file(subghz)) {
  61. scene_manager_next_scene(subghz->scene_manager, SubGhzSceneDeleteSuccess);
  62. } else {
  63. scene_manager_search_and_switch_to_previous_scene(
  64. subghz->scene_manager, SubGhzSceneStart);
  65. }
  66. return true;
  67. } else if(event.event == SubGhzCustomEventSceneDeleteRAWBack) {
  68. return scene_manager_previous_scene(subghz->scene_manager);
  69. }
  70. }
  71. return false;
  72. }
  73. void subghz_scene_delete_raw_on_exit(void* context) {
  74. SubGhz* subghz = context;
  75. widget_reset(subghz->widget);
  76. }