time_recorder_timer.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. from time_recoder import save_recorded_time_in_table
  2. def get_current_time():
  3. return save_recorded_time_in_table.get_current_time_as_timestamp()
  4. class Timer:
  5. def __init__(self):
  6. self.total_start_time = -1
  7. self.task_start_time = -1
  8. self.pause_time = 0
  9. self.stop_time = 0
  10. self.is_paused = False
  11. self.is_stopped = True
  12. def get_passed_task_time(self):
  13. if self.task_was_started():
  14. current_time = get_current_time()
  15. if self.is_paused:
  16. return current_time - (self.task_start_time + (current_time - self.pause_time))
  17. else:
  18. return current_time - self.task_start_time
  19. else:
  20. return 0
  21. def get_passed_total_time(self):
  22. if self.timer_was_started():
  23. current_time = get_current_time()
  24. if self.is_paused:
  25. return current_time - (self.total_start_time + (current_time - self.pause_time))
  26. elif self.is_stopped:
  27. return current_time - (self.total_start_time + (current_time - self.stop_time))
  28. else:
  29. return current_time - self.total_start_time
  30. else:
  31. return 0
  32. def get_task_value_string(self):
  33. current_time = self.get_passed_task_time()
  34. return '{:02d}:{:02d}:{:02d}'.format((current_time // 60) // 60,
  35. (current_time // 60) % 60,
  36. current_time % 60)
  37. def get_total_value_string(self):
  38. current_time = self.get_passed_total_time()
  39. return '{:02d}:{:02d}:{:02d}'.format((current_time // 60) // 60,
  40. (current_time // 60) % 60,
  41. current_time % 60)
  42. def start(self):
  43. current_time = get_current_time()
  44. if self.is_paused:
  45. self.task_start_time = self.task_start_time + (current_time - self.pause_time)
  46. self.total_start_time = self.total_start_time + (current_time - self.pause_time)
  47. self.pause_time = 0
  48. self.is_paused = False
  49. else:
  50. if not self.task_was_started():
  51. self.task_start_time = current_time
  52. if not self.timer_was_started():
  53. self.total_start_time = current_time
  54. elif self.is_stopped:
  55. self.total_start_time = self.total_start_time + (current_time - self.stop_time)
  56. self.stop_time = 0
  57. self.is_stopped = False
  58. def stop(self):
  59. self.task_start_time = -1
  60. if self.is_paused:
  61. self.total_start_time = self.total_start_time + (get_current_time() - self.pause_time)
  62. self.pause_time = 0
  63. self.is_paused = False
  64. self.stop_time = get_current_time()
  65. self.is_stopped = True
  66. def pause(self):
  67. if not self.is_paused:
  68. self.is_paused = True
  69. self.pause_time = get_current_time()
  70. def task_was_started(self):
  71. return self.task_start_time > 0
  72. def timer_was_started(self):
  73. return self.total_start_time > 0