[FL-2459, FL-2469]SubGhz: displaying a long name in RAW, launching files from subfolders, bugfix (#1125)
* SubGhz: fix the RAW file is not restored when it is launched from under the folder * SubGhz: fix does not fit long RAW file name * SubGhz: fix Read not cleared after file rename * SubGhz: fix restore default frequency and modulation on output * SubGhz: fix long name output in RAW
This commit is contained in:
		| @@ -21,7 +21,7 @@ void subghz_scene_delete_raw_on_enter(void* context) { | ||||
|     string_init(frequency_str); | ||||
|     string_init(modulation_str); | ||||
|  | ||||
|     char delete_str[64]; | ||||
|     char delete_str[256]; | ||||
|     snprintf(delete_str, sizeof(delete_str), "\e#Delete %s?\e#", subghz->file_name); | ||||
|     widget_add_text_box_element( | ||||
|         subghz->widget, 0, 0, 128, 23, AlignCenter, AlignCenter, delete_str, false); | ||||
|   | ||||
| @@ -48,6 +48,8 @@ bool subghz_scene_need_saving_on_event(void* context, SceneManagerEvent event) { | ||||
|         } else if(event.event == SubGhzCustomEventSceneExit) { | ||||
|             if(subghz->txrx->rx_key_state == SubGhzRxKeyStateExit) { | ||||
|                 subghz->txrx->rx_key_state = SubGhzRxKeyStateIDLE; | ||||
|                 subghz->txrx->frequency = subghz_setting_get_default_frequency(subghz->setting); | ||||
|                 subghz->txrx->preset = FuriHalSubGhzPresetOok650Async; | ||||
|                 scene_manager_search_and_switch_to_previous_scene( | ||||
|                     subghz->scene_manager, SubGhzSceneStart); | ||||
|             } else { | ||||
|   | ||||
| @@ -230,7 +230,8 @@ bool subghz_scene_read_raw_on_event(void* context, SceneManagerEvent event) { | ||||
|             }; | ||||
|             subghz_protocol_raw_save_to_file_stop( | ||||
|                 (SubGhzProtocolDecoderRAW*)subghz->txrx->decoder_result); | ||||
|             subghz_protocol_raw_gen_fff_data(subghz->txrx->fff_data, RAW_FILE_NAME); | ||||
|             subghz_protocol_raw_gen_fff_data( | ||||
|                 subghz->txrx->fff_data, SUBGHZ_APP_FOLDER, RAW_FILE_NAME); | ||||
|             subghz->state_notifications = SubGhzNotificationStateIDLE; | ||||
|  | ||||
|             subghz->txrx->rx_key_state = SubGhzRxKeyStateAddKey; | ||||
|   | ||||
| @@ -71,7 +71,10 @@ void subghz_scene_receiver_on_enter(void* context) { | ||||
|     string_init(str_buff); | ||||
|  | ||||
|     if(subghz->txrx->rx_key_state == SubGhzRxKeyStateIDLE) { | ||||
|         subghz->txrx->frequency = subghz_setting_get_default_frequency(subghz->setting); | ||||
|         subghz->txrx->preset = FuriHalSubGhzPresetOok650Async; | ||||
|         subghz_history_reset(subghz->txrx->history); | ||||
|         subghz->txrx->rx_key_state = SubGhzRxKeyStateStart; | ||||
|     } | ||||
|  | ||||
|     //Load history to receiver | ||||
| @@ -120,8 +123,6 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { | ||||
|                 subghz_sleep(subghz); | ||||
|             }; | ||||
|             subghz->txrx->hopper_state = SubGhzHopperStateOFF; | ||||
|             subghz->txrx->frequency = subghz_setting_get_default_frequency(subghz->setting); | ||||
|             subghz->txrx->preset = FuriHalSubGhzPresetOok650Async; | ||||
|             subghz->txrx->idx_menu_chosen = 0; | ||||
|             subghz_receiver_set_rx_callback(subghz->txrx->receiver, NULL, subghz); | ||||
|  | ||||
| @@ -129,6 +130,9 @@ bool subghz_scene_receiver_on_event(void* context, SceneManagerEvent event) { | ||||
|                 subghz->txrx->rx_key_state = SubGhzRxKeyStateExit; | ||||
|                 scene_manager_next_scene(subghz->scene_manager, SubGhzSceneNeedSaving); | ||||
|             } else { | ||||
|                 subghz->txrx->rx_key_state = SubGhzRxKeyStateIDLE; | ||||
|                 subghz->txrx->frequency = subghz_setting_get_default_frequency(subghz->setting); | ||||
|                 subghz->txrx->preset = FuriHalSubGhzPresetOok650Async; | ||||
|                 scene_manager_search_and_switch_to_previous_scene( | ||||
|                     subghz->scene_manager, SubGhzSceneStart); | ||||
|             } | ||||
|   | ||||
| @@ -84,7 +84,8 @@ bool subghz_scene_save_name_on_event(void* context, SceneManagerEvent event) { | ||||
|  | ||||
|                 if(scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneReadRAW) != | ||||
|                    SubGhzCustomEventManagerNoSet) { | ||||
|                     subghz_protocol_raw_gen_fff_data(subghz->txrx->fff_data, subghz->file_name); | ||||
|                     subghz_protocol_raw_gen_fff_data( | ||||
|                         subghz->txrx->fff_data, SUBGHZ_APP_FOLDER, subghz->file_name); | ||||
|                     scene_manager_set_scene_state( | ||||
|                         subghz->scene_manager, SubGhzSceneReadRAW, SubGhzCustomEventManagerNoSet); | ||||
|                 } else { | ||||
|   | ||||
| @@ -32,6 +32,7 @@ bool subghz_scene_save_success_on_event(void* context, SceneManagerEvent event) | ||||
|                 subghz->txrx->rx_key_state = SubGhzRxKeyStateRAWSave; | ||||
|                 if(!scene_manager_search_and_switch_to_previous_scene( | ||||
|                        subghz->scene_manager, SubGhzSceneReadRAW)) { | ||||
|                     subghz->txrx->rx_key_state = SubGhzRxKeyStateIDLE; | ||||
|                     if(!scene_manager_search_and_switch_to_previous_scene( | ||||
|                            subghz->scene_manager, SubGhzSceneSaved)) { | ||||
|                         scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaved); | ||||
|   | ||||
| @@ -108,6 +108,8 @@ bool subghz_scene_transmitter_on_event(void* context, SceneManagerEvent event) { | ||||
|  | ||||
| void subghz_scene_transmitter_on_exit(void* context) { | ||||
|     SubGhz* subghz = context; | ||||
|  | ||||
|     //Restore default setting | ||||
|     subghz->txrx->frequency = subghz_setting_get_default_frequency(subghz->setting); | ||||
|     subghz->txrx->preset = FuriHalSubGhzPresetOok650Async; | ||||
|     subghz->state_notifications = SubGhzNotificationStateIDLE; | ||||
| } | ||||
|   | ||||
| @@ -279,8 +279,13 @@ bool subghz_key_load(SubGhz* subghz, const char* file_path) { | ||||
|             //if RAW | ||||
|             string_t file_name; | ||||
|             string_init(file_name); | ||||
|             string_t path; | ||||
|             string_init(path); | ||||
|             path_extract_filename_no_ext(file_path, file_name); | ||||
|             subghz_protocol_raw_gen_fff_data(subghz->txrx->fff_data, string_get_cstr(file_name)); | ||||
|             path_extract_dirname(file_path, path); | ||||
|             subghz_protocol_raw_gen_fff_data( | ||||
|                 subghz->txrx->fff_data, string_get_cstr(path), string_get_cstr(file_name)); | ||||
|             string_clear(path); | ||||
|             string_clear(file_name); | ||||
|  | ||||
|         } else { | ||||
|   | ||||
| @@ -34,7 +34,7 @@ | ||||
|  | ||||
| #include <gui/modules/variable_item_list.h> | ||||
|  | ||||
| #define SUBGHZ_MAX_LEN_NAME 40 | ||||
| #define SUBGHZ_MAX_LEN_NAME 128 | ||||
|  | ||||
| /** SubGhzNotification state */ | ||||
| typedef enum { | ||||
| @@ -66,6 +66,7 @@ typedef enum { | ||||
|     SubGhzRxKeyStateNoSave, | ||||
|     SubGhzRxKeyStateNeedSave, | ||||
|     SubGhzRxKeyStateBack, | ||||
|     SubGhzRxKeyStateStart, | ||||
|     SubGhzRxKeyStateAddKey, | ||||
|     SubGhzRxKeyStateExit, | ||||
|     SubGhzRxKeyStateRAWLoad, | ||||
|   | ||||
| @@ -238,9 +238,9 @@ void subghz_read_raw_draw(Canvas* canvas, SubGhzReadRAWModel* model) { | ||||
|         elements_text_box( | ||||
|             canvas, | ||||
|             4, | ||||
|             12, | ||||
|             20, | ||||
|             110, | ||||
|             44, | ||||
|             30, | ||||
|             AlignCenter, | ||||
|             AlignCenter, | ||||
|             string_get_cstr(model->file_name), | ||||
|   | ||||
		Reference in New Issue
	
	Block a user