diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-09-01 16:10:54 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-09-01 16:10:54 -0400 |
| commit | 6f45ea08237eefde317088459c4a87669be981f4 (patch) | |
| tree | 17eb19d11d72e0225d45323e79b0711ec30c1584 /MediaBrowser.Controller/Entities/UserView.cs | |
| parent | 383b9999da15e8bc6421527c381c6aa80f14c97f (diff) | |
fixes #912 - Add special views for Dlna
Diffstat (limited to 'MediaBrowser.Controller/Entities/UserView.cs')
| -rw-r--r-- | MediaBrowser.Controller/Entities/UserView.cs | 80 |
1 files changed, 24 insertions, 56 deletions
diff --git a/MediaBrowser.Controller/Entities/UserView.cs b/MediaBrowser.Controller/Entities/UserView.cs index 2abc71752..9b26ce23c 100644 --- a/MediaBrowser.Controller/Entities/UserView.cs +++ b/MediaBrowser.Controller/Entities/UserView.cs @@ -1,12 +1,9 @@ -using MediaBrowser.Controller.Entities.Movies; -using MediaBrowser.Controller.Entities.TV; -using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.TV; using MediaBrowser.Model.Entities; -using MediaBrowser.Model.LiveTv; +using MediaBrowser.Model.Querying; using System; using System.Collections.Generic; using System.Linq; -using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.Controller.Entities @@ -14,56 +11,37 @@ namespace MediaBrowser.Controller.Entities public class UserView : Folder { public string ViewType { get; set; } - public static IUserViewManager UserViewManager { get; set; } + public Guid ParentId { get; set; } - public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) + public static ITVSeriesManager TVSeriesManager; + + public override Task<QueryResult<BaseItem>> GetUserItems(UserItemsQuery query) { - var mediaFolders = GetMediaFolders(user); + return new UserViewBuilder(UserViewManager, LiveTvManager, ChannelManager, LibraryManager, Logger, UserDataManager, TVSeriesManager) + .GetUserItems(this, ViewType, query); + } - switch (ViewType) + public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren) + { + var result = GetUserItems(new UserItemsQuery { - case CollectionType.LiveTvChannels: - return LiveTvManager.GetInternalChannels(new LiveTvChannelQuery - { - UserId = user.Id.ToString("N") - - }, CancellationToken.None).Result.Items; - case CollectionType.LiveTvRecordingGroups: - return LiveTvManager.GetInternalRecordings(new RecordingQuery - { - UserId = user.Id.ToString("N"), - Status = RecordingStatus.Completed - - }, CancellationToken.None).Result.Items; - case CollectionType.LiveTv: - return GetLiveTvFolders(user).Result; - case CollectionType.Folders: - return user.RootFolder.GetChildren(user, includeLinkedChildren); - case CollectionType.Games: - return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) - .OfType<GameSystem>(); - case CollectionType.BoxSets: - return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) - .OfType<BoxSet>(); - case CollectionType.TvShows: - return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) - .OfType<Series>(); - case CollectionType.Trailers: - return mediaFolders.SelectMany(i => i.GetRecursiveChildren(user, includeLinkedChildren)) - .OfType<Trailer>(); - default: - return mediaFolders.SelectMany(i => i.GetChildren(user, includeLinkedChildren)); - } + User = user + + }).Result; + + return result.Items; } - private async Task<IEnumerable<BaseItem>> GetLiveTvFolders(User user) + public override IEnumerable<BaseItem> GetRecursiveChildren(User user, bool includeLinkedChildren = true) { - var list = new List<BaseItem>(); + var result = GetUserItems(new UserItemsQuery + { + User = user, + Recursive = true - list.Add(await UserViewManager.GetUserView(CollectionType.LiveTvChannels, user, string.Empty, CancellationToken.None).ConfigureAwait(false)); - list.Add(await UserViewManager.GetUserView(CollectionType.LiveTvRecordingGroups, user, string.Empty, CancellationToken.None).ConfigureAwait(false)); + }).Result; - return list; + return result.Items; } protected override IEnumerable<BaseItem> GetEligibleChildrenForRecursiveChildren(User user) @@ -71,16 +49,6 @@ namespace MediaBrowser.Controller.Entities return GetChildren(user, false); } - private IEnumerable<Folder> GetMediaFolders(User user) - { - var excludeFolderIds = user.Configuration.ExcludeFoldersFromGrouping.Select(i => new Guid(i)).ToList(); - - return user.RootFolder - .GetChildren(user, true, true) - .OfType<Folder>() - .Where(i => !excludeFolderIds.Contains(i.Id) && !IsExcludedFromGrouping(i)); - } - public static bool IsExcludedFromGrouping(Folder folder) { var standaloneTypes = new List<string> |
