flipp_pomodoro_scene_timer.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include <furi.h>
  2. #include <gui/scene_manager.h>
  3. #include <gui/view_dispatcher.h>
  4. #include "../flipp_pomodoro_app.h"
  5. #include "../views/flipp_pomodoro_timer_view.h"
  6. enum
  7. {
  8. SceneEventConusmed = true,
  9. SceneEventNotConusmed = false
  10. };
  11. uint8_t ExitSignal = 0;
  12. void flipp_pomodoro_scene_timer_on_next_stage(void *ctx)
  13. {
  14. furi_assert(ctx);
  15. FlippPomodoroApp *app = ctx;
  16. view_dispatcher_send_custom_event(
  17. app->view_dispatcher,
  18. FlippPomodoroAppCustomEventStageSkip);
  19. };
  20. void flipp_pomodoro_scene_timer_on_enter(void *context)
  21. {
  22. furi_assert(context);
  23. FlippPomodoroApp *app = context;
  24. view_dispatcher_switch_to_view(app->view_dispatcher, FlippPomodoroAppViewTimer);
  25. flipp_pomodoro_view_timer_set_state(
  26. flipp_pomodoro_view_timer_get_view(app->timer_view),
  27. app->state);
  28. flipp_pomodoro_view_timer_set_on_right_cb(
  29. app->timer_view,
  30. flipp_pomodoro_scene_timer_on_next_stage,
  31. app);
  32. };
  33. void flipp_pomodoro_scene_timer_handle_custom_event(FlippPomodoroApp *app, FlippPomodoroAppCustomEvent custom_event)
  34. {
  35. if (custom_event == FlippPomodoroAppCustomEventTimerTick && flipp_pomodoro__is_stage_expired(app->state))
  36. {
  37. view_dispatcher_send_custom_event(
  38. app->view_dispatcher,
  39. FlippPomodoroAppCustomEventStageComplete);
  40. }
  41. };
  42. bool flipp_pomodoro_scene_timer_on_event(void *ctx, SceneManagerEvent event)
  43. {
  44. furi_assert(ctx);
  45. FlippPomodoroApp *app = ctx;
  46. switch (event.type)
  47. {
  48. case SceneManagerEventTypeCustom:
  49. flipp_pomodoro_scene_timer_handle_custom_event(
  50. app,
  51. event.event);
  52. return SceneEventConusmed;
  53. case SceneManagerEventTypeBack:
  54. return ExitSignal;
  55. default:
  56. break;
  57. };
  58. return SceneEventNotConusmed;
  59. };
  60. void flipp_pomodoro_scene_timer_on_exit(void *context)
  61. {
  62. UNUSED(context);
  63. };