from time_recoder import save_recorded_time_in_table def get_current_time(): return save_recorded_time_in_table.get_current_time_as_timestamp() class Timer: def __init__(self): self.total_start_time = -1 self.task_start_time = -1 self.pause_time = 0 self.stop_time = 0 self.is_paused = False self.is_stopped = True def get_passed_task_time(self): if self.task_was_started(): current_time = get_current_time() if self.is_paused: return current_time - (self.task_start_time + (current_time - self.pause_time)) else: return current_time - self.task_start_time else: return 0 def get_passed_total_time(self): if self.timer_was_started(): current_time = get_current_time() if self.is_paused: return current_time - (self.total_start_time + (current_time - self.pause_time)) elif self.is_stopped: return current_time - (self.total_start_time + (current_time - self.stop_time)) else: return current_time - self.total_start_time else: return 0 def get_task_value_string(self): current_time = self.get_passed_task_time() return '{:02d}:{:02d}:{:02d}'.format((current_time // 60) // 60, (current_time // 60) % 60, current_time % 60) def get_total_value_string(self): current_time = self.get_passed_total_time() return '{:02d}:{:02d}:{:02d}'.format((current_time // 60) // 60, (current_time // 60) % 60, current_time % 60) def start(self): current_time = get_current_time() if self.is_paused: self.task_start_time = self.task_start_time + (current_time - self.pause_time) self.total_start_time = self.total_start_time + (current_time - self.pause_time) self.pause_time = 0 self.is_paused = False else: if not self.task_was_started(): self.task_start_time = current_time if not self.timer_was_started(): self.total_start_time = current_time elif self.is_stopped: self.total_start_time = self.total_start_time + (current_time - self.stop_time) self.stop_time = 0 self.is_stopped = False def stop(self): self.task_start_time = -1 if self.is_paused: self.total_start_time = self.total_start_time + (get_current_time() - self.pause_time) self.pause_time = 0 self.is_paused = False self.stop_time = get_current_time() self.is_stopped = True def pause(self): if not self.is_paused: self.is_paused = True self.pause_time = get_current_time() def task_was_started(self): return self.task_start_time > 0 def timer_was_started(self): return self.total_start_time > 0