spi_mem_scene_saved_file_menu.c 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "../spi_mem_app_i.h"
  2. typedef enum {
  3. SPIMemSceneSavedFileMenuSubmenuIndexWrite,
  4. SPIMemSceneSavedFileMenuSubmenuIndexCompare,
  5. SPIMemSceneSavedFileMenuSubmenuIndexInfo,
  6. SPIMemSceneSavedFileMenuSubmenuIndexDelete,
  7. } SPIMemSceneSavedFileMenuSubmenuIndex;
  8. static void spi_mem_scene_saved_file_menu_submenu_callback(void* context, uint32_t index) {
  9. SPIMemApp* app = context;
  10. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  11. }
  12. void spi_mem_scene_saved_file_menu_on_enter(void* context) {
  13. SPIMemApp* app = context;
  14. submenu_add_item(
  15. app->submenu,
  16. "Write",
  17. SPIMemSceneSavedFileMenuSubmenuIndexWrite,
  18. spi_mem_scene_saved_file_menu_submenu_callback,
  19. app);
  20. submenu_add_item(
  21. app->submenu,
  22. "Compare",
  23. SPIMemSceneSavedFileMenuSubmenuIndexCompare,
  24. spi_mem_scene_saved_file_menu_submenu_callback,
  25. app);
  26. submenu_add_item(
  27. app->submenu,
  28. "Info",
  29. SPIMemSceneSavedFileMenuSubmenuIndexInfo,
  30. spi_mem_scene_saved_file_menu_submenu_callback,
  31. app);
  32. submenu_add_item(
  33. app->submenu,
  34. "Delete",
  35. SPIMemSceneSavedFileMenuSubmenuIndexDelete,
  36. spi_mem_scene_saved_file_menu_submenu_callback,
  37. app);
  38. submenu_set_selected_item(
  39. app->submenu, scene_manager_get_scene_state(app->scene_manager, SPIMemSceneSavedFileMenu));
  40. view_dispatcher_switch_to_view(app->view_dispatcher, SPIMemViewSubmenu);
  41. }
  42. bool spi_mem_scene_saved_file_menu_on_event(void* context, SceneManagerEvent event) {
  43. SPIMemApp* app = context;
  44. bool success = false;
  45. if(event.type == SceneManagerEventTypeCustom) {
  46. scene_manager_set_scene_state(app->scene_manager, SPIMemSceneSavedFileMenu, event.event);
  47. if(event.event == SPIMemSceneSavedFileMenuSubmenuIndexWrite) {
  48. app->mode = SPIMemModeWrite;
  49. scene_manager_next_scene(app->scene_manager, SPIMemSceneChipDetect);
  50. success = true;
  51. }
  52. if(event.event == SPIMemSceneSavedFileMenuSubmenuIndexCompare) {
  53. app->mode = SPIMemModeCompare;
  54. scene_manager_next_scene(app->scene_manager, SPIMemSceneChipDetect);
  55. success = true;
  56. }
  57. if(event.event == SPIMemSceneSavedFileMenuSubmenuIndexDelete) {
  58. scene_manager_next_scene(app->scene_manager, SPIMemSceneDeleteConfirm);
  59. success = true;
  60. }
  61. if(event.event == SPIMemSceneSavedFileMenuSubmenuIndexInfo) {
  62. scene_manager_next_scene(app->scene_manager, SPIMemSceneFileInfo);
  63. success = true;
  64. }
  65. }
  66. return success;
  67. }
  68. void spi_mem_scene_saved_file_menu_on_exit(void* context) {
  69. SPIMemApp* app = context;
  70. submenu_reset(app->submenu);
  71. }