public void Tick() { currentCountdown.Tick(); if (currentCountdown.CountdownEnd) { if (currentCountdown == taskCountdown) { SwitchTaskCountdownToBreakCountdown(); } else if (currentCountdown == breakCountdown) { SwitchBreakCountdownToTaskCountdown(); } else if (currentCountdown == longBreakCountdown) { CompletePomodoro(); } } else { if (currentCountdown == taskCountdown) { CurrentPhase = PomodoroPhase.RunningTask; } else if (currentCountdown == breakCountdown) { CurrentPhase = PomodoroPhase.RunningBreak; } else if (currentCountdown == longBreakCountdown) { CurrentPhase = PomodoroPhase.RunningLongBreak; } } }
void CompletePomodoro() { if (OnCompletePomodoro != null) { OnCompletePomodoro(); } Reset(); CurrentPhase = PomodoroPhase.Completed; }
public void Reset() { taskCountdown.Reset(); breakCountdown.Reset(); repeatTimeLeft = repeatTime; longBreakCountdown.Reset(); currentCountdown = taskCountdown; CurrentPhase = PomodoroPhase.NotRunning; }
void SwitchBreakCountdownToTaskCountdown() { repeatTimeLeft--; CurrentPhase = PomodoroPhase.WaitingSwitchToTask; if (OnSwitchToTask != null) { OnSwitchToTask(); } currentCountdown = taskCountdown; breakCountdown.Reset(); }
public static async Task WaitPhaseChange(PomodoroEngine engine, PomodoroPhase phase) { var timeout = TimeSpan.FromSeconds(5); var task = Task.Run(() => { while (true) { if (engine.Phase == phase) { break; } Thread.Sleep(50); } }); if (await Task.WhenAny(task, Task.Delay(timeout)) != task) { Assert.Fail($"Timout: Phase didn't change to {phase}, actual phase:{engine.Phase}"); } }
void SwitchTaskCountdownToBreakCountdown() { if (repeatTimeLeft <= 0) { CurrentPhase = PomodoroPhase.WaitingSwitchToLongBreak; if (OnSwitchToLongBreak != null) { OnSwitchToLongBreak(); } currentCountdown = longBreakCountdown; } else { CurrentPhase = PomodoroPhase.WaitingSwitchToBreak; if (OnSwitchToBreak != null) { OnSwitchToBreak(); } currentCountdown = breakCountdown; } taskCountdown.Reset(); }