diff options
Diffstat (limited to 'MediaBrowser.Controller/Entities')
| -rw-r--r-- | MediaBrowser.Controller/Entities/BasePluginFolder.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserView.cs | 31 |
2 files changed, 32 insertions, 1 deletions
diff --git a/MediaBrowser.Controller/Entities/BasePluginFolder.cs b/MediaBrowser.Controller/Entities/BasePluginFolder.cs index e1383923f..fa2b49a60 100644 --- a/MediaBrowser.Controller/Entities/BasePluginFolder.cs +++ b/MediaBrowser.Controller/Entities/BasePluginFolder.cs @@ -14,7 +14,7 @@ namespace MediaBrowser.Controller.Entities public virtual string CollectionType { - get { return Model.Entities.CollectionType.BoxSets; } + get { return null; } } } } diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index 619a497f5..be426d99e 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Model.Entities; +using MoreLinq; using System; using System.Collections.Generic; using System.Linq; @@ -29,6 +30,10 @@ namespace MediaBrowser.Controller.Entities case CollectionType.Trailers: return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) .OfType<Trailer>(); + case CollectionType.Movies: + return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) + .Where(i => i is Movie || i is BoxSet) + .DistinctBy(i => i.Id); default: return mediaFolders.SelectMany(i => i.GetChildren(user, includeLinkedChildren)); } @@ -70,4 +75,30 @@ namespace MediaBrowser.Controller.Entities return standaloneTypes.Contains(collectionFolder.CollectionType ?? string.Empty); } } + + public class SpecialFolder : Folder + { + public SpecialFolderType SpecialFolderType { get; set; } + public string ItemTypeName { get; set; } + public string ParentId { get; set; } + + public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) + { + var parent = (Folder)LibraryManager.GetItemById(new Guid(ParentId)); + + if (SpecialFolderType == SpecialFolderType.ItemsByType) + { + var items = parent.GetRecursiveChildren(user, includeLinkedChildren); + + return items.Where(i => string.Equals(i.GetType().Name, ItemTypeName, StringComparison.OrdinalIgnoreCase)); + } + + return new List<BaseItem>(); + } + } + + public enum SpecialFolderType + { + ItemsByType = 1 + } } |
