Пример #1
0
 private void RefreshHabitAndElapsedTimeList()
 {
     if (CurrentIndex != -1)
     {
         if (HabitTimeList.Count > CurrentIndex)
         {
             HabitTimeList.RemoveAt(CurrentIndex);
             HabitTimeList.Insert(CurrentIndex, CurrentHabitTime);
             ElapsedTimeList.RemoveAt(CurrentIndex);
             ElapsedTimeList.Insert(CurrentIndex, ElapsedTime);
         }
     }
 }
Пример #2
0
        private async Task CloseAllNavigationPage()
        {
            CurrentIndex = -1;
            HabitTimeList.Clear();
            ElapsedTimeList.Clear();

            var existingPages = Navigation.NavigationStack.ToList();

            for (int i = 1; i < existingPages.Count - 1; i++)
            {
                Navigation.RemovePage(existingPages[i]);
            }

            await PopRoutineActionPage();
        }
Пример #3
0
        private void SetTimer()
        {
            if (HabitTimeList.Count <= CurrentIndex)
            {
                HabitTimeList.Add(CurrentHabitTime);
                ElapsedTimeList.Add(ElapsedTime);
            }

            void action()
            {
                if (previousTime == DateTime.MinValue)
                {
                    previousTime = DateTime.Now;
                }

                var currentTime = DateTime.Now;

                var diffTimeSpan = currentTime.Subtract(previousTime);

                var oldHabitTime = CurrentHabitTime;

                ElapsedTime      = ElapsedTime.Add(diffTimeSpan);
                CurrentHabitTime = CurrentHabitTime.Add(-diffTimeSpan);

                if (oldHabitTime.Seconds != CurrentHabitTime.Seconds)
                {
                    Console.WriteLine($"{ElapsedTime.ToString(@"mm\:ss")}");

                    RefreshHabitAndElapsedTimeList();

                    if (!IsSoonFinishTime)
                    {
                        DependencyService.Get <IAlarmSetter>().SetCountAlarm(CurrentHabitTime.Add(TimeSpan.FromSeconds(-10)));
                    }

                    DependencyService.Get <INotifySetter>().NotifyHabitCount(CurrentHabit, CurrentHabitTime, false, !IsNotLastHabit);

                    if (CurrentHabit.TotalTime.TotalSeconds > 20 && CurrentHabitTime.TotalSeconds < 11 && !IsSoonFinishTime)
                    {
                        DependencyService.Get <INotifySetter>().NotifySoonFinishHabit(CurrentHabit, NextHabitName);
                        IsSoonFinishTime = true;
                    }

                    if (CurrentHabitTime.TotalSeconds < 1 && !IsMinusHabitTime)
                    {
                        DependencyService.Get <INotifySetter>().NotifyFinishHabit(CurrentHabit, NextHabitName);
                        IsMinusHabitTime = true;

                        if (Preferences.Get("IsAutoFlipHabit", false))
                        {
                            ShowNextHabitCommand.Execute(null);
                        }
                    }
                    ;
                }

                previousTime = currentTime;
            }

            void stoppingaAction()
            {
                IsCounting = false;
                DependencyService.Get <INotifySetter>().CancelHabitCountNotify();
                DependencyService.Get <INotifySetter>().CancelFinishHabitNotify();
            }

            deviceTimer = new DeviceTimer(action, TimeSpan.FromSeconds(0.1), true, true, stoppingaAction);
        }