flipbip_scene_menu.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "../flipbip.h"
  2. enum SubmenuIndex {
  3. SubmenuIndexScene1 = 10,
  4. // SubmenuIndexScene2,
  5. SubmenuIndexSettings,
  6. };
  7. void flipbip_scene_menu_submenu_callback(void* context, uint32_t index) {
  8. FlipBip* app = context;
  9. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  10. }
  11. void flipbip_scene_menu_on_enter(void* context) {
  12. FlipBip* app = context;
  13. submenu_add_item(app->submenu, "Generate wallet", SubmenuIndexScene1, flipbip_scene_menu_submenu_callback, app);
  14. //submenu_add_item(app->submenu, "Scene 2", SubmenuIndexScene2, flipbip_scene_menu_submenu_callback, app);
  15. submenu_add_item(app->submenu, "Settings", SubmenuIndexSettings, flipbip_scene_menu_submenu_callback, app);
  16. submenu_set_selected_item(app->submenu, scene_manager_get_scene_state(app->scene_manager, FlipBipSceneMenu));
  17. view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewIdMenu);
  18. }
  19. bool flipbip_scene_menu_on_event(void* context, SceneManagerEvent event) {
  20. FlipBip* app = context;
  21. UNUSED(app);
  22. if(event.type == SceneManagerEventTypeBack) {
  23. //exit app
  24. scene_manager_stop(app->scene_manager);
  25. view_dispatcher_stop(app->view_dispatcher);
  26. return true;
  27. } else if(event.type == SceneManagerEventTypeCustom) {
  28. if(event.event == SubmenuIndexScene1) {
  29. scene_manager_set_scene_state(
  30. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1);
  31. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  32. return true;
  33. // } else if (event.event == SubmenuIndexScene2) {
  34. // scene_manager_set_scene_state(
  35. // app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene2);
  36. // scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_2);
  37. // return true;
  38. } else if (event.event == SubmenuIndexSettings) {
  39. scene_manager_set_scene_state(
  40. app->scene_manager, FlipBipSceneMenu, SubmenuIndexSettings);
  41. scene_manager_next_scene(app->scene_manager, FlipBipSceneSettings);
  42. return true;
  43. }
  44. }
  45. return false;
  46. }
  47. void flipbip_scene_menu_on_exit(void* context) {
  48. FlipBip* app = context;
  49. submenu_reset(app->submenu);
  50. }