nfc_apdu_runner_scene_start.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * @Author: SpenserCai
  3. * @Date: 2025-03-07 16:30:29
  4. * @version:
  5. * @LastEditors: SpenserCai
  6. * @LastEditTime: 2025-03-11 09:50:54
  7. * @Description: file content
  8. */
  9. #include "../nfc_apdu_runner.h"
  10. #include "nfc_apdu_runner_scene.h"
  11. // 开始场景菜单项枚举
  12. enum {
  13. NfcApduRunnerStartSubmenuIndexLoadFile,
  14. NfcApduRunnerStartSubmenuIndexAbout,
  15. };
  16. // 开始场景菜单回调
  17. void nfc_apdu_runner_start_submenu_callback(void* context, uint32_t index) {
  18. NfcApduRunner* app = context;
  19. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  20. }
  21. // 开始场景进入回调
  22. void nfc_apdu_runner_scene_start_on_enter(void* context) {
  23. NfcApduRunner* app = context;
  24. Submenu* submenu = app->submenu;
  25. submenu_reset(submenu);
  26. submenu_add_item(
  27. submenu,
  28. "Load Script",
  29. NfcApduRunnerStartSubmenuIndexLoadFile,
  30. nfc_apdu_runner_start_submenu_callback,
  31. app);
  32. submenu_add_item(
  33. submenu,
  34. "About",
  35. NfcApduRunnerStartSubmenuIndexAbout,
  36. nfc_apdu_runner_start_submenu_callback,
  37. app);
  38. submenu_set_selected_item(
  39. submenu, scene_manager_get_scene_state(app->scene_manager, NfcApduRunnerSceneStart));
  40. view_dispatcher_switch_to_view(app->view_dispatcher, NfcApduRunnerViewSubmenu);
  41. }
  42. // 开始场景事件回调
  43. bool nfc_apdu_runner_scene_start_on_event(void* context, SceneManagerEvent event) {
  44. NfcApduRunner* app = context;
  45. bool consumed = false;
  46. if(event.type == SceneManagerEventTypeCustom) {
  47. scene_manager_set_scene_state(app->scene_manager, NfcApduRunnerSceneStart, event.event);
  48. switch(event.event) {
  49. case NfcApduRunnerStartSubmenuIndexLoadFile:
  50. scene_manager_next_scene(app->scene_manager, NfcApduRunnerSceneFileSelect);
  51. consumed = true;
  52. break;
  53. case NfcApduRunnerStartSubmenuIndexAbout:
  54. scene_manager_next_scene(app->scene_manager, NfcApduRunnerSceneAbout);
  55. consumed = true;
  56. break;
  57. }
  58. }
  59. return consumed;
  60. }
  61. // 开始场景退出回调
  62. void nfc_apdu_runner_scene_start_on_exit(void* context) {
  63. NfcApduRunner* app = context;
  64. submenu_reset(app->submenu);
  65. }