Beispiel #1
0
        /// <summary>
        /// Изменить выбранный эпизод и все связанные данные
        /// </summary>
        /// <param name="value">Конечное значение эпизода</param>
        private void ChangeSelectedEpisode(CartoonEpisode value)
        {
            if (IsDesignTime)
            {
                _selectedEpisode = value;
                NotifyOfPropertyChange(() => SelectedEpisode);
                return;
            }

            if (_selectedEpisode == value)
            {
                return;
            }

            IdList.EpisodeId = value?.CartoonEpisodeId ?? 0;
            ChangeSelectedVoiceOver(null);

            if (value == null)
            {
                _selectedEpisode            = null;
                EpisodeIndexes.CurrentIndex = -1;
                NotifyEpisodeData();
            }
            else
            {
                EpisodeIndexes.CurrentIndex = Episodes.IndexOf(value);
                LoadData();
            }
        }
Beispiel #2
0
        /// <summary>
        /// Изменить выбранный эпизод и все связанные данные
        /// </summary>
        /// <param name="value">Конечное значение эпизода</param>
        private void ChangeSelectedEpisode(CartoonEpisode value)
        {
            if (IsDesignTime)
            {
                _selectedEpisode = value;
                NotifyOfPropertyChange(() => SelectedEpisode);
                return;
            }

            EpisodeIndexes.CurrentIndex = value == null
                                ? -1
                                : Episodes.IndexOf(value);
            NotifyOfPropertyChange(() => CanSelectNextEpisode);
            NotifyOfPropertyChange(() => CanSelectPreviousEpisode);

            if (_selectedEpisode == value)
            {
                return;
            }

            IdList.EpisodeId         = value?.CartoonEpisodeId ?? 0;
            SelectedEpisodeVoiceOver = null;

            if (value == null)
            {
                _selectedEpisode = null;
                NotifyEpisodeData();
            }
            else
            {
                LoadData();
            }
        }
Beispiel #3
0
        /// <summary>
        /// Создание новой опции эпизода с джампером
        /// </summary>
        /// <param name="ctx">база данных</param>
        /// <param name="episode">созданный эпизод</param>
        /// <param name="voiceOver">активная озвучка</param>
        private void CreateNewEpisodeOption(CVDbContext ctx, CartoonEpisode episode, CartoonVoiceOver voiceOver)
        {
            // создание новой опции
            var episodeOption = new EpisodeOption
            {
                CartoonEpisodeId   = episode.CartoonEpisodeId,
                CartoonVoiceOverId = voiceOver.CartoonVoiceOverId,
                Name = $"{voiceOver.Name}_Option"
            };

            ctx.EpisodeOptions.Add(episodeOption);
            ctx.SaveChanges();

            episodeOption = ctx.EpisodeOptions.ToList().Last();
            // создание нового джампера
            var jumper = new Jumper
            {
                EpisodeOptionId = episodeOption.EpisodeOptionId,
                Number          = 1
            };

            ctx.Jumpers.Add(jumper);
            ctx.SaveChanges();

            episodeOption = ctx.EpisodeOptions.ToList().Last();

            episodeOption.Duration = CalculatingDuration(episodeOption);
            ctx.SaveChanges();
        }
Beispiel #4
0
        /// <summary>
        /// Создание нового эпизода с активной озвучкой
        /// </summary>
        /// <param name="ctx">база данных</param>
        /// <param name="voiceOver">активная озвучка</param>
        private CartoonEpisode CreateNewEpisode(CVDbContext ctx, CartoonVoiceOver voiceOver)
        {
            var count = _episodes.Count + 1;

            // создание эпизода с активной озвучкой
            var episode = new CartoonEpisode
            {
                CartoonSeasonId  = GlobalIdList.SeasonId,
                CartoonId        = GlobalIdList.CartoonId,
                CartoonVoiceOver = voiceOver,
                Name             = $"{count}-й эпизод",
                Description      = $"{count}-й эпизод",
                Number           = count
            };

            ctx.CartoonEpisodes.Add(episode);
            ctx.SaveChanges();

            // загрузка эпизода с ID
            episode = ctx.CartoonEpisodes.ToList().Last();
            // добавление эпизода в список выбранных эпизодов озвучки
            voiceOver.CheckedEpisodes.Add(episode);
            episode.EpisodeVoiceOvers.Add(voiceOver);
            ctx.SaveChanges();
            return(episode);
        }
Beispiel #5
0
        private void PlayEpisode(CartoonEpisode episode)
        {
            var cartUrl = episode.Cartoon.CartoonUrls.First(cu => cu.Checked);
            var webSite = CvDbContext.CartoonWebSites
                          .Include(cws => cws.ElementValues)
                          .First(cws => cws.CartoonWebSiteId ==
                                 cartUrl.CartoonWebSiteId);

            var urlString =
                $"{cartUrl.Url}{episode.FullNumber}/{episode.CartoonVoiceOver.UrlParameter}";
            var elementValue = webSite.ElementValues.First();

            CurrentOptionId = episode.EpisodeOptions
                              .First(eo => eo.CartoonEpisodeId == episode.CartoonEpisodeId &&
                                     eo.CartoonVoiceOverId ==
                                     episode.CartoonVoiceOver.CartoonVoiceOverId).EpisodeOptionId;

            //Попытки перейти на указанный url при нестабильном интернет соединении
            for (var i = 0; i < 10; i++)
            {
                try
                {
                    Helper.Browser.Navigate().GoToUrl(urlString);
                    break;
                }
                catch
                {
                    Helper.Browser.Navigate().Refresh();
                }
            }

            var option = CvDbContext.EpisodeOptions
                         .Include(eo => eo.Jumpers)
                         .First(eo => eo.EpisodeOptionId == CurrentOptionId);

            CurrentDuration       = option.Duration;
            option.LastDateViewed = DateTime.Now;
            CvDbContext.SaveChanges();
            Jumpers       = new List <Jumper>(option.Jumpers);
            CurrentJumper = Jumpers[jumperCount++];

            WebElement = Helper.Browser.FindElement(By.CssSelector(elementValue.CssSelector));
            StartVideoPlayer();

            Helper.Timer.Restart();
            LaunchMonitoring();
            if (GeneralSettings.WatchingInRow)
            {
                GeneralSettings.LastWatchedEpisodeInRowFullNumber = episode.FullNumber;
                WriteClassInFile(GeneralSettings,
                                 SavedGeneralSettingsFileName,
                                 GeneralSettingsFileExtension,
                                 AppDataPath);
            }
        }