desktop_view_pin_setup_done.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #include <furi.h>
  2. #include <furi_hal.h>
  3. #include <gui/elements.h>
  4. #include <gui/canvas.h>
  5. #include <toolbox/version.h>
  6. #include <assets_icons.h>
  7. #include <dolphin/helpers/dolphin_state.h>
  8. #include <dolphin/dolphin.h>
  9. #include "../desktop_i.h"
  10. #include "desktop_view_pin_setup_done.h"
  11. struct DesktopViewPinSetupDone {
  12. View* view;
  13. DesktopViewPinSetupDoneDoneCallback callback;
  14. void* context;
  15. };
  16. static void desktop_view_pin_done_draw(Canvas* canvas, void* model) {
  17. furi_assert(canvas);
  18. furi_assert(model);
  19. canvas_set_font(canvas, FontPrimary);
  20. elements_multiline_text_aligned(
  21. canvas, 64, 0, AlignCenter, AlignTop, "Prepare to use\narrows as\nPIN symbols");
  22. canvas_set_font(canvas, FontSecondary);
  23. elements_multiline_text(canvas, 58, 24, "Prepare to use\narrows as\nPIN symbols");
  24. canvas_draw_icon(canvas, 16, 18, &I_Pin_attention_dpad_29x29);
  25. elements_button_right(canvas, "Next");
  26. }
  27. static bool desktop_view_pin_done_input(InputEvent* event, void* context) {
  28. furi_assert(event);
  29. furi_assert(context);
  30. DesktopViewPinSetupDone* instance = context;
  31. bool consumed = false;
  32. if((event->key == InputKeyRight) && (event->type == InputTypeShort)) {
  33. instance->callback(instance->context);
  34. consumed = true;
  35. }
  36. return consumed;
  37. }
  38. void desktop_view_pin_done_set_callback(
  39. DesktopViewPinSetupDone* instance,
  40. DesktopViewPinSetupDoneDoneCallback callback,
  41. void* context) {
  42. furi_assert(instance);
  43. furi_assert(callback);
  44. instance->callback = callback;
  45. instance->context = context;
  46. }
  47. DesktopViewPinSetupDone* desktop_view_pin_done_alloc() {
  48. DesktopViewPinSetupDone* view = malloc(sizeof(DesktopViewPinSetupDone));
  49. view->view = view_alloc();
  50. view_allocate_model(view->view, ViewModelTypeLockFree, 1);
  51. view_set_context(view->view, view);
  52. view_set_draw_callback(view->view, desktop_view_pin_done_draw);
  53. view_set_input_callback(view->view, desktop_view_pin_done_input);
  54. return view;
  55. }
  56. void desktop_view_pin_done_free(DesktopViewPinSetupDone* instance) {
  57. furi_assert(instance);
  58. view_free(instance->view);
  59. free(instance);
  60. }
  61. View* desktop_view_pin_done_get_view(DesktopViewPinSetupDone* instance) {
  62. furi_assert(instance);
  63. return instance->view;
  64. }