flipbip_scene_menu.c 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. for(uint32_t coin_type = 0; coin_type < NUM_COINS; coin_type++) {
  21. char wallet_menu_item[17] = "View wallet";
  22. strncpy(
  23. wallet_menu_item + 5,
  24. COIN_TEXT_ARRAY[coin_type][COIN_TEXT_LABEL],
  25. strlen(COIN_TEXT_ARRAY[coin_type][COIN_TEXT_LABEL]));
  26. submenu_add_item(
  27. app->submenu,
  28. wallet_menu_item,
  29. coin_type,
  30. flipbip_scene_menu_submenu_callback,
  31. app);
  32. }
  33. submenu_add_item(
  34. app->submenu,
  35. "Regenerate wallet",
  36. SubmenuIndexScene1Renew,
  37. flipbip_scene_menu_submenu_callback,
  38. app);
  39. } else {
  40. submenu_add_item(
  41. app->submenu,
  42. "Generate new wallet",
  43. SubmenuIndexScene1New,
  44. flipbip_scene_menu_submenu_callback,
  45. app);
  46. }
  47. submenu_add_item(
  48. app->submenu,
  49. app->mnemonic_menu_text,
  50. SubmenuIndexScene1Import,
  51. flipbip_scene_menu_submenu_callback,
  52. app);
  53. submenu_add_item(
  54. app->submenu, "Settings", SubmenuIndexSettings, flipbip_scene_menu_submenu_callback, app);
  55. submenu_set_selected_item(
  56. app->submenu, scene_manager_get_scene_state(app->scene_manager, FlipBipSceneMenu));
  57. view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewIdMenu);
  58. }
  59. bool flipbip_scene_menu_on_event(void* context, SceneManagerEvent event) {
  60. FlipBip* app = context;
  61. //UNUSED(app);
  62. if(event.type == SceneManagerEventTypeBack) {
  63. //exit app
  64. scene_manager_stop(app->scene_manager);
  65. view_dispatcher_stop(app->view_dispatcher);
  66. return true;
  67. } else if(event.type == SceneManagerEventTypeCustom) {
  68. if(event.event < SubmenuIndexScene1New) {
  69. app->overwrite_saved_seed = 0;
  70. app->import_from_mnemonic = 0;
  71. app->coin_type = event.event; // CoinType
  72. scene_manager_set_scene_state(
  73. app->scene_manager, FlipBipSceneMenu, event.event); // CoinType
  74. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  75. return true;
  76. } else if(event.event == SubmenuIndexScene1New) {
  77. app->overwrite_saved_seed = 1;
  78. app->import_from_mnemonic = 0;
  79. app->wallet_create(app);
  80. return true;
  81. } else if(event.event == SubmenuIndexScene1Renew) {
  82. app->overwrite_saved_seed = 1;
  83. app->import_from_mnemonic = 0;
  84. view_dispatcher_switch_to_view(app->view_dispatcher, FlipBipViewRenewConfirm);
  85. return true;
  86. } else if(event.event == SubmenuIndexScene1Import) {
  87. app->import_from_mnemonic = 1;
  88. scene_manager_set_scene_state(
  89. app->scene_manager, FlipBipSceneMenu, SubmenuIndexScene1Import);
  90. scene_manager_next_scene(app->scene_manager, FlipBipSceneScene_1);
  91. return true;
  92. } else if(event.event == SubmenuIndexSettings) {
  93. scene_manager_set_scene_state(
  94. app->scene_manager, FlipBipSceneMenu, SubmenuIndexSettings);
  95. scene_manager_next_scene(app->scene_manager, FlipBipSceneSettings);
  96. return true;
  97. } else if(event.event == SubmenuIndexNOP) {
  98. return true;
  99. }
  100. }
  101. return false;
  102. }
  103. void flipbip_scene_menu_on_exit(void* context) {
  104. FlipBip* app = context;
  105. submenu_reset(app->submenu);
  106. }