aboutsummaryrefslogtreecommitdiff
path: root/Emby.Dlna
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2017-11-20 12:38:36 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2017-11-20 12:38:36 -0500
commitd52b0de1467e4255982f5409c70804fae66f2ede (patch)
tree32bc4144212d7f6ee3941c9c2471b56ab9c5d3e2 /Emby.Dlna
parent39418b4172fb36dc8f3a8d7f0dd23e3985e77657 (diff)
3.2.40.0
Diffstat (limited to 'Emby.Dlna')
-rw-r--r--Emby.Dlna/ContentDirectory/ControlHandler.cs53
1 files changed, 41 insertions, 12 deletions
diff --git a/Emby.Dlna/ContentDirectory/ControlHandler.cs b/Emby.Dlna/ContentDirectory/ControlHandler.cs
index 7db282dc8..5d6ef1adf 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<ServerItem>(), startIndex, limit);
+ if (stubType.Value != StubType.Folder)
+ {
+ return ApplyPaging(new QueryResult<ServerItem>(), startIndex, limit);
+ }
}
var folder = (Folder)item;
@@ -733,6 +745,23 @@ namespace Emby.Dlna.ContentDirectory
};
}
+ private QueryResult<ServerItem> 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<ServerItem>
+ {
+ Items = folders,
+ TotalRecordCount = folders.Length
+ };
+ }
+
private QueryResult<ServerItem> GetTvFolders(BaseItem item, User user, StubType? stubType, SortCriteria sort, int? startIndex, int? limit)
{
var query = new InternalItemsQuery(user)