picopass_scene_write_card_failure.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "../picopass_i.h"
  2. #include <dolphin/dolphin.h>
  3. void picopass_scene_write_card_failure_widget_callback(
  4. GuiButtonType result,
  5. InputType type,
  6. void* context) {
  7. furi_assert(context);
  8. Picopass* picopass = context;
  9. if(type == InputTypeShort) {
  10. view_dispatcher_send_custom_event(picopass->view_dispatcher, result);
  11. }
  12. }
  13. void picopass_scene_write_card_failure_on_enter(void* context) {
  14. Picopass* picopass = context;
  15. Widget* widget = picopass->widget;
  16. FuriString* str = furi_string_alloc_set("Write Failure!");
  17. widget_add_button_element(
  18. widget,
  19. GuiButtonTypeLeft,
  20. "Retry",
  21. picopass_scene_write_card_failure_widget_callback,
  22. picopass);
  23. widget_add_button_element(
  24. widget,
  25. GuiButtonTypeRight,
  26. "Menu",
  27. picopass_scene_write_card_failure_widget_callback,
  28. picopass);
  29. widget_add_string_element(
  30. widget, 64, 5, AlignCenter, AlignCenter, FontSecondary, furi_string_get_cstr(str));
  31. furi_string_free(str);
  32. view_dispatcher_switch_to_view(picopass->view_dispatcher, PicopassViewWidget);
  33. }
  34. bool picopass_scene_write_card_failure_on_event(void* context, SceneManagerEvent event) {
  35. Picopass* picopass = context;
  36. bool consumed = false;
  37. if(event.type == SceneManagerEventTypeCustom) {
  38. if(event.event == GuiButtonTypeLeft) {
  39. consumed = scene_manager_previous_scene(picopass->scene_manager);
  40. } else if(event.event == GuiButtonTypeRight) {
  41. // Clear device name
  42. picopass_device_set_name(picopass->dev, "");
  43. consumed = scene_manager_search_and_switch_to_previous_scene(
  44. picopass->scene_manager, PicopassSceneStart);
  45. }
  46. }
  47. return consumed;
  48. }
  49. void picopass_scene_write_card_failure_on_exit(void* context) {
  50. Picopass* picopass = context;
  51. // Clear view
  52. widget_reset(picopass->widget);
  53. }