flipbip_scene_menu.c 4.7 KB

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