flipbip39_scene_1.c 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #include "../flipbip39.h"
  2. #include <furi.h>
  3. #include <furi_hal.h>
  4. #include <input/input.h>
  5. #include <gui/elements.h>
  6. #include <dolphin/dolphin.h>
  7. //#include "../crypto/bip32.h"
  8. #include "../crypto/bip39.h"
  9. //#include "../crypto/ecdsa.h"
  10. //#include "../crypto/curves.h"
  11. struct FlipBip39Scene1 {
  12. View* view;
  13. FlipBip39Scene1Callback callback;
  14. void* context;
  15. };
  16. typedef struct {
  17. int some_value;
  18. } FlipBip39Scene1Model;
  19. void flipbip39_scene_1_set_callback(
  20. FlipBip39Scene1* instance,
  21. FlipBip39Scene1Callback callback,
  22. void* context) {
  23. furi_assert(instance);
  24. furi_assert(callback);
  25. instance->callback = callback;
  26. instance->context = context;
  27. }
  28. void flipbip39_scene_1_draw(Canvas* canvas, FlipBip39Scene1Model* model) {
  29. UNUSED(model);
  30. canvas_clear(canvas);
  31. canvas_set_color(canvas, ColorBlack);
  32. canvas_set_font(canvas, FontPrimary);
  33. canvas_draw_str_aligned(canvas, 0, 10, AlignLeft, AlignTop, "This is Scene 1");
  34. canvas_set_font(canvas, FontSecondary);
  35. canvas_draw_str_aligned(canvas, 0, 22, AlignLeft, AlignTop, mnemonic_generate(128));
  36. //canvas_draw_str_aligned(canvas, 0, 32, AlignLeft, AlignTop, "used as flipbip39");
  37. }
  38. static void flipbip39_scene_1_model_init(FlipBip39Scene1Model* const model) {
  39. model->some_value = 1;
  40. }
  41. bool flipbip39_scene_1_input(InputEvent* event, void* context) {
  42. furi_assert(context);
  43. FlipBip39Scene1* instance = context;
  44. if (event->type == InputTypeRelease) {
  45. switch(event->key) {
  46. case InputKeyBack:
  47. with_view_model(
  48. instance->view,
  49. FlipBip39Scene1Model * model,
  50. {
  51. UNUSED(model);
  52. instance->callback(FlipBip39CustomEventScene1Back, instance->context);
  53. },
  54. true);
  55. break;
  56. case InputKeyLeft:
  57. case InputKeyRight:
  58. case InputKeyUp:
  59. case InputKeyDown:
  60. case InputKeyOk:
  61. with_view_model(
  62. instance->view,
  63. FlipBip39Scene1Model* model,
  64. {
  65. UNUSED(model);
  66. },
  67. true);
  68. break;
  69. case InputKeyMAX:
  70. break;
  71. }
  72. }
  73. return true;
  74. }
  75. void flipbip39_scene_1_exit(void* context) {
  76. furi_assert(context);
  77. }
  78. void flipbip39_scene_1_enter(void* context) {
  79. furi_assert(context);
  80. FlipBip39Scene1* instance = (FlipBip39Scene1*)context;
  81. with_view_model(
  82. instance->view,
  83. FlipBip39Scene1Model * model,
  84. {
  85. flipbip39_scene_1_model_init(model);
  86. },
  87. true
  88. );
  89. }
  90. FlipBip39Scene1* flipbip39_scene_1_alloc() {
  91. FlipBip39Scene1* instance = malloc(sizeof(FlipBip39Scene1));
  92. instance->view = view_alloc();
  93. view_allocate_model(instance->view, ViewModelTypeLocking, sizeof(FlipBip39Scene1Model));
  94. view_set_context(instance->view, instance); // furi_assert crashes in events without this
  95. view_set_draw_callback(instance->view, (ViewDrawCallback)flipbip39_scene_1_draw);
  96. view_set_input_callback(instance->view, flipbip39_scene_1_input);
  97. view_set_enter_callback(instance->view, flipbip39_scene_1_enter);
  98. view_set_exit_callback(instance->view, flipbip39_scene_1_exit);
  99. with_view_model(
  100. instance->view,
  101. FlipBip39Scene1Model * model,
  102. {
  103. flipbip39_scene_1_model_init(model);
  104. },
  105. true
  106. );
  107. return instance;
  108. }
  109. void flipbip39_scene_1_free(FlipBip39Scene1* instance) {
  110. furi_assert(instance);
  111. with_view_model(
  112. instance->view,
  113. FlipBip39Scene1Model * model,
  114. {
  115. UNUSED(model);
  116. },
  117. true);
  118. view_free(instance->view);
  119. free(instance);
  120. }
  121. View* flipbip39_scene_1_get_view(FlipBip39Scene1* instance) {
  122. furi_assert(instance);
  123. return instance->view;
  124. }