aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Entities/TV/Season.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller/Entities/TV/Season.cs')
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs73
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;
+ }
}
}