/// <summary> /// Отфильтровать серии от просмотренных и не выбранных /// </summary> private void FilterCheckedEpisodes() { var count = 0; var approximateTime = new TimeSpan(); foreach (var ce in CheckedEpisodes.ToList()) { var option = ce.EpisodeOptions .FirstOrDefault(eo => eo.CartoonVoiceOverId == ce.CartoonVoiceOver.CartoonVoiceOverId); if (option == null) { CheckedEpisodes.Remove(ce); continue; } if (DateTime.Now.Subtract(option.LastDateViewed) > GeneralSettings.NonRepeatTime) { approximateTime += option.Duration; count++; continue; } CheckedEpisodes.Remove(ce); } ApproximateEpisodeDuration = new TimeSpan(0, 0, (int)(approximateTime.TotalSeconds / count)); NotifyOfPropertyChange(() => EndTime); NotifyOfPropertyChange(() => EndDate); }
/// <summary> /// Метод начала просмотра серий /// </summary> private void StartWatch() { IntellectualShutdownTimer = new TimeSpan(); EpisodesCountRemainingString = "Осталось серий"; if (GeneralSettings.WatchingInRow is true) { CheckedEpisodes = CvDbContext.Cartoons .Include(c => c.CartoonEpisodes) .First(c => c.Checked) .CartoonEpisodes.OrderBy(ce => ce.FullNumber).ToList(); var number = GeneralSettings.LastWatchedEpisodeInRowFullNumber; var tempEpisode = CheckedEpisodes.First(ce => ce.FullNumber == number); CurrentEpisodeIndex = CheckedEpisodes.IndexOf(tempEpisode) + 1; } else { CheckedEpisodes = ShuffleEpisode(CheckedEpisodes, GeneralSettings.RandomMixCount ?? 1); CurrentEpisodeIndex = 0; } while (GeneralSettings.EpisodesCount > 0 && GeneralSettings.AvailableEpisodesCount > 0) { GeneralSettings.EpisodesCount--; NotifyOfPropertyChange(() => GeneralSettings); //цикл для переключения серии без потерь в количестве указанных просмотров do { IsSwitchEpisode = false; GeneralSettings.AvailableEpisodesCount--; TotalEpisodeTime = new TimeSpan(); PlayEpisode(CheckedEpisodes[CurrentEpisodeIndex++]); } while(IsSwitchEpisode && GeneralSettings.AvailableEpisodesCount > 0); } if (IsShutdownComp) { var psi = new ProcessStartInfo("shutdown", "/s /t 0") { CreateNoWindow = true, UseShellExecute = false }; Process.Start(psi); } Exit(); }
/// <summary> /// Создает список (по порядку, перемешанный (с цепочкой эпизодов)). /// </summary> private void CreateList() { if (AppVal.WS.RandomWatching) { _checkedEpisodes = ShuffleEpisodes(_checkedEpisodes.ToList(), AppVal.WS.RandomMixCount ?? 1); if (AppVal.WS.IsEpisodeChainActive) { _checkedEpisodes = CreateEpisodeChains(CheckedEpisodes.ToList()); } } else { _checkedEpisodes = CheckedEpisodes.OrderBy(ce => ce.FullNumber).ToList(); } NotifyOfPropertyChange(() => CheckedEpisodes); }