[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