diff options
Diffstat (limited to 'MediaBrowser.Controller/Entities/TV/Season.cs')
| -rw-r--r-- | MediaBrowser.Controller/Entities/TV/Season.cs | 73 |
1 files changed, 64 insertions, 9 deletions
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs index 78e0b8bc4a..2d781118eb 100644 --- a/MediaBrowser.Controller/Entities/TV/Season.cs +++ b/MediaBrowser.Controller/Entities/TV/Season.cs @@ -1,5 +1,8 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Querying; using System; using System.Collections.Generic; using System.IO; @@ -55,13 +58,13 @@ namespace MediaBrowser.Controller.Entities.TV } // Genre, Rating and Stuido will all be the same - protected override Dictionary<string, Func<User, IEnumerable<BaseItem>>> GetIndexByOptions() + protected override IEnumerable<string> GetIndexByOptions() { - return new Dictionary<string, Func<User, IEnumerable<BaseItem>>> { - {LocalizedStrings.Instance.GetString("NoneDispPref"), null}, - {LocalizedStrings.Instance.GetString("PerformerDispPref"), GetIndexByPerformer}, - {LocalizedStrings.Instance.GetString("DirectorDispPref"), GetIndexByDirector}, - {LocalizedStrings.Instance.GetString("YearDispPref"), GetIndexByYear}, + return new List<string> { + {LocalizedStrings.Instance.GetString("NoneDispPref")}, + {LocalizedStrings.Instance.GetString("PerformerDispPref")}, + {LocalizedStrings.Instance.GetString("DirectorDispPref")}, + {LocalizedStrings.Instance.GetString("YearDispPref")}, }; } @@ -186,7 +189,7 @@ namespace MediaBrowser.Controller.Entities.TV [IgnoreDataMember] public bool IsMissingSeason { - get { return LocationType == Model.Entities.LocationType.Virtual && GetEpisodes().All(i => i.IsMissingEpisode); } + get { return LocationType == LocationType.Virtual && GetEpisodes().All(i => i.IsMissingEpisode); } } [IgnoreDataMember] @@ -198,13 +201,13 @@ namespace MediaBrowser.Controller.Entities.TV [IgnoreDataMember] public bool IsVirtualUnaired { - get { return LocationType == Model.Entities.LocationType.Virtual && IsUnaired; } + get { return LocationType == LocationType.Virtual && IsUnaired; } } [IgnoreDataMember] public bool IsMissingOrVirtualUnaired { - get { return LocationType == Model.Entities.LocationType.Virtual && GetEpisodes().All(i => i.IsVirtualUnaired || i.IsMissingEpisode); } + get { return LocationType == LocationType.Virtual && GetEpisodes().All(i => i.IsVirtualUnaired || i.IsMissingEpisode); } } [IgnoreDataMember] @@ -212,5 +215,57 @@ namespace MediaBrowser.Controller.Entities.TV { get { return (IndexNumber ?? -1) == 0; } } + + /// <summary> + /// Gets the episodes. + /// </summary> + /// <param name="user">The user.</param> + /// <returns>IEnumerable{Episode}.</returns> + public IEnumerable<Episode> GetEpisodes(User user) + { + var config = user.Configuration; + + return GetEpisodes(user, config.DisplayMissingEpisodes, config.DisplayUnairedEpisodes); + } + + public IEnumerable<Episode> GetEpisodes(User user, bool includeMissingEpisodes, bool includeVirtualUnairedEpisodes) + { + if (IndexNumber.HasValue) + { + var series = Series; + + if (series != null) + { + return series.GetEpisodes(user, IndexNumber.Value, includeMissingEpisodes, includeVirtualUnairedEpisodes); + } + } + + var episodes = GetRecursiveChildren(user) + .OfType<Episode>(); + + if (!includeMissingEpisodes) + { + episodes = episodes.Where(i => !i.IsMissingEpisode); + } + if (!includeVirtualUnairedEpisodes) + { + episodes = episodes.Where(i => !i.IsVirtualUnaired); + } + + return LibraryManager + .Sort(episodes, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending) + .Cast<Episode>(); + } + + public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) + { + return GetEpisodes(user); + } + + protected override bool GetBlockUnratedValue(UserConfiguration config) + { + // Don't block. Let either the entire series rating or episode rating determine it + return false; + } } } |
