flipp_pomodoro_scene_info.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include <furi.h>
  2. #include <gui/view_dispatcher.h>
  3. #include <gui/scene_manager.h>
  4. #include "flipp_pomodoro_scene.h"
  5. #include "../flipp_pomodoro_app.h"
  6. #include "../views/flipp_pomodoro_info_view.h"
  7. enum
  8. {
  9. SceneEventConusmed = true,
  10. SceneEventNotConusmed = false
  11. };
  12. void flipp_pomodoro_scene_info_on_back_to_timer(void *ctx)
  13. {
  14. furi_assert(ctx);
  15. FlippPomodoroApp *app = ctx;
  16. view_dispatcher_send_custom_event(
  17. app->view_dispatcher,
  18. FlippPomodoroAppCustomEventResumeTimer);
  19. };
  20. void flipp_pomodoro_scene_info_on_enter(void *ctx)
  21. {
  22. furi_assert(ctx);
  23. FlippPomodoroApp *app = ctx;
  24. view_dispatcher_switch_to_view(app->view_dispatcher, FlippPomodoroAppViewInfo);
  25. flipp_pomodoro_info_view_set_pomodoros_completed(
  26. flipp_pomodoro_info_view_get_view(app->info_view),
  27. flipp_pomodoro_statistics__get_focus_stages_completed(app->statistics));
  28. flipp_pomodoro_info_view_set_mode(flipp_pomodoro_info_view_get_view(app->info_view), FlippPomodoroInfoViewModeStats);
  29. flipp_pomodoro_info_view_set_resume_timer_cb(app->info_view, flipp_pomodoro_scene_info_on_back_to_timer, app);
  30. };
  31. void flipp_pomodoro_scene_info_handle_custom_event(FlippPomodoroApp *app, FlippPomodoroAppCustomEvent custom_event)
  32. {
  33. if (custom_event == FlippPomodoroAppCustomEventResumeTimer)
  34. {
  35. scene_manager_next_scene(app->scene_manager, FlippPomodoroSceneTimer);
  36. }
  37. };
  38. bool flipp_pomodoro_scene_info_on_event(void *ctx, SceneManagerEvent event)
  39. {
  40. furi_assert(ctx);
  41. FlippPomodoroApp *app = ctx;
  42. switch (event.type)
  43. {
  44. case SceneManagerEventTypeBack:
  45. view_dispatcher_stop(app->view_dispatcher);
  46. return SceneEventConusmed;
  47. case SceneManagerEventTypeCustom:
  48. flipp_pomodoro_scene_info_handle_custom_event(app, event.event);
  49. return SceneEventConusmed;
  50. default:
  51. break;
  52. };
  53. return SceneEventNotConusmed;
  54. };
  55. void flipp_pomodoro_scene_info_on_exit(void *ctx)
  56. {
  57. UNUSED(ctx);
  58. };