flipbip_scene_menu.c 5.7 KB

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