flipbip_scene_menu.c 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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 BTC wallet",
  20. SubmenuIndexScene1BTC,
  21. flipbip_scene_menu_submenu_callback,
  22. app);
  23. submenu_add_item(
  24. app->submenu,
  25. "View ETH wallet",
  26. SubmenuIndexScene1ETH,
  27. flipbip_scene_menu_submenu_callback,
  28. app);
  29. submenu_add_item(
  30. app->submenu,
  31. "View DOGE wallet",
  32. SubmenuIndexScene1DOGE,
  33. flipbip_scene_menu_submenu_callback,
  34. app);
  35. submenu_add_item(
  36. app->submenu,
  37. "Regenerate wallet",
  38. SubmenuIndexScene1New,
  39. flipbip_scene_menu_submenu_callback,
  40. app);
  41. } else {
  42. submenu_add_item(
  43. app->submenu,
  44. "Generate new wallet",
  45. SubmenuIndexScene1New,
  46. flipbip_scene_menu_submenu_callback,
  47. app);
  48. }
  49. submenu_add_item(
  50. app->submenu, "Settings", SubmenuIndexSettings, flipbip_scene_menu_submenu_callback, app);
  51. submenu_set_selected_item(
  52. app->submenu, scene_manager_get_scene_state(app->scene_manager, FlipBipSceneMenu));
  53. view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewIdMenu);
  54. }
  55. bool flipbip_scene_menu_on_event(void* context, SceneManagerEvent event) {
  56. FlipBip* app = context;
  57. //UNUSED(app);
  58. if(event.type == SceneManagerEventTypeBack) {
  59. //exit app
  60. scene_manager_stop(app->scene_manager);
  61. view_dispatcher_stop(app->view_dispatcher);
  62. return true;
  63. } else if(event.type == SceneManagerEventTypeCustom) {
  64. if(event.event == SubmenuIndexScene1BTC) {
  65. app->overwrite_saved_seed = 0;
  66. app->bip44_coin = FlipBipCoinBTC0;
  67. scene_manager_set_scene_state(
  68. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1BTC);
  69. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  70. return true;
  71. } else if(event.event == SubmenuIndexScene1ETH) {
  72. app->overwrite_saved_seed = 0;
  73. app->bip44_coin = FlipBipCoinETH60;
  74. scene_manager_set_scene_state(
  75. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1ETH);
  76. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  77. return true;
  78. } else if(event.event == SubmenuIndexScene1DOGE) {
  79. app->overwrite_saved_seed = 0;
  80. app->bip44_coin = FlipBipCoinDOGE3;
  81. scene_manager_set_scene_state(
  82. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1DOGE);
  83. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  84. return true;
  85. } else if(event.event == SubmenuIndexScene1New) {
  86. app->overwrite_saved_seed = 1;
  87. scene_manager_set_scene_state(
  88. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1New);
  89. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  90. return true;
  91. } else if(event.event == SubmenuIndexSettings) {
  92. scene_manager_set_scene_state(
  93. app->scene_manager, FlipBipSceneMenu, SubmenuIndexSettings);
  94. scene_manager_next_scene(app->scene_manager, FlipBipSceneSettings);
  95. return true;
  96. }
  97. }
  98. return false;
  99. }
  100. void flipbip_scene_menu_on_exit(void* context) {
  101. FlipBip* app = context;
  102. submenu_reset(app->submenu);
  103. }