diff --git a/applications/archive/scenes/archive_scene_rename.c b/applications/archive/scenes/archive_scene_rename.c index 315d4cb0..ad7669bc 100644 --- a/applications/archive/scenes/archive_scene_rename.c +++ b/applications/archive/scenes/archive_scene_rename.c @@ -75,6 +75,5 @@ bool archive_scene_rename_on_event(void* context, SceneManagerEvent event) { void archive_scene_rename_on_exit(void* context) { ArchiveApp* archive = (ArchiveApp*)context; // Clear view - text_input_set_header_text(archive->text_input, NULL); - text_input_set_result_callback(archive->text_input, NULL, NULL, NULL, 0, false); + text_input_clean(archive->text_input); } diff --git a/applications/gui/modules/text_input.c b/applications/gui/modules/text_input.c index 965f95ec..2b31f71b 100755 --- a/applications/gui/modules/text_input.c +++ b/applications/gui/modules/text_input.c @@ -369,15 +369,7 @@ TextInput* text_input_alloc() { view_set_draw_callback(text_input->view, text_input_view_draw_callback); view_set_input_callback(text_input->view, text_input_view_input_callback); - with_view_model( - text_input->view, (TextInputModel * model) { - model->text_buffer_size = 0; - model->header = ""; - model->selected_row = 0; - model->selected_column = 0; - model->clear_default_text = false; - return true; - }); + text_input_clean(text_input); return text_input; } @@ -388,6 +380,23 @@ void text_input_free(TextInput* text_input) { free(text_input); } +void text_input_clean(TextInput* text_input) { + furi_assert(text_input); + with_view_model( + text_input->view, (TextInputModel * model) { + model->text_buffer_size = 0; + model->header = ""; + model->selected_row = 0; + model->selected_column = 0; + model->clear_default_text = false; + model->text_buffer = NULL; + model->text_buffer_size = 0; + model->callback = NULL; + model->callback_context = NULL; + return true; + }); +} + View* text_input_get_view(TextInput* text_input) { furi_assert(text_input); return text_input->view; @@ -407,6 +416,11 @@ void text_input_set_result_callback( model->text_buffer = text_buffer; model->text_buffer_size = text_buffer_size; model->clear_default_text = clear_default_text; + if(text_buffer && text_buffer[0] != '\0') { + // Set focus on Save + model->selected_row = 2; + model->selected_column = 8; + } return true; }); } diff --git a/applications/gui/modules/text_input.h b/applications/gui/modules/text_input.h index d8e341cb..4ac7cd5a 100644 --- a/applications/gui/modules/text_input.h +++ b/applications/gui/modules/text_input.h @@ -9,32 +9,31 @@ extern "C" { typedef struct TextInput TextInput; typedef void (*TextInputCallback)(void* context); -/** - * @brief Allocate and initialize text input - * This text input is used to enter string - * +/** Allocate and initialize text input + * This text input is used to enter string + * @return TextInput instance */ TextInput* text_input_alloc(); -/** - * @brief Deinitialize and free text input - * - * @param text_input - Text input instance +/** Deinitialize and free text input + * @param text_input - TextInput instance */ void text_input_free(TextInput* text_input); -/** - * @brief Get text input view - * +/** Clean text input view + * Note: this function does not free memory * @param text_input - Text input instance + */ +void text_input_clean(TextInput* text_input); + +/** Get text input view + * @param text_input - TextInput instance * @return View instance that can be used for embedding */ View* text_input_get_view(TextInput* text_input); -/** - * @brief Set text input result callback - * - * @param text_input - Text input instance +/** Set text input result callback + * @param text_input - TextInput instance * @param callback - callback fn * @param callback_context - callback context * @param text_buffer - pointer to YOUR text buffer, that we going to modify @@ -49,10 +48,8 @@ void text_input_set_result_callback( size_t text_buffer_size, bool clear_default_text); -/** - * @brief Set text input header text - * - * @param text input - Text input instance +/** Set text input header text + * @param text_input - TextInput instance * @param text - text to be shown */ void text_input_set_header_text(TextInput* text_input, const char* text); diff --git a/applications/ibutton/scene/ibutton-scene-save-name.cpp b/applications/ibutton/scene/ibutton-scene-save-name.cpp index 2fcd0804..65cd560a 100644 --- a/applications/ibutton/scene/ibutton-scene-save-name.cpp +++ b/applications/ibutton/scene/ibutton-scene-save-name.cpp @@ -48,8 +48,7 @@ bool iButtonSceneSaveName::on_event(iButtonApp* app, iButtonEvent* event) { void iButtonSceneSaveName::on_exit(iButtonApp* app) { TextInput* text_input = app->get_view_manager()->get_text_input(); - text_input_set_header_text(text_input, ""); - text_input_set_result_callback(text_input, NULL, NULL, NULL, 0, false); + text_input_clean(text_input); } void iButtonSceneSaveName::text_input_callback(void* context) { diff --git a/applications/nfc/scenes/nfc_scene_save_name.c b/applications/nfc/scenes/nfc_scene_save_name.c index dc0c48cd..a30b24f6 100755 --- a/applications/nfc/scenes/nfc_scene_save_name.c +++ b/applications/nfc/scenes/nfc_scene_save_name.c @@ -60,6 +60,5 @@ void nfc_scene_save_name_on_exit(void* context) { Nfc* nfc = (Nfc*)context; // Clear view - text_input_set_header_text(nfc->text_input, NULL); - text_input_set_result_callback(nfc->text_input, NULL, NULL, NULL, 0, false); + text_input_clean(nfc->text_input); } diff --git a/applications/subghz/scenes/subghz_scene_save_name.c b/applications/subghz/scenes/subghz_scene_save_name.c index 81255723..ee21238a 100644 --- a/applications/subghz/scenes/subghz_scene_save_name.c +++ b/applications/subghz/scenes/subghz_scene_save_name.c @@ -61,6 +61,5 @@ void subghz_scene_save_name_on_exit(void* context) { SubGhz* subghz = context; // Clear view - text_input_set_header_text(subghz->text_input, NULL); - text_input_set_result_callback(subghz->text_input, NULL, NULL, NULL, 0, false); + text_input_clean(subghz->text_input); } diff --git a/lib/app-scened-template/view-modules/text-input-vm.cpp b/lib/app-scened-template/view-modules/text-input-vm.cpp index 7a6f7d39..ed497344 100644 --- a/lib/app-scened-template/view-modules/text-input-vm.cpp +++ b/lib/app-scened-template/view-modules/text-input-vm.cpp @@ -13,8 +13,7 @@ View* TextInputVM::get_view() { } void TextInputVM::clean() { - set_result_callback(NULL, NULL, NULL, 0, false); - set_header_text(""); + text_input_clean(text_input); } void TextInputVM::set_result_callback(