xremote_about_view.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*!
  2. * @file flipper-xremote/views/xremote_about_view.c
  3. @license This project is released under the GNU GPLv3 License
  4. * @copyright (c) 2023 Sandro Kalatozishvili (s.kalatoz@gmail.com)
  5. *
  6. * @brief View functionality for version and additional information.
  7. */
  8. #include "xremote_about_view.h"
  9. #include "../xremote.h"
  10. static void xremote_about_view_draw_vertical(Canvas* canvas, XRemoteViewModel* model) {
  11. UNUSED(model);
  12. char version[32];
  13. canvas_set_font(canvas, FontSecondary);
  14. xremote_get_version(version, sizeof(version));
  15. canvas_draw_str_aligned(canvas, 0, 30, AlignLeft, AlignTop, "Version:");
  16. canvas_draw_str_aligned(canvas, 35, 30, AlignLeft, AlignTop, version);
  17. canvas_draw_str_aligned(canvas, 0, 40, AlignLeft, AlignTop, "License: GPLv3");
  18. canvas_draw_str_aligned(canvas, 0, 50, AlignLeft, AlignTop, "Author: kala13x");
  19. elements_slightly_rounded_frame(canvas, 9, 78, 45, 33);
  20. canvas_draw_str_aligned(canvas, 0, 69, AlignLeft, AlignTop, "Contact:");
  21. canvas_draw_str_aligned(canvas, 13, 80, AlignLeft, AlignTop, "s.kalatoz");
  22. canvas_draw_str_aligned(canvas, 28, 91, AlignLeft, AlignTop, "@");
  23. canvas_draw_str_aligned(canvas, 11, 100, AlignLeft, AlignTop, "gmail.com");
  24. }
  25. static void xremote_about_view_draw_horizontal(Canvas* canvas, XRemoteViewModel* model) {
  26. UNUSED(model);
  27. char version[32];
  28. canvas_set_font(canvas, FontSecondary);
  29. xremote_get_version(version, sizeof(version));
  30. canvas_draw_str_aligned(canvas, 0, 0, AlignLeft, AlignTop, "Version:");
  31. canvas_draw_str_aligned(canvas, 35, 0, AlignLeft, AlignTop, version);
  32. canvas_draw_str_aligned(canvas, 0, 10, AlignLeft, AlignTop, "License: GPLv3");
  33. canvas_draw_str_aligned(canvas, 0, 20, AlignLeft, AlignTop, "Author: kala13x");
  34. elements_slightly_rounded_frame(canvas, 8, 30, 45, 33);
  35. canvas_draw_str_aligned(canvas, 0, 69, AlignLeft, AlignTop, "Contact:");
  36. canvas_draw_str_aligned(canvas, 12, 32, AlignLeft, AlignTop, "s.kalatoz");
  37. canvas_draw_str_aligned(canvas, 27, 43, AlignLeft, AlignTop, "@");
  38. canvas_draw_str_aligned(canvas, 10, 52, AlignLeft, AlignTop, "gmail.com");
  39. }
  40. static void xremote_about_view_draw_callback(Canvas* canvas, void* context) {
  41. furi_assert(context);
  42. XRemoteViewModel* model = context;
  43. XRemoteAppContext* app_ctx = model->context;
  44. XRemoteViewDrawFunction xremote_about_view_draw_body;
  45. ViewOrientation orientation = app_ctx->app_settings->orientation;
  46. xremote_about_view_draw_body = orientation == ViewOrientationVertical ?
  47. xremote_about_view_draw_vertical :
  48. xremote_about_view_draw_horizontal;
  49. xremote_canvas_draw_header(canvas, orientation, "About");
  50. xremote_about_view_draw_body(canvas, model);
  51. xremote_canvas_draw_exit_footer(canvas, orientation, "Press to exit");
  52. }
  53. XRemoteView* xremote_about_view_alloc(void* app_ctx) {
  54. XRemoteView* view = xremote_view_alloc(app_ctx, NULL, xremote_about_view_draw_callback);
  55. with_view_model(
  56. xremote_view_get_view(view), XRemoteViewModel * model, { model->context = app_ctx; }, true);
  57. return view;
  58. }