diff --git a/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577.c b/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577.c index c57373a3a..3b9b41909 100644 --- a/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577.c +++ b/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577.c @@ -83,10 +83,11 @@ bool lfrfid_scene_clear_t5577_on_event(void* context, SceneManagerEvent event) { LfRfid* app = context; bool consumed = false; - const uint32_t prev_scene = LfRfidSceneExtraActions; - - if(event.type == SceneManagerEventTypeCustom && event.event == LfRfidEventPopupClosed) { - scene_manager_search_and_switch_to_previous_scene(app->scene_manager, prev_scene); + if(event.type == SceneManagerEventTypeBack) { + consumed = true; // Ignore Back button presses + } else if(event.type == SceneManagerEventTypeCustom && event.event == LfRfidEventPopupClosed) { + scene_manager_search_and_switch_to_previous_scene( + app->scene_manager, LfRfidSceneExtraActions); consumed = true; } return consumed; diff --git a/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577_confirm.c b/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577_confirm.c new file mode 100644 index 000000000..ca0d43176 --- /dev/null +++ b/applications/main/lfrfid/scenes/lfrfid_scene_clear_t5577_confirm.c @@ -0,0 +1,46 @@ +#include "../lfrfid_i.h" + +void lfrfid_scene_clear_t5577_confirm_on_enter(void* context) { + LfRfid* app = context; + Widget* widget = app->widget; + + widget_add_button_element(widget, GuiButtonTypeLeft, "Exit", lfrfid_widget_callback, app); + widget_add_button_element(widget, GuiButtonTypeRight, "Start", lfrfid_widget_callback, app); + widget_add_string_multiline_element( + widget, 64, 22, AlignCenter, AlignBottom, FontPrimary, "Apply tag to\nFlipper's back"); + widget_add_string_multiline_element( + widget, + 64, + 45, + AlignCenter, + AlignBottom, + FontSecondary, + "And don't move it\nwhile process is running"); + + view_dispatcher_switch_to_view(app->view_dispatcher, LfRfidViewWidget); +} + +bool lfrfid_scene_clear_t5577_confirm_on_event(void* context, SceneManagerEvent event) { + LfRfid* app = context; + SceneManager* scene_manager = app->scene_manager; + bool consumed = false; + + if(event.type == SceneManagerEventTypeBack) { + consumed = true; // Ignore Back button presses + } else if(event.type == SceneManagerEventTypeCustom) { + consumed = true; + if(event.event == GuiButtonTypeLeft) { + scene_manager_search_and_switch_to_previous_scene( + scene_manager, LfRfidSceneExtraActions); + } else if(event.event == GuiButtonTypeRight) { + scene_manager_next_scene(scene_manager, LfRfidSceneClearT5577); + } + } + + return consumed; +} + +void lfrfid_scene_clear_t5577_confirm_on_exit(void* context) { + LfRfid* app = context; + widget_reset(app->widget); +} diff --git a/applications/main/lfrfid/scenes/lfrfid_scene_config.h b/applications/main/lfrfid/scenes/lfrfid_scene_config.h index 54b840844..7789e133e 100644 --- a/applications/main/lfrfid/scenes/lfrfid_scene_config.h +++ b/applications/main/lfrfid/scenes/lfrfid_scene_config.h @@ -16,6 +16,7 @@ ADD_SCENE(lfrfid, save_data, SaveData) ADD_SCENE(lfrfid, save_type, SaveType) ADD_SCENE(lfrfid, saved_info, SavedInfo) ADD_SCENE(lfrfid, clear_t5577, ClearT5577) +ADD_SCENE(lfrfid, clear_t5577_confirm, ClearT5577Confirm) ADD_SCENE(lfrfid, delete_success, DeleteSuccess) ADD_SCENE(lfrfid, extra_actions, ExtraActions) ADD_SCENE(lfrfid, raw_info, RawInfo) diff --git a/applications/main/lfrfid/scenes/lfrfid_scene_extra_actions.c b/applications/main/lfrfid/scenes/lfrfid_scene_extra_actions.c index bf73eccd3..d2bf20680 100644 --- a/applications/main/lfrfid/scenes/lfrfid_scene_extra_actions.c +++ b/applications/main/lfrfid/scenes/lfrfid_scene_extra_actions.c @@ -80,7 +80,7 @@ bool lfrfid_scene_extra_actions_on_event(void* context, SceneManagerEvent event) DOLPHIN_DEED(DolphinDeedRfidRead); consumed = true; } else if(event.event == SubmenuIndexClearT5577) { - scene_manager_next_scene(app->scene_manager, LfRfidSceneClearT5577); + scene_manager_next_scene(app->scene_manager, LfRfidSceneClearT5577Confirm); consumed = true; } else if(event.event == SubmenuIndexRAW) { scene_manager_next_scene(app->scene_manager, LfRfidSceneRawName);