From b7e2281103c810aaa74f886300bab9e353d08cd6 Mon Sep 17 00:00:00 2001 From: Willy-JL Date: Mon, 6 Mar 2023 14:18:27 +0000 Subject: [PATCH] Xfw app error msg on bad frequency input --- ...reme_app_scene_protocols_frequencies_add.c | 50 ++++++++++++------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_frequencies_add.c b/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_frequencies_add.c index 990170049..45df3f4f2 100644 --- a/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_frequencies_add.c +++ b/applications/main/xtreme_app/scenes/xtreme_app_scene_protocols_frequencies_add.c @@ -1,27 +1,27 @@ #include "../xtreme_app.h" -enum TextInputIndex { - TextInputIndexResult, +enum TextInputResult { + TextInputResultOk, + TextInputResultError, }; static void xtreme_app_scene_protocols_frequencies_add_text_input_callback(void* context) { XtremeApp* app = context; - do { - char *end; - uint32_t value = strtol(app->subghz_freq_buffer, &end, 0); - if(*end) break; - value *= 10000; - if(!furi_hal_subghz_is_frequency_valid(value)) break; - bool is_hopper = scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd); - if(is_hopper) { - FrequencyList_push_back(app->subghz_hopper_frequencies, value); - } else { - FrequencyList_push_back(app->subghz_static_frequencies, value); - } - app->save_subghz_frequencies = true; - } while(false); - view_dispatcher_send_custom_event(app->view_dispatcher, TextInputIndexResult); + char *end; + uint32_t value = strtol(app->subghz_freq_buffer, &end, 0) * 10000; + if(*end || !furi_hal_subghz_is_frequency_valid(value)) { + view_dispatcher_send_custom_event(app->view_dispatcher, TextInputResultError); + return; + } + bool is_hopper = scene_manager_get_scene_state(app->scene_manager, XtremeAppSceneProtocolsFrequenciesAdd); + if(is_hopper) { + FrequencyList_push_back(app->subghz_hopper_frequencies, value); + } else { + FrequencyList_push_back(app->subghz_static_frequencies, value); + } + app->save_subghz_frequencies = true; + view_dispatcher_send_custom_event(app->view_dispatcher, TextInputResultOk); } void xtreme_app_scene_protocols_frequencies_add_on_enter(void* context) { @@ -43,6 +43,11 @@ void xtreme_app_scene_protocols_frequencies_add_on_enter(void* context) { view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewTextInput); } +void callback_return(void* context) { + XtremeApp* app = context; + scene_manager_previous_scene(app->scene_manager); +} + bool xtreme_app_scene_protocols_frequencies_add_on_event(void* context, SceneManagerEvent event) { XtremeApp* app = context; bool consumed = false; @@ -50,9 +55,18 @@ bool xtreme_app_scene_protocols_frequencies_add_on_event(void* context, SceneMan if(event.type == SceneManagerEventTypeCustom) { consumed = true; switch(event.event) { - case TextInputIndexResult: + case TextInputResultOk: scene_manager_previous_scene(app->scene_manager); break; + case TextInputResultError: + popup_set_header(app->popup, "Invalid value!", 64, 26, AlignCenter, AlignCenter); + popup_set_text(app->popup, "Frequency was not added...", 64, 40, AlignCenter, AlignCenter); + popup_set_callback(app->popup, callback_return); + popup_set_context(app->popup, app); + popup_set_timeout(app->popup, 1000); + popup_enable_timeout(app->popup); + view_dispatcher_switch_to_view(app->view_dispatcher, XtremeAppViewPopup); + break; default: break; }