|
@@ -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)
|