Esempio n. 1
0
 /// <summary>
 /// Действие при изменении выбора сезона
 /// </summary>
 public void SelectionChanged(ListBox lb)
 {
     EpisodeIndexes.CurrentIndex = Episodes.IndexOf(SelectedEpisode);
     lb.ScrollIntoView(lb.SelectedItem);
     NotifyOfPropertyChange(() => CanEditNextEpisode);
     NotifyOfPropertyChange(() => CanEditPreviousEpisode);
 }
Esempio n. 2
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();
            }
        }
Esempio n. 3
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();
            }
        }
Esempio n. 4
0
        public Episode GetNextEpisode(Episode currentEpisode)
        {
            var index = Episodes.IndexOf(currentEpisode);

            if (index == Episodes.Count - 1)
            {
                return(currentEpisode);
            }

            return(Episodes[index + 1]);
        }
Esempio n. 5
0
        public Episode GetPreviousEpisode(Episode currentEpisode)
        {
            var index = Episodes.IndexOf(currentEpisode);

            if (index == 0)
            {
                return(currentEpisode);
            }

            return(Episodes[index - 1]);
        }
Esempio n. 6
0
        /// <summary>
        /// Добавить новый эпизод
        /// </summary>
        public void AddEpisode()
        {
            if (CanAddEpisode is false)
            {
                return;
            }
            using (var ctx = new CVDbContext(AppDataPath))
            {
                var cartoon = ctx.Cartoons
                              .Include(c => c.CartoonVoiceOvers)
                              .First(c => c.CartoonId == GlobalIdList.CartoonId);

                if (cartoon.CartoonVoiceOvers.Count == 0)
                {
                    WinMan.ShowDialog(new DialogViewModel(
                                          "У выбранного мультсериала отсутствуют озвучки, добавьте одну или более для создания нового эпизода",
                                          DialogType.INFO));
                    return;
                }

                // загрузка первой озвучки выбранного м/с
                CartoonVoiceOver voiceOver;

                if (DefaultVoiceOver == null)
                {
                    voiceOver = ctx.Cartoons
                                .Include(ce => ce.CartoonVoiceOvers)
                                .First(c => c.CartoonId == GlobalIdList.CartoonId).CartoonVoiceOvers.First();
                }
                else
                {
                    voiceOver = ctx.VoiceOvers
                                .First(vo => vo.CartoonVoiceOverId ==
                                       DefaultVoiceOver.CartoonVoiceOverId);
                }

                var episode = CreateNewEpisode(ctx, voiceOver);

                CreateNewEpisodeOption(ctx, episode, voiceOver);

                episode = ctx.CartoonEpisodes.ToList().Last();

                Episodes.Add(episode);
                NotifyOfPropertyChange(() => Episodes);
            }

            SelectedEpisode             = Episodes.LastOrDefault();
            EpisodeIndexes.CurrentIndex = Episodes.IndexOf(SelectedEpisode);
            EpisodeIndexes.EndIndex     = Episodes.IndexOf(SelectedEpisode);
            NotifyOfPropertyChange(() => CanEditNextEpisode);
            NotifyOfPropertyChange(() => CanEditPreviousEpisode);
        }
 public override void OnNavigatedTo(INavigationParameters parameters)
 {
     SelectedIndex = Episodes.IndexOf(SelectedEpisode);
 }
Esempio n. 8
0
        private void WireCommands()
        {
            TvSeriesPageLoaded = new RelayCommand(async() =>
            {
                DummyFolder = new BaseItemDto
                {
                    Type = "folder",
                    Name = string.Format(AppResources.TvShowRecentItemsTitle, SelectedTvSeries.Name.ToLower()),
                    Id   = SelectedTvSeries.Id
                };

                if (NavigationService.IsNetworkAvailable && !ShowDataLoaded)
                {
                    if (SelectedTvSeries != null)
                    {
                        SetProgressBar(AppResources.SysTrayGettingShowInformation);

                        try
                        {
                            Log.Info("Getting information for TV Series [{0}] ({1})", SelectedTvSeries.Name, SelectedTvSeries.Id);

                            SelectedTvSeries = await ApiClient.GetItemAsync(SelectedTvSeries.Id, AuthenticationService.Current.LoggedInUserId);
                            CastAndCrew      = Utils.GroupCastAndCrew(SelectedTvSeries.People);
                        }
                        catch (HttpException ex)
                        {
                            if (Utils.HandleHttpException("TvSeriesPageLoaded", ex, NavigationService, Log))
                            {
                                SetProgressBar();
                                return;
                            }
                        }

                        bool seasonsLoaded = await GetSeasons();

                        SetProgressBar(AppResources.SysTrayGettingRecentItems);

                        bool recentItems = await GetRecentItems().ConfigureAwait(true);

                        SetProgressBar();
                        ShowDataLoaded = (seasonsLoaded && recentItems);
                    }
                }
            });

            SeasonPageLoaded = new RelayCommand(async() =>
            {
                if (NavigationService.IsNetworkAvailable && !SeasonDataLoaded)
                {
                    if (SelectedSeason != null)
                    {
                        SetProgressBar(AppResources.SysTrayGettingEpisodes);

                        SeasonDataLoaded = await GetEpisodes();

                        SetProgressBar();
                    }
                }
            });

            EpisodePageLoaded = new RelayCommand(async() =>
            {
            });

            NextEpisodeCommand = new RelayCommand(() =>
            {
                if (Episodes.IsNullOrEmpty())
                {
                    return;
                }

                var episodeIndex = Episodes.IndexOf(SelectedEpisode);
                SelectedEpisode  = episodeIndex + 1 >= Episodes.Count ? Episodes[0] : Episodes[episodeIndex + 1];
                CanResume        = SelectedEpisode != null && SelectedEpisode.CanResume;
            });

            PreviousEpisodeCommand = new RelayCommand(() =>
            {
                if (Episodes.IsNullOrEmpty())
                {
                    return;
                }

                var episodeIndex = Episodes.IndexOf(SelectedEpisode);
                SelectedEpisode  = episodeIndex == 0 ? Episodes[Episodes.Count - 1] : Episodes[episodeIndex - 1];
                CanResume        = SelectedEpisode != null && SelectedEpisode.CanResume;
            });

            AddRemoveFavouriteCommand = new RelayCommand <BaseItemDto>(async item =>
            {
                try
                {
                    SetProgressBar(AppResources.SysTrayAddingToFavourites);

                    CanUpdateFavourites = false;

                    item.UserData = await ApiClient.UpdateFavoriteStatusAsync(item.Id, AuthenticationService.Current.LoggedInUserId, !item.UserData.IsFavorite);
                }
                catch (HttpException ex)
                {
                    if (Utils.HandleHttpException("AddRemoveFavouriteCommand (TV)", ex, NavigationService, Log))
                    {
                        SetProgressBar();
                        return;
                    }
                    App.ShowMessage(AppResources.ErrorMakingChanges);
                }

                SetProgressBar();

                CanUpdateFavourites = true;
            });

            ShowOtherFilmsCommand = new RelayCommand <BaseItemPerson>(person =>
            {
                App.SelectedItem = person;
                NavigationService.NavigateTo(Constants.Pages.ActorView);
            });

            EpisodeOfflineCommand = new RelayCommand(async() =>
            {
                await TakeOffline(SelectedEpisode);
            });

            SeasonOfflineCommand = new RelayCommand(async() =>
            {
                await TakeOffline(SelectedSeason);
            });

            ShowOfflineCommand = new RelayCommand(async() =>
            {
                await TakeOffline(SelectedTvSeries);
            }, () => SelectedTvSeries.SupportsSync.HasValue && SelectedTvSeries.SupportsSync.Value);

            ItemOfflineCommand = new RelayCommand <BaseItemDto>(async item =>
            {
                if (!item.CanTakeOffline())
                {
                    return;
                }

                try
                {
                    var request = SyncRequestHelper.CreateRequest(item.Id, item.GetTvTypeName());
                    await SyncService.Current.AddJobAsync(request);
                }
                catch (HttpException ex)
                {
                    Utils.HandleHttpException("ItemOfflineCommand", ex, NavigationService, Log);
                }
            });

            UnsyncItemCommand = new RelayCommand <BaseItemDto>(async item =>
            {
                try
                {
                    if (item.IsSynced.HasValue && !item.IsSynced.Value)
                    {
                        return;
                    }

                    await SyncService.Current.UnsyncItem(item.Id);
                }
                catch (HttpException ex)
                {
                    Utils.HandleHttpException("UnsyncItemCommand", ex, NavigationService, Log);
                }
            });

            NavigateTo = new RelayCommand <BaseItemDto>(NavigationService.NavigateTo);
        }
Esempio n. 9
0
        /// <summary>
        /// Загрузка из базы данных всех необходимых данных
        /// </summary>
        private void LoadData()
        {
            // --Начальная, когда ни один мульсериал не выбран
            if (_selectedCartoon == null)
            {
                LoadCartoonList();

                // --При загруженных с конструктора данных мультсериала
                if (IdList.CartoonId > 0)
                {
                    var tempId = 0;
                    if (_selectedCartoon != null)
                    {
                        tempId = _selectedCartoon.CartoonId;
                    }

                    _selectedCartoon = _cartoons.FirstOrDefault(c => c.CartoonId == IdList.CartoonId);

                    if (_selectedCartoon == null)
                    {
                        IdList.CartoonId = tempId;
                        _selectedCartoon = _cartoons.FirstOrDefault(c => c.CartoonId == IdList.CartoonId);
                    }

                    CartoonIndexes.CurrentIndex = Cartoons.IndexOf(_selectedCartoon);
                    LoadData();
                }
                else
                {
                    SelectedCartoon = _cartoons.FirstOrDefault();
                }

                NotifyCartoonData();
                return;
            }

            // --При выборе мультсериала
            if (_selectedSeason == null)
            {
                LoadCartoonVoiceOverList();
                LoadSeasonList();

                // установка значения выбранному мультфильму при смене его на другой
                _selectedCartoon            = _cartoons.FirstOrDefault(c => c.CartoonId == IdList.CartoonId);
                CartoonIndexes.CurrentIndex = Cartoons.IndexOf(_selectedCartoon);
                NotifyCartoonData();

                if (IdList.SeasonId > 0)
                {
                    var tempId = 0;
                    if (_selectedSeason != null)
                    {
                        tempId = _selectedSeason.CartoonSeasonId;
                    }

                    _selectedSeason = _seasons.FirstOrDefault(cs => cs.CartoonSeasonId == IdList.SeasonId);

                    if (_selectedSeason == null)
                    {
                        IdList.SeasonId = tempId;
                        _selectedSeason = _seasons.FirstOrDefault(cs => cs.CartoonSeasonId == IdList.SeasonId);
                    }

                    SeasonIndexes.CurrentIndex = Seasons.IndexOf(_selectedSeason);
                    LoadData();
                }
                else
                {
                    SelectedSeason = _seasons.FirstOrDefault();
                }

                NotifySeasonData();
                return;
            }

            // --При выборе сезона
            if (_selectedEpisode == null)
            {
                LoadEpisodeList();

                _selectedSeason            = _seasons.FirstOrDefault(cs => cs.CartoonSeasonId == IdList.SeasonId);
                SeasonIndexes.CurrentIndex = Seasons.IndexOf(_selectedSeason);
                NotifySeasonData();

                if (IdList.EpisodeId > 0)
                {
                    var tempId = 0;
                    if (_selectedEpisode != null)
                    {
                        tempId = _selectedEpisode.CartoonEpisodeId;
                    }

                    _selectedEpisode = _episodes.FirstOrDefault(ce => ce.CartoonEpisodeId == IdList.EpisodeId);

                    if (_selectedEpisode == null)
                    {
                        IdList.EpisodeId = tempId;
                        _selectedEpisode = _episodes.FirstOrDefault(ce => ce.CartoonEpisodeId == IdList.EpisodeId);
                    }

                    EpisodeIndexes.CurrentIndex = Episodes.IndexOf(_selectedEpisode);
                    LoadData();
                }
                else
                {
                    SelectedEpisode = _episodes.FirstOrDefault();
                }

                NotifyEpisodeData();
                return;
            }

            // --При выборе эпизода
            LoadEpisodeVoiceOverList();
            _selectedEpisode            = _episodes.FirstOrDefault(ce => ce.CartoonEpisodeId == IdList.EpisodeId);
            EpisodeIndexes.CurrentIndex = Episodes.IndexOf(_selectedEpisode);
            NotifyEpisodeData();
        }