message_view.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "../barcode_app.h"
  2. #include "message_view.h"
  3. static void app_draw_callback(Canvas* canvas, void* ctx) {
  4. furi_assert(ctx);
  5. MessageViewModel* message_view_model = ctx;
  6. canvas_clear(canvas);
  7. if(message_view_model->message != NULL) {
  8. canvas_draw_str_aligned(
  9. canvas, 62, 30, AlignCenter, AlignCenter, message_view_model->message);
  10. }
  11. canvas_set_color(canvas, ColorBlack);
  12. canvas_draw_box(canvas, 100, 52, 28, 12);
  13. canvas_set_color(canvas, ColorWhite);
  14. canvas_draw_str_aligned(canvas, 114, 58, AlignCenter, AlignCenter, "OK");
  15. }
  16. static bool app_input_callback(InputEvent* input_event, void* ctx) {
  17. furi_assert(ctx);
  18. MessageView* message_view_object = ctx;
  19. if(input_event->key == InputKeyBack) {
  20. view_dispatcher_switch_to_view(
  21. message_view_object->barcode_app->view_dispatcher, MainMenuView);
  22. }
  23. if(input_event->type == InputTypeShort) {
  24. if(input_event->key == InputKeyOk) {
  25. view_dispatcher_switch_to_view(
  26. message_view_object->barcode_app->view_dispatcher, MainMenuView);
  27. }
  28. }
  29. return true;
  30. }
  31. MessageView* message_view_allocate(BarcodeApp* barcode_app) {
  32. furi_assert(barcode_app);
  33. MessageView* message_view_object = malloc(sizeof(MessageView));
  34. message_view_object->view = view_alloc();
  35. message_view_object->barcode_app = barcode_app;
  36. view_set_context(message_view_object->view, message_view_object);
  37. view_allocate_model(message_view_object->view, ViewModelTypeLocking, sizeof(MessageViewModel));
  38. view_set_draw_callback(message_view_object->view, app_draw_callback);
  39. view_set_input_callback(message_view_object->view, app_input_callback);
  40. return message_view_object;
  41. }
  42. void message_view_free(MessageView* message_view_object) {
  43. furi_assert(message_view_object);
  44. view_free(message_view_object->view);
  45. free(message_view_object);
  46. }
  47. View* message_get_view(MessageView* message_view_object) {
  48. furi_assert(message_view_object);
  49. return message_view_object->view;
  50. }