flipbip_scene_menu.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #include "../flipbip.h"
  2. #include "../helpers/flipbip_file.h"
  3. enum SubmenuIndex {
  4. SubmenuIndexScene1BTC = 10,
  5. SubmenuIndexScene1ETH,
  6. SubmenuIndexScene1DOGE,
  7. SubmenuIndexScene1New,
  8. SubmenuIndexSettings,
  9. };
  10. void flipbip_scene_menu_submenu_callback(void* context, uint32_t index) {
  11. FlipBip* app = context;
  12. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  13. }
  14. void flipbip_scene_menu_on_enter(void* context) {
  15. FlipBip* app = context;
  16. if(flipbip_has_settings(true) && flipbip_has_settings(false)) {
  17. submenu_add_item(
  18. app->submenu,
  19. "View saved BTC wallet",
  20. SubmenuIndexScene1BTC,
  21. flipbip_scene_menu_submenu_callback,
  22. app);
  23. submenu_add_item(
  24. app->submenu,
  25. "View saved ETH wallet",
  26. SubmenuIndexScene1ETH,
  27. flipbip_scene_menu_submenu_callback,
  28. app);
  29. submenu_add_item(
  30. app->submenu,
  31. "View saved DOGE wallet",
  32. SubmenuIndexScene1DOGE,
  33. flipbip_scene_menu_submenu_callback,
  34. app);
  35. }
  36. submenu_add_item(
  37. app->submenu,
  38. "Generate new wallet",
  39. SubmenuIndexScene1New,
  40. flipbip_scene_menu_submenu_callback,
  41. app);
  42. submenu_add_item(
  43. app->submenu, "Settings", SubmenuIndexSettings, flipbip_scene_menu_submenu_callback, app);
  44. submenu_set_selected_item(
  45. app->submenu, scene_manager_get_scene_state(app->scene_manager, FlipBipSceneMenu));
  46. view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewIdMenu);
  47. }
  48. bool flipbip_scene_menu_on_event(void* context, SceneManagerEvent event) {
  49. FlipBip* app = context;
  50. //UNUSED(app);
  51. if(event.type == SceneManagerEventTypeBack) {
  52. //exit app
  53. scene_manager_stop(app->scene_manager);
  54. view_dispatcher_stop(app->view_dispatcher);
  55. return true;
  56. } else if(event.type == SceneManagerEventTypeCustom) {
  57. if(event.event == SubmenuIndexScene1BTC) {
  58. app->overwrite_saved_seed = 0;
  59. app->bip44_coin = FlipBipCoinBTC0;
  60. scene_manager_set_scene_state(
  61. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1BTC);
  62. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  63. return true;
  64. } else if(event.event == SubmenuIndexScene1ETH) {
  65. app->overwrite_saved_seed = 0;
  66. app->bip44_coin = FlipBipCoinETH60;
  67. scene_manager_set_scene_state(
  68. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1ETH);
  69. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  70. return true;
  71. } else if(event.event == SubmenuIndexScene1DOGE) {
  72. app->overwrite_saved_seed = 0;
  73. app->bip44_coin = FlipBipCoinDOGE3;
  74. scene_manager_set_scene_state(
  75. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1DOGE);
  76. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  77. return true;
  78. } else if(event.event == SubmenuIndexScene1New) {
  79. app->overwrite_saved_seed = 1;
  80. scene_manager_set_scene_state(
  81. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1New);
  82. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  83. return true;
  84. } else if(event.event == SubmenuIndexSettings) {
  85. scene_manager_set_scene_state(
  86. app->scene_manager, FlipBipSceneMenu, SubmenuIndexSettings);
  87. scene_manager_next_scene(app->scene_manager, FlipBipSceneSettings);
  88. return true;
  89. }
  90. }
  91. return false;
  92. }
  93. void flipbip_scene_menu_on_exit(void* context) {
  94. FlipBip* app = context;
  95. submenu_reset(app->submenu);
  96. }