Beispiel #1
0
 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;
         }
     }
 }
Beispiel #2
0
 void CompletePomodoro()
 {
     if (OnCompletePomodoro != null)
     {
         OnCompletePomodoro();
     }
     Reset();
     CurrentPhase = PomodoroPhase.Completed;
 }
Beispiel #3
0
        public void Reset()
        {
            taskCountdown.Reset();
            breakCountdown.Reset();
            repeatTimeLeft = repeatTime;
            longBreakCountdown.Reset();

            currentCountdown = taskCountdown;
            CurrentPhase     = PomodoroPhase.NotRunning;
        }
Beispiel #4
0
        void SwitchBreakCountdownToTaskCountdown()
        {
            repeatTimeLeft--;
            CurrentPhase = PomodoroPhase.WaitingSwitchToTask;
            if (OnSwitchToTask != null)
            {
                OnSwitchToTask();
            }
            currentCountdown = taskCountdown;

            breakCountdown.Reset();
        }
Beispiel #5
0
        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}");
            }
        }
Beispiel #6
0
 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();
 }