nfc_magic_scene_gen4_menu.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "../nfc_magic_app_i.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexWrite,
  4. SubmenuIndexChangePassword,
  5. SubmenuIndexSetShadowMode,
  6. SubmenuIndexSetDirectWriteBlock0Mode,
  7. SubmenuIndexInfo,
  8. SubmenuIndexWipe,
  9. };
  10. void nfc_magic_scene_gen4_menu_submenu_callback(void* context, uint32_t index) {
  11. NfcMagicApp* instance = context;
  12. view_dispatcher_send_custom_event(instance->view_dispatcher, index);
  13. }
  14. void nfc_magic_scene_gen4_menu_on_enter(void* context) {
  15. NfcMagicApp* instance = context;
  16. Submenu* submenu = instance->submenu;
  17. submenu_add_item(
  18. submenu, "Write", SubmenuIndexWrite, nfc_magic_scene_gen4_menu_submenu_callback, instance);
  19. submenu_add_item(
  20. submenu,
  21. "Change password",
  22. SubmenuIndexChangePassword,
  23. nfc_magic_scene_gen4_menu_submenu_callback,
  24. instance);
  25. submenu_add_item(
  26. submenu,
  27. "Set Shadow Mode",
  28. SubmenuIndexSetShadowMode,
  29. nfc_magic_scene_gen4_menu_submenu_callback,
  30. instance);
  31. submenu_add_item(
  32. submenu,
  33. "Set Gen2 Mode",
  34. SubmenuIndexSetDirectWriteBlock0Mode,
  35. nfc_magic_scene_gen4_menu_submenu_callback,
  36. instance);
  37. submenu_add_item(
  38. submenu, "Wipe", SubmenuIndexWipe, nfc_magic_scene_gen4_menu_submenu_callback, instance);
  39. submenu_add_item(
  40. submenu, "Info", SubmenuIndexInfo, nfc_magic_scene_gen4_menu_submenu_callback, instance);
  41. submenu_set_selected_item(
  42. submenu, scene_manager_get_scene_state(instance->scene_manager, NfcMagicSceneGen4Menu));
  43. view_dispatcher_switch_to_view(instance->view_dispatcher, NfcMagicAppViewMenu);
  44. }
  45. bool nfc_magic_scene_gen4_menu_on_event(void* context, SceneManagerEvent event) {
  46. NfcMagicApp* instance = context;
  47. bool consumed = false;
  48. if(event.type == SceneManagerEventTypeCustom) {
  49. if(event.event == SubmenuIndexWrite) {
  50. scene_manager_next_scene(instance->scene_manager, NfcMagicSceneFileSelect);
  51. consumed = true;
  52. } else if(event.event == SubmenuIndexChangePassword) {
  53. scene_manager_next_scene(instance->scene_manager, NfcMagicSceneKeyInput);
  54. consumed = true;
  55. } else if(event.event == SubmenuIndexWipe) {
  56. scene_manager_next_scene(instance->scene_manager, NfcMagicSceneWipe);
  57. consumed = true;
  58. } else if(event.event == SubmenuIndexInfo) {
  59. scene_manager_next_scene(instance->scene_manager, NfcMagicSceneGen4GetInfo);
  60. consumed = true;
  61. } else if(event.event == SubmenuIndexSetShadowMode) {
  62. scene_manager_next_scene(instance->scene_manager, NfcMagicSceneGen4SelectShdMode);
  63. consumed = true;
  64. } else if(event.event == SubmenuIndexSetDirectWriteBlock0Mode) {
  65. scene_manager_next_scene(
  66. instance->scene_manager, NfcMagicSceneGen4SelectDirectWriteBlock0Mode);
  67. consumed = true;
  68. }
  69. scene_manager_set_scene_state(instance->scene_manager, NfcMagicSceneGen4Menu, event.event);
  70. } else if(event.type == SceneManagerEventTypeBack) {
  71. if(instance->gen4_password != 0) {
  72. consumed = scene_manager_search_and_switch_to_previous_scene(
  73. instance->scene_manager, NfcMagicSceneGen4ActionsMenu);
  74. } else {
  75. consumed = scene_manager_search_and_switch_to_previous_scene(
  76. instance->scene_manager, NfcMagicSceneStart);
  77. }
  78. }
  79. return consumed;
  80. }
  81. void nfc_magic_scene_gen4_menu_on_exit(void* context) {
  82. NfcMagicApp* instance = context;
  83. submenu_reset(instance->submenu);
  84. }