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