flipbip_scene_menu.c 4.6 KB

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