desktop_scene_locked.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "../desktop_i.h"
  2. #include "../views/desktop_locked.h"
  3. void desktop_scene_locked_callback(DesktopLockedEvent event, void* context) {
  4. Desktop* desktop = (Desktop*)context;
  5. view_dispatcher_send_custom_event(desktop->view_dispatcher, event);
  6. }
  7. const void desktop_scene_locked_on_enter(void* context) {
  8. Desktop* desktop = (Desktop*)context;
  9. DesktopLockedView* locked_view = desktop->locked_view;
  10. desktop_locked_set_callback(locked_view, desktop_scene_locked_callback, desktop);
  11. desktop_locked_reset_door_pos(locked_view);
  12. desktop_locked_update_hint_timeout(locked_view);
  13. view_port_enabled_set(desktop->lock_viewport, true);
  14. osTimerStart(locked_view->timer, 63);
  15. view_dispatcher_switch_to_view(desktop->view_dispatcher, DesktopViewLocked);
  16. }
  17. const bool desktop_scene_locked_on_event(void* context, SceneManagerEvent event) {
  18. Desktop* desktop = (Desktop*)context;
  19. bool consumed = false;
  20. if(event.type == SceneManagerEventTypeCustom) {
  21. switch(event.event) {
  22. case DesktopLockedEventUnlock:
  23. scene_manager_set_scene_state(
  24. desktop->scene_manager, DesktopSceneMain, DesktopMainEventUnlocked);
  25. scene_manager_next_scene(desktop->scene_manager, DesktopSceneMain);
  26. consumed = true;
  27. break;
  28. case DesktopLockedEventUpdate:
  29. desktop_locked_manage_redraw(desktop->locked_view);
  30. consumed = true;
  31. default:
  32. break;
  33. }
  34. }
  35. return consumed;
  36. }
  37. const void desktop_scene_locked_on_exit(void* context) {
  38. Desktop* desktop = (Desktop*)context;
  39. DesktopLockedView* locked_view = desktop->locked_view;
  40. desktop_locked_reset_counter(desktop->locked_view);
  41. osTimerStop(locked_view->timer);
  42. }