private void RefreshHabitAndElapsedTimeList() { if (CurrentIndex != -1) { if (HabitTimeList.Count > CurrentIndex) { HabitTimeList.RemoveAt(CurrentIndex); HabitTimeList.Insert(CurrentIndex, CurrentHabitTime); ElapsedTimeList.RemoveAt(CurrentIndex); ElapsedTimeList.Insert(CurrentIndex, ElapsedTime); } } }
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(); }
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); }