コード例 #1
0
        public void LoadState(PomodoroTimerState state)
        {
            if (state == null)
            {
                return;
            }

            TimerInfo = new PomodoroTimerState()
            {
                PomodoroState    = state.PomodoroState,
                RunTime          = state.RunTime,
                TimerState       = state.TimerState,
                StartTime        = state.StartTime,
                RemainingRunTime = state.RemainingRunTime,
            };

            UpdateChart(RemainingTimeValue, TimeSpan.Zero, TimerInfo.RunTime);

            if (IsTimerRunning)
            {
                StartTimerTick();
            }
            else
            {
                StopTimerTick();
            }
        }
コード例 #2
0
        private bool IsPomodoroStatusValid(PomodoroTimerState lastState)
        {
            bool state = true;

            // check if null
            if (lastState == null)
            {
                state = false;
            }

            if (lastState.TimerState == TimerState.Running)
            {
                if (lastState.StartTime > DateTime.Now)
                {
                    state = false;
                }
                if (lastState.RunTime == TimeSpan.Zero)
                {
                    state = false;
                }
                if (lastState.RemainingTime <= TimeSpan.Zero)
                {
                    state = false;
                }
                if (lastState.PomodoroState == PomodoroState.Ready)
                {
                    state = false;
                }
            }
            LogState("IsPomodoroStatusValid state== " + state, lastState);

            return(state);
        }
コード例 #3
0
 public void SetNotification(PomodoroTimerState timerInfo)
 {
     if (IsNotificationEnable)
     {
         NotificationService.SetTimerInfo(timerInfo);
     }
 }
コード例 #4
0
        private async void WaitForStart()
        {
            PomodoroStatus = PomodoroTimerState.Ready(PomodoroSettings.PomodoroDuration);
            await StorageService.SaveAppState(PomodoroStatus);

            PomodoroTimerStateChangedEvent?.Invoke(this, new PomodoroTimerStateChangedEventArgs(PomodoroStatus));
            LogState("WaitForStart");
        }
コード例 #5
0
        public async void PausePomodoro()
        {
            TimerService.Stop();
            PomodoroStatus = PomodoroTimerState.Paused(PomodoroSettings.PomodoroDuration, PomodoroStatus.RemainingTime);
            await StorageService.SaveAppState(PomodoroStatus);

            PomodoroTimerStateChangedEvent?.Invoke(this, new PomodoroTimerStateChangedEventArgs(PomodoroStatus));
            LogState("PausePomodoro");
        }
コード例 #6
0
        public async void StartBreak()
        {
            TimerService.Start(PomodoroSettings.PomodoroBreakDuration);
            PomodoroStatus = PomodoroTimerState.Break(PomodoroSettings.PomodoroBreakDuration);
            await StorageService.SaveAppState(PomodoroStatus);

            PomodoroTimerStateChangedEvent?.Invoke(this, new PomodoroTimerStateChangedEventArgs(PomodoroStatus));
            LogState("StartBreak");
        }
コード例 #7
0
        private void OnTimerFinished(object sender, PomodoroChangedEventArgs args)
        {
            StopTimerTick();

            Device.BeginInvokeOnMainThread(() =>
            {
                TimerInfo = new PomodoroTimerState();
                Tick      = 0;
            });
        }
コード例 #8
0
        public async void StopPomodoro()
        {
            TimerService.Stop();

            PomodoroStatus = PomodoroTimerState.Stopped();

            await StorageService.SaveAppState(PomodoroStatus);

            PomodoroTimerStateChangedEvent?.Invoke(this, new PomodoroTimerStateChangedEventArgs(PomodoroStatus));
            LogState("StopPomodoro");
        }
コード例 #9
0
        // Private methods

        private void Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            Seconds--;
            if (Seconds == 0)
            {
                // POMODORO COMPLETE
                Console.WriteLine("Pomodoro complete!");
                timer.Enabled = false;
                NumPomodoros++;
                State = PomodoroTimerState.Elapsed;
            }
        }
コード例 #10
0
        public async void StartSessionBreak()
        {
            FinishedWitoutSessionBreak = 0;
            TimerService.Start(PomodoroSettings.SessionBreakDuration);

            PomodoroStatus = PomodoroTimerState.SessionBreak(PomodoroSettings.SessionBreakDuration);

            await StorageService.SaveAppState(PomodoroStatus);

            PomodoroTimerStateChangedEvent?.Invoke(this, new PomodoroTimerStateChangedEventArgs(PomodoroStatus));
            LogState("StartSessionBreak");
        }
コード例 #11
0
        // Constructor
        public PomodoroTimer()
        {
            // Initialize members
            timer           = new Timer();
            timer.Interval  = 1000;
            timer.AutoReset = true;
            timer.Elapsed  += Timer_Elapsed;

            Seconds      = DEFAULT_VALUE_SECONDS;
            NumPomodoros = 0;
            State        = PomodoroTimerState.Stopped;
        }
コード例 #12
0
        public void LoadLastState()
        {
            var lastState = StorageService.GetLastState();

            // check if last state is valid
            if (lastState != null && IsPomodoroStatusValid(lastState))
            {
                PomodoroStatus = lastState;
            }
            else
            {
                PomodoroStatus = new PomodoroTimerState();
            }
            LogState("Loaded");
        }
コード例 #13
0
        public void StartPomodoro()
        {
            // check if paused
            if (PomodoroStatus.PomodoroState == PomodoroState.Pomodoro &&
                PomodoroStatus.TimerState == TimerState.Paused)
            {
                PomodoroStatus = PomodoroTimerState.Pomodoro(PomodoroStatus.RunTime, PomodoroStatus.RemainingRunTime);
            }
            else
            {
                // start new pomodoro
                PomodoroStatus = PomodoroTimerState.Pomodoro(PomodoroSettings.PomodoroDuration, PomodoroSettings.PomodoroDuration);
            }

            TimerService.Start(PomodoroStatus.RemainingTime);
            StorageService.SaveAppState(PomodoroStatus);
            PomodoroTimerStateChangedEvent?.Invoke(this, new PomodoroTimerStateChangedEventArgs(PomodoroStatus));
            LogState("StartPomodoro");
        }
コード例 #14
0
        private void LogState(string message = null, PomodoroTimerState state = null)
        {
#if DEBUG
            state   = state ?? PomodoroStatus;
            message = message ?? message + '\t';
            if (state != null)
            {
                string pStateString =
                    message +
                    state.PomodoroState.ToString() + '\t' +
                    state.TimerState.ToString() + '\t' +
                    state.StartTime.ToString() + '\t' +
                    state.RunTime.TotalSeconds.ToString() + '\t' +
                    state.RemainingRunTime.TotalSeconds.ToString() + '\t' +
                    state.RemainingTime.TotalSeconds.ToString() + '\t'
                ;
                Logger.Log(LogLevelEnum.INFO, pStateString);
            }
#endif
        }
コード例 #15
0
 public void SetTimerInfo(PomodoroTimerState timerInfo)
 {
     CrossLocalNotifications.Current.Show(GetStateName(timerInfo.PomodoroState), TimeSpanFormatter(timerInfo.RemainingTime), 1);
 }
コード例 #16
0
 public Task <bool> SaveAppState(PomodoroTimerState appState)
 {
     return(Task.FromResult(true));
 }
コード例 #17
0
        // Public methods

        public void Start()
        {
            timer.Enabled = true;
            State         = PomodoroTimerState.Running;
        }
コード例 #18
0
 public void Reset()
 {
     timer.Enabled = false;
     State         = PomodoroTimerState.Stopped;
     Seconds       = DEFAULT_VALUE_SECONDS;
 }
コード例 #19
0
 public Task <bool> SaveAppState(PomodoroTimerState appState)
 {
     StorageModel.AppState = appState;
     return(SaveAsync());
 }
コード例 #20
0
 public PomodoroTimerStateChangedEventArgs(PomodoroTimerState pomodoroStatus)
 {
     this.NewState = pomodoroStatus;
 }