From d52b0de1467e4255982f5409c70804fae66f2ede Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 20 Nov 2017 12:38:36 -0500 Subject: [PATCH] 3.2.40.0 --- Emby.Dlna/ContentDirectory/ControlHandler.cs | 53 +++++++++++++++----- SharedVersion.cs | 2 +- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/Emby.Dlna/ContentDirectory/ControlHandler.cs b/Emby.Dlna/ContentDirectory/ControlHandler.cs index 7db282dc86..5d6ef1adfe 100644 --- a/Emby.Dlna/ContentDirectory/ControlHandler.cs +++ b/Emby.Dlna/ContentDirectory/ControlHandler.cs @@ -491,18 +491,27 @@ namespace Emby.Dlna.ContentDirectory return GetGenreItems(item, null, user, sort, startIndex, limit); } - var collectionFolder = item as ICollectionFolder; - if (collectionFolder != null && string.Equals(CollectionType.Music, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase)) + if (!stubType.HasValue || stubType.Value != StubType.Folder) { - return GetMusicFolders(item, user, stubType, sort, startIndex, limit); - } - if (collectionFolder != null && string.Equals(CollectionType.Movies, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase)) - { - return GetMovieFolders(item, user, stubType, sort, startIndex, limit); - } - if (collectionFolder != null && string.Equals(CollectionType.TvShows, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase)) - { - return GetTvFolders(item, user, stubType, sort, startIndex, limit); + var collectionFolder = item as ICollectionFolder; + if (collectionFolder != null && string.Equals(CollectionType.Music, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase)) + { + return GetMusicFolders(item, user, stubType, sort, startIndex, limit); + } + if (collectionFolder != null && string.Equals(CollectionType.Movies, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase)) + { + return GetMovieFolders(item, user, stubType, sort, startIndex, limit); + } + if (collectionFolder != null && string.Equals(CollectionType.TvShows, collectionFolder.CollectionType, StringComparison.OrdinalIgnoreCase)) + { + return GetTvFolders(item, user, stubType, sort, startIndex, limit); + } + + var userView = item as UserView; + if (userView != null && string.Equals(CollectionType.Folders, userView.ViewType, StringComparison.OrdinalIgnoreCase)) + { + return GetFolders(item, user, stubType, sort, startIndex, limit); + } } if (stubType.HasValue) @@ -513,7 +522,10 @@ namespace Emby.Dlna.ContentDirectory return GetItemsFromPerson(person, user, startIndex, limit); } - return ApplyPaging(new QueryResult(), startIndex, limit); + if (stubType.Value != StubType.Folder) + { + return ApplyPaging(new QueryResult(), startIndex, limit); + } } var folder = (Folder)item; @@ -733,6 +745,23 @@ namespace Emby.Dlna.ContentDirectory }; } + private QueryResult GetFolders(BaseItem item, User user, StubType? stubType, SortCriteria sort, int? startIndex, int? limit) + { + var folders = user.RootFolder.GetChildren(user, true) + .OrderBy(i => i.SortName) + .Select(i => new ServerItem(i) + { + StubType = StubType.Folder + }) + .ToArray(); + + return new QueryResult + { + Items = folders, + TotalRecordCount = folders.Length + }; + } + private QueryResult GetTvFolders(BaseItem item, User user, StubType? stubType, SortCriteria sort, int? startIndex, int? limit) { var query = new InternalItemsQuery(user) diff --git a/SharedVersion.cs b/SharedVersion.cs index 16e0fbe3b0..580bc70016 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,3 +1,3 @@ using System.Reflection; -[assembly: AssemblyVersion("3.2.36.15")] +[assembly: AssemblyVersion("3.2.40.0")]