hex_viewer_scene_menu.c 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "../hex_viewer.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexScroll = 10,
  4. SubmenuIndexInfo,
  5. SubmenuIndexOpen,
  6. // SubmenuIndexSettings,
  7. };
  8. void hex_viewer_scene_menu_submenu_callback(void* context, uint32_t index) {
  9. HexViewer* app = context;
  10. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  11. }
  12. void hex_viewer_scene_menu_on_enter(void* context) {
  13. HexViewer* app = context;
  14. submenu_set_header(app->submenu, "Select action");
  15. submenu_add_item(
  16. app->submenu,
  17. "Open file ...",
  18. SubmenuIndexOpen,
  19. hex_viewer_scene_menu_submenu_callback,
  20. app);
  21. submenu_add_item(
  22. app->submenu,
  23. "Scroll to ...",
  24. SubmenuIndexScroll,
  25. hex_viewer_scene_menu_submenu_callback,
  26. app);
  27. submenu_add_item(
  28. app->submenu,
  29. "Show info ...",
  30. SubmenuIndexInfo,
  31. hex_viewer_scene_menu_submenu_callback,
  32. app);
  33. // submenu_add_item(app->submenu, "Settings", SubmenuIndexSettings, hex_viewer_scene_menu_submenu_callback, app);
  34. submenu_set_selected_item(
  35. app->submenu, scene_manager_get_scene_state(app->scene_manager, HexViewerSceneMenu));
  36. view_dispatcher_switch_to_view(app->view_dispatcher, HexViewerViewIdMenu);
  37. }
  38. bool hex_viewer_scene_menu_on_event(void* context, SceneManagerEvent event) {
  39. HexViewer* app = context;
  40. if(event.type == SceneManagerEventTypeBack) {
  41. //exit app
  42. // scene_manager_stop(app->scene_manager);
  43. // view_dispatcher_stop(app->view_dispatcher);
  44. scene_manager_previous_scene(app->scene_manager);
  45. return true;
  46. } else if(event.type == SceneManagerEventTypeCustom) {
  47. if(event.event == SubmenuIndexScroll) {
  48. scene_manager_set_scene_state(
  49. app->scene_manager, HexViewerSceneMenu, SubmenuIndexScroll);
  50. scene_manager_next_scene(app->scene_manager, HexViewerSceneScroll);
  51. return true;
  52. } else if(event.event == SubmenuIndexInfo) {
  53. scene_manager_set_scene_state(
  54. app->scene_manager, HexViewerSceneMenu, SubmenuIndexInfo);
  55. scene_manager_next_scene(app->scene_manager, HexViewerSceneInfo);
  56. return true;
  57. } else if(event.event == SubmenuIndexOpen) {
  58. scene_manager_set_scene_state(
  59. app->scene_manager, HexViewerSceneMenu, SubmenuIndexOpen);
  60. scene_manager_next_scene(app->scene_manager, HexViewerSceneOpen);
  61. // } else if (event.event == SubmenuIndexSettings) {
  62. // scene_manager_set_scene_state(
  63. // app->scene_manager, HexViewerSceneMenu, SubmenuIndexSettings);
  64. // scene_manager_next_scene(app->scene_manager, HexViewerSceneSettings);
  65. // return true;
  66. }
  67. }
  68. return false;
  69. }
  70. void hex_viewer_scene_menu_on_exit(void* context) {
  71. HexViewer* app = context;
  72. submenu_reset(app->submenu);
  73. }