コード例 #1
0
        /// <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);
        }
コード例 #2
0
ファイル: MMMethods.cs プロジェクト: Zerohout/CartoonViewer
        /// <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();
        }
コード例 #3
0
ファイル: MMMethods.cs プロジェクト: Zerohout/Sepo_EasyViewer
        /// <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);
        }