nfc_scene_saved_menu.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "../nfc_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexEmulate,
  4. SubmenuIndexRename,
  5. SubmenuIndexDelete,
  6. SubmenuIndexInfo,
  7. SubmenuIndexRestoreOriginal,
  8. };
  9. void nfc_scene_saved_menu_submenu_callback(void* context, uint32_t index) {
  10. Nfc* nfc = context;
  11. view_dispatcher_send_custom_event(nfc->view_dispatcher, index);
  12. }
  13. void nfc_scene_saved_menu_on_enter(void* context) {
  14. Nfc* nfc = context;
  15. Submenu* submenu = nfc->submenu;
  16. if(nfc->dev->format == NfcDeviceSaveFormatUid ||
  17. nfc->dev->format == NfcDeviceSaveFormatMifareDesfire ||
  18. nfc->dev->format == NfcDeviceSaveFormatBankCard) {
  19. submenu_add_item(
  20. submenu,
  21. "Emulate UID",
  22. SubmenuIndexEmulate,
  23. nfc_scene_saved_menu_submenu_callback,
  24. nfc);
  25. } else if(
  26. nfc->dev->format == NfcDeviceSaveFormatMifareUl ||
  27. nfc->dev->format == NfcDeviceSaveFormatMifareClassic) {
  28. submenu_add_item(
  29. submenu, "Emulate", SubmenuIndexEmulate, nfc_scene_saved_menu_submenu_callback, nfc);
  30. }
  31. submenu_add_item(
  32. submenu, "Info", SubmenuIndexInfo, nfc_scene_saved_menu_submenu_callback, nfc);
  33. submenu_set_selected_item(
  34. nfc->submenu, scene_manager_get_scene_state(nfc->scene_manager, NfcSceneSavedMenu));
  35. if(nfc->dev->shadow_file_exist) {
  36. submenu_add_item(
  37. submenu,
  38. "Restore to original",
  39. SubmenuIndexRestoreOriginal,
  40. nfc_scene_saved_menu_submenu_callback,
  41. nfc);
  42. }
  43. submenu_add_item(
  44. submenu, "Rename", SubmenuIndexRename, nfc_scene_saved_menu_submenu_callback, nfc);
  45. submenu_add_item(
  46. submenu, "Delete", SubmenuIndexDelete, nfc_scene_saved_menu_submenu_callback, nfc);
  47. view_dispatcher_switch_to_view(nfc->view_dispatcher, NfcViewMenu);
  48. }
  49. bool nfc_scene_saved_menu_on_event(void* context, SceneManagerEvent event) {
  50. Nfc* nfc = context;
  51. bool consumed = false;
  52. if(event.type == SceneManagerEventTypeCustom) {
  53. scene_manager_set_scene_state(nfc->scene_manager, NfcSceneSavedMenu, event.event);
  54. if(event.event == SubmenuIndexEmulate) {
  55. if(nfc->dev->format == NfcDeviceSaveFormatMifareUl) {
  56. scene_manager_next_scene(nfc->scene_manager, NfcSceneMfUltralightEmulate);
  57. } else if(nfc->dev->format == NfcDeviceSaveFormatMifareClassic) {
  58. scene_manager_next_scene(nfc->scene_manager, NfcSceneMfClassicEmulate);
  59. } else {
  60. scene_manager_next_scene(nfc->scene_manager, NfcSceneEmulateUid);
  61. }
  62. consumed = true;
  63. } else if(event.event == SubmenuIndexRename) {
  64. scene_manager_next_scene(nfc->scene_manager, NfcSceneSaveName);
  65. consumed = true;
  66. } else if(event.event == SubmenuIndexDelete) {
  67. scene_manager_next_scene(nfc->scene_manager, NfcSceneDelete);
  68. consumed = true;
  69. } else if(event.event == SubmenuIndexInfo) {
  70. scene_manager_next_scene(nfc->scene_manager, NfcSceneDeviceInfo);
  71. consumed = true;
  72. } else if(event.event == SubmenuIndexRestoreOriginal) {
  73. scene_manager_next_scene(nfc->scene_manager, NfcSceneRestoreOriginalConfirm);
  74. consumed = true;
  75. }
  76. }
  77. return consumed;
  78. }
  79. void nfc_scene_saved_menu_on_exit(void* context) {
  80. Nfc* nfc = context;
  81. submenu_reset(nfc->submenu);
  82. }