flipbip_scene_menu.c 5.6 KB

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