diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-11-30 14:01:33 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-11-30 14:01:33 -0500 |
| commit | d7bdb744ca9d4b3955071dfe3c38ed631dbafbfd (patch) | |
| tree | ce244a359a57e7e53808e4f524b9e552cd67419a /MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs | |
| parent | f9ba260a19e12aff6562733023566943afb8cdd5 (diff) | |
add new image params
Diffstat (limited to 'MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs')
| -rw-r--r-- | MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs | 111 |
1 files changed, 82 insertions, 29 deletions
diff --git a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs index 438b5a4ce..d979e3d89 100644 --- a/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs +++ b/MediaBrowser.Dlna/ContentDirectory/ControlHandler.cs @@ -236,7 +236,7 @@ namespace MediaBrowser.Dlna.ContentDirectory foreach (var i in childrenResult.Items) { var childItem = i.Item; - var displayStubType = GetDisplayStubType(childItem, serverItem.Item); + var displayStubType = i.StubType; if (childItem.IsFolder || displayStubType.HasValue) { @@ -263,29 +263,6 @@ namespace MediaBrowser.Dlna.ContentDirectory }; } - private StubType? GetDisplayStubType(BaseItem item, BaseItem context) - { - if (context == null || context.IsFolder) - { - var movie = item as Movie; - if (movie != null) - { - if (movie.LocalTrailerIds.Count > 0 || - movie.SpecialFeatureIds.Count > 0) - { - return StubType.Folder; - } - - if (movie.People.Count > 0) - { - return StubType.Folder; - } - } - } - - return null; - } - private async Task<IEnumerable<KeyValuePair<string, string>>> HandleSearch(Headers sparams, User user, string deviceId) { var searchCriteria = new SearchCriteria(sparams.GetValueOrDefault("SearchCriteria", "")); @@ -418,11 +395,36 @@ namespace MediaBrowser.Dlna.ContentDirectory { if (stubType.HasValue) { - var movie = item as Movie; + if (stubType.Value == StubType.People) + { + var items = item.People.Select(i => + { + try + { + return _libraryManager.GetPerson(i.Name); + } + catch + { + return null; + } + + }).Where(i => i != null).ToArray(); + + var result = new QueryResult<ServerItem> + { + Items = items.Select(i => new ServerItem { Item = i }).ToArray(), + TotalRecordCount = items.Length + }; - if (movie != null) + return ApplyPaging(result, startIndex, limit); + } + if (stubType.Value == StubType.Folder) { - return await GetMovieItems(movie).ConfigureAwait(false); + var movie = item as Movie; + if (movie != null) + { + return ApplyPaging(await GetMovieItems(movie).ConfigureAwait(false), startIndex, limit); + } } } @@ -445,13 +447,52 @@ namespace MediaBrowser.Dlna.ContentDirectory }).ConfigureAwait(false); + var serverItems = queryResult + .Items + .Select(i => new ServerItem + { + Item = i, + StubType = GetDisplayStubType(i, item) + }) + .ToArray(); + return new QueryResult<ServerItem> { TotalRecordCount = queryResult.TotalRecordCount, - Items = queryResult.Items.Select(i => new ServerItem { Item = i, StubType = null }).ToArray() + Items = serverItems }; } + private QueryResult<ServerItem> ApplyPaging(QueryResult<ServerItem> result, int? startIndex, int? limit) + { + result.Items = result.Items.Skip(startIndex ?? 0).Take(limit ?? int.MaxValue).ToArray(); + + return result; + } + + private StubType? GetDisplayStubType(BaseItem item, BaseItem context) + { + if (context == null || context.IsFolder) + { + var movie = item as Movie; + if (movie != null) + { + if (movie.LocalTrailerIds.Count > 0 || + movie.SpecialFeatureIds.Count > 0) + { + return StubType.Folder; + } + + if (movie.People.Count > 0) + { + return StubType.Folder; + } + } + } + + return null; + } + private Task<QueryResult<ServerItem>> GetMovieItems(Movie item) { var list = new List<BaseItem>(); @@ -464,6 +505,12 @@ namespace MediaBrowser.Dlna.ContentDirectory var serverItems = list.Select(i => new ServerItem { Item = i, StubType = null }) .ToList(); + serverItems.Add(new ServerItem + { + Item = item, + StubType = StubType.People + }); + return Task.FromResult(new QueryResult<ServerItem> { Items = serverItems.ToArray(), @@ -512,6 +559,11 @@ namespace MediaBrowser.Dlna.ContentDirectory stubType = StubType.Folder; id = id.Split(new[] { '_' }, 2)[1]; } + else if (id.StartsWith("people_", StringComparison.OrdinalIgnoreCase)) + { + stubType = StubType.People; + id = id.Split(new[] { '_' }, 2)[1]; + } if (Guid.TryParse(id, out itemId)) { @@ -538,6 +590,7 @@ namespace MediaBrowser.Dlna.ContentDirectory public enum StubType { - Folder = 0 + Folder = 0, + People = 1 } } |
