nfc_scene_delete.c 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #include "../nfc_i.h"
  2. void nfc_scene_delete_widget_callback(GuiButtonType result, void* context) {
  3. Nfc* nfc = (Nfc*)context;
  4. view_dispatcher_send_custom_event(nfc->view_dispatcher, result);
  5. }
  6. void nfc_scene_delete_on_enter(void* context) {
  7. Nfc* nfc = (Nfc*)context;
  8. // Setup Custom Widget view
  9. char delete_str[64];
  10. snprintf(delete_str, sizeof(delete_str), "Delete %s", nfc->dev.dev_name);
  11. gui_widget_add_string_element(
  12. nfc->widget, 64, 6, AlignCenter, AlignTop, FontPrimary, delete_str);
  13. gui_widget_add_button_element(
  14. nfc->widget, GuiButtonTypeLeft, "Back", nfc_scene_delete_widget_callback, nfc);
  15. gui_widget_add_button_element(
  16. nfc->widget, GuiButtonTypeRight, "Delete", nfc_scene_delete_widget_callback, nfc);
  17. char uid_str[32];
  18. NfcDeviceCommomData* data = &nfc->dev.dev_data.nfc_data;
  19. if(data->uid_len == 4) {
  20. snprintf(
  21. uid_str,
  22. sizeof(uid_str),
  23. "UID: %02X %02X %02X %02X",
  24. data->uid[0],
  25. data->uid[1],
  26. data->uid[2],
  27. data->uid[3]);
  28. } else if(data->uid_len == 7) {
  29. snprintf(
  30. uid_str,
  31. sizeof(uid_str),
  32. "UID: %02X %02X %02X %02X %02X %02X %02X",
  33. data->uid[0],
  34. data->uid[1],
  35. data->uid[2],
  36. data->uid[3],
  37. data->uid[4],
  38. data->uid[5],
  39. data->uid[6]);
  40. }
  41. gui_widget_add_string_element(
  42. nfc->widget, 64, 21, AlignCenter, AlignTop, FontSecondary, uid_str);
  43. if(data->protocol > NfcDeviceProtocolUnknown) {
  44. gui_widget_add_string_element(
  45. nfc->widget,
  46. 10,
  47. 32,
  48. AlignLeft,
  49. AlignTop,
  50. FontSecondary,
  51. nfc_get_protocol(data->protocol));
  52. }
  53. // TODO change dinamically
  54. gui_widget_add_string_element(
  55. nfc->widget, 118, 32, AlignRight, AlignTop, FontSecondary, "NFC-A");
  56. char sak_str[16];
  57. snprintf(sak_str, sizeof(sak_str), "SAK: %02X", data->sak);
  58. gui_widget_add_string_element(
  59. nfc->widget, 10, 42, AlignLeft, AlignTop, FontSecondary, sak_str);
  60. char atqa_str[16];
  61. snprintf(atqa_str, sizeof(atqa_str), "ATQA: %02X%02X", data->atqa[0], data->atqa[1]);
  62. gui_widget_add_string_element(
  63. nfc->widget, 118, 42, AlignRight, AlignTop, FontSecondary, atqa_str);
  64. view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewWidget);
  65. }
  66. const bool nfc_scene_delete_on_event(void* context, SceneManagerEvent event) {
  67. Nfc* nfc = (Nfc*)context;
  68. if(event.type == SceneManagerEventTypeCustom) {
  69. if(event.event == GuiButtonTypeLeft) {
  70. return scene_manager_previous_scene(nfc->scene_manager);
  71. } else if(event.event == GuiButtonTypeRight) {
  72. if(nfc_device_delete(&nfc->dev)) {
  73. scene_manager_next_scene(nfc->scene_manager, NfcSceneDeleteSuccess);
  74. } else {
  75. scene_manager_search_previous_scene(nfc->scene_manager, NfcSceneStart);
  76. }
  77. return true;
  78. }
  79. }
  80. return false;
  81. }
  82. const void nfc_scene_delete_on_exit(void* context) {
  83. Nfc* nfc = (Nfc*)context;
  84. gui_widget_clear(nfc->widget);
  85. }