From 31d079f1baea895b5cb0f1a737140ab94dc9a4fe Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Sat, 9 Mar 2013 23:22:36 -0500 Subject: unified the two sorting api's --- .../LibraryExplorer.xaml.cs | 62 ++++++++++++++++++---- 1 file changed, 52 insertions(+), 10 deletions(-) (limited to 'MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs') diff --git a/MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs b/MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs index d567a9fd8..26e0978a3 100644 --- a/MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs +++ b/MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs @@ -4,6 +4,7 @@ using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; @@ -78,7 +79,8 @@ namespace MediaBrowser.ServerApplication Cursor = Cursors.Wait; await Task.Run(() => { - IEnumerable children = CurrentUser.Name == "Physical" ? _libraryManager.RootFolder.Children.OrderBy(i => i.SortName) : _libraryManager.RootFolder.GetChildren(CurrentUser, sortBy: LocalizedStrings.Instance.GetString("NameDispPref")); + IEnumerable children = CurrentUser.Name == "Physical" ? _libraryManager.RootFolder.Children : _libraryManager.RootFolder.GetChildren(CurrentUser); + children = OrderByName(children, CurrentUser); foreach (Folder folder in children) { @@ -86,9 +88,12 @@ namespace MediaBrowser.ServerApplication var currentFolder = folder; Task.Factory.StartNew(() => { - var prefs = ddlProfile.SelectedItem != null ? currentFolder.GetDisplayPrefs(ddlProfile.SelectedItem as User, false) ?? new DisplayPreferences {SortBy = LocalizedStrings.Instance.GetString("NameDispPref")} : new DisplayPreferences {SortBy = LocalizedStrings.Instance.GetString("NameDispPref")}; + var prefs = ddlProfile.SelectedItem != null ? currentFolder.GetDisplayPrefs(ddlProfile.SelectedItem as User, false) ?? new DisplayPreferences {SortBy = ItemSortBy.SortName} : new DisplayPreferences {SortBy = ItemSortBy.SortName}; var node = new TreeViewItem { Tag = currentFolder }; - AddChildren(node, currentFolder.GetChildren(CurrentUser, prefs.IndexBy, prefs.SortBy ?? LocalizedStrings.Instance.GetString("NameDispPref")), CurrentUser); + + var subChildren = currentFolder.GetChildren(CurrentUser, prefs.IndexBy); + subChildren = OrderByName(subChildren, CurrentUser); + AddChildren(node, subChildren, CurrentUser); node.Header = currentFolder.Name + " (" + node.Items.Count + ")"; tvwLibrary.Items.Add(node); @@ -100,6 +105,28 @@ namespace MediaBrowser.ServerApplication } + /// + /// Orders the name of the by. + /// + /// The items. + /// The user. + /// IEnumerable{BaseItem}. + private IEnumerable OrderByName(IEnumerable items, User user) + { + return OrderBy(items, user, ItemSortBy.SortName); + } + + /// + /// Orders the name of the by. + /// + /// The items. + /// The user. + /// IEnumerable{BaseItem}. + private IEnumerable OrderBy(IEnumerable items, User user, string order) + { + return _libraryManager.Sort(items, user, new[] { order }, SortOrder.Ascending); + } + /// /// Adds the children. /// @@ -115,7 +142,7 @@ namespace MediaBrowser.ServerApplication if (subFolder != null) { var prefs = subFolder.GetDisplayPrefs(user, false) ?? new DisplayPreferences {SortBy = LocalizedStrings.Instance.GetString("NameDispPref")}; - AddChildren(node, subFolder.GetChildren(user, sortBy: prefs.SortBy), user); + AddChildren(node, OrderBy(subFolder.GetChildren(user), user, prefs.SortBy), user); node.Header = item.Name + " (" + node.Items.Count + ")"; } else @@ -152,14 +179,29 @@ namespace MediaBrowser.ServerApplication { lblIndexBy.Visibility = ddlIndexBy.Visibility = ddlSortBy.Visibility = lblSortBy.Visibility = Visibility.Visible; ddlIndexBy.ItemsSource = folder.IndexByOptionStrings; - ddlSortBy.ItemsSource = folder.SortByOptionStrings; + + ddlSortBy.ItemsSource = new [] + { + ItemSortBy.SortName, + ItemSortBy.Album, + ItemSortBy.AlbumArtist, + ItemSortBy.Artist, + ItemSortBy.CommunityRating, + ItemSortBy.DateCreated, + ItemSortBy.DatePlayed, + ItemSortBy.PremiereDate, + ItemSortBy.ProductionYear, + ItemSortBy.Random, + ItemSortBy.Runtime + }; + var prefs = folder.GetDisplayPrefs(ddlProfile.SelectedItem as User, false); ddlIndexBy.SelectedItem = prefs != null ? prefs.IndexBy ?? LocalizedStrings.Instance.GetString("NoneDispPref") : LocalizedStrings.Instance.GetString("NoneDispPref"); ddlSortBy.SelectedItem = prefs != null - ? prefs.SortBy ?? LocalizedStrings.Instance.GetString("NameDispPref") - : LocalizedStrings.Instance.GetString("NameDispPref"); + ? prefs.SortBy ?? ItemSortBy.SortName + : ItemSortBy.SortName; } else { @@ -311,7 +353,7 @@ namespace MediaBrowser.ServerApplication var folder = treeItem != null ? treeItem.Tag as Folder : null; - var prefs = folder != null ? folder.GetDisplayPrefs(CurrentUser, true) : new DisplayPreferences {SortBy = LocalizedStrings.Instance.GetString("NameDispPref")}; + var prefs = folder != null ? folder.GetDisplayPrefs(CurrentUser, true) : new DisplayPreferences {SortBy = ItemSortBy.SortName}; if (folder != null && prefs.IndexBy != ddlIndexBy.SelectedItem as string) { //grab UI context so we can update within the below task @@ -326,7 +368,7 @@ namespace MediaBrowser.ServerApplication //re-build the current item's children as an index prefs.IndexBy = ddlIndexBy.SelectedItem as string; treeItem.Items.Clear(); - AddChildren(treeItem,folder.GetChildren(CurrentUser, prefs.IndexBy, prefs.SortBy), CurrentUser); + AddChildren(treeItem, OrderBy(folder.GetChildren(CurrentUser, prefs.IndexBy), CurrentUser, prefs.SortBy), CurrentUser); treeItem.Header = folder.Name + "(" + treeItem.Items.Count + ")"; Cursor = Cursors.Arrow; @@ -367,7 +409,7 @@ namespace MediaBrowser.ServerApplication //re-sort prefs.SortBy = ddlSortBy.SelectedItem as string; treeItem.Items.Clear(); - AddChildren(treeItem,folder.GetChildren(CurrentUser,prefs.IndexBy, prefs.SortBy ?? LocalizedStrings.Instance.GetString("NameDispPref")), CurrentUser); + AddChildren(treeItem, OrderBy(folder.GetChildren(CurrentUser, prefs.IndexBy), CurrentUser, prefs.SortBy ?? ItemSortBy.SortName), CurrentUser); treeItem.Header = folder.Name + "(" + treeItem.Items.Count + ")"; Cursor = Cursors.Arrow; -- cgit v1.2.3 From b1be6f1d73272fb629ff453f6890766faeccf9de Mon Sep 17 00:00:00 2001 From: LukePulverenti Date: Sun, 10 Mar 2013 00:36:39 -0500 Subject: minor namespace changes in the model --- MediaBrowser.Api/Library/LibraryService.cs | 1 + .../UserLibrary/BaseItemsByNameService.cs | 1 + MediaBrowser.Api/UserLibrary/ItemsService.cs | 5 +- MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 1 + MediaBrowser.Controller/Library/DtoBuilder.cs | 1 + MediaBrowser.Model/DTO/ItemFields.cs | 114 ------------------- MediaBrowser.Model/DTO/ItemFilter.cs | 38 ------- MediaBrowser.Model/DTO/ItemQuery.cs | 125 -------------------- MediaBrowser.Model/DTO/ItemSortBy.cs | 54 --------- MediaBrowser.Model/DTO/ItemsResult.cs | 25 ---- MediaBrowser.Model/DTO/MediaType.cs | 22 ---- MediaBrowser.Model/Dto/ItemsByNameQuery.cs | 52 --------- MediaBrowser.Model/MediaBrowser.Model.csproj | 13 +-- MediaBrowser.Model/Querying/ItemFields.cs | 114 +++++++++++++++++++ MediaBrowser.Model/Querying/ItemFilter.cs | 38 +++++++ MediaBrowser.Model/Querying/ItemQuery.cs | 126 +++++++++++++++++++++ MediaBrowser.Model/Querying/ItemSortBy.cs | 54 +++++++++ MediaBrowser.Model/Querying/ItemsByNameQuery.cs | 53 +++++++++ MediaBrowser.Model/Querying/ItemsResult.cs | 26 +++++ .../Sorting/AlbumArtistComparer.cs | 1 + .../Sorting/AlbumComparer.cs | 1 + .../Sorting/ArtistComparer.cs | 1 + .../Sorting/CommunityRatingComparer.cs | 1 + .../Sorting/DateCreatedComparer.cs | 1 + .../Sorting/DatePlayedComparer.cs | 1 + .../Sorting/PremiereDateComparer.cs | 1 + .../Sorting/ProductionYearComparer.cs | 1 + .../Sorting/RandomComparer.cs | 1 + .../Sorting/RuntimeComparer.cs | 1 + .../Sorting/SortNameComparer.cs | 1 + .../LibraryExplorer.xaml.cs | 1 + Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 34 files changed, 441 insertions(+), 444 deletions(-) delete mode 100644 MediaBrowser.Model/DTO/ItemFields.cs delete mode 100644 MediaBrowser.Model/DTO/ItemFilter.cs delete mode 100644 MediaBrowser.Model/DTO/ItemQuery.cs delete mode 100644 MediaBrowser.Model/DTO/ItemSortBy.cs delete mode 100644 MediaBrowser.Model/DTO/ItemsResult.cs delete mode 100644 MediaBrowser.Model/DTO/MediaType.cs delete mode 100644 MediaBrowser.Model/Dto/ItemsByNameQuery.cs create mode 100644 MediaBrowser.Model/Querying/ItemFields.cs create mode 100644 MediaBrowser.Model/Querying/ItemFilter.cs create mode 100644 MediaBrowser.Model/Querying/ItemQuery.cs create mode 100644 MediaBrowser.Model/Querying/ItemSortBy.cs create mode 100644 MediaBrowser.Model/Querying/ItemsByNameQuery.cs create mode 100644 MediaBrowser.Model/Querying/ItemsResult.cs (limited to 'MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs') diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs index ae15500df..f0633c4b6 100644 --- a/MediaBrowser.Api/Library/LibraryService.cs +++ b/MediaBrowser.Api/Library/LibraryService.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Querying; using MediaBrowser.Server.Implementations.HttpServer; using ServiceStack.ServiceHost; using System; diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index 975f8bdfe..0a47e5df6 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Querying; using MediaBrowser.Server.Implementations.HttpServer; using ServiceStack.ServiceHost; using System; diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs index a02c3c012..b344f9491 100644 --- a/MediaBrowser.Api/UserLibrary/ItemsService.cs +++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Querying; using MediaBrowser.Server.Implementations.HttpServer; using ServiceStack.ServiceHost; using System; @@ -84,7 +85,7 @@ namespace MediaBrowser.Api.UserLibrary /// What to sort the results by /// /// The sort by. - [ApiMember(Name = "SortBy", Description = "Optional. Specify one or more sort orders, comma delimeted. Options: Album,AlbumArtist,Artist,DateCreated,DatePlayed,PremiereDate,SortName,Random", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + [ApiMember(Name = "SortBy", Description = "Optional. Specify one or more sort orders, comma delimeted. Options: Album, AlbumArtist, Artist, CommunityRating, DateCreated, DatePlayed, PremiereDate, ProductionYear, SortName, Random, Runtime", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string SortBy { get; set; } /// @@ -98,7 +99,7 @@ namespace MediaBrowser.Api.UserLibrary /// Filters to apply to the results /// /// The filters. - [ApiMember(Name = "Filters", Description = "Optional. Specify additional filters to apply. This allows multiple, comma delimeted. Options: IsFolder,IsNotFolder,IsUnplayed,IsPlayed,IsFavorite,IsResumable", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] + [ApiMember(Name = "Filters", Description = "Optional. Specify additional filters to apply. This allows multiple, comma delimeted. Options: IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsRecentlyAdded, IsResumable", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)] public string Filters { get; set; } /// diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index 1182dbb05..88b7dc57c 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -4,6 +4,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Model.Connectivity; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Querying; using MediaBrowser.Server.Implementations.HttpServer; using ServiceStack.ServiceHost; using ServiceStack.Text.Controller; diff --git a/MediaBrowser.Controller/Library/DtoBuilder.cs b/MediaBrowser.Controller/Library/DtoBuilder.cs index bdaa51b6c..ef5cbada0 100644 --- a/MediaBrowser.Controller/Library/DtoBuilder.cs +++ b/MediaBrowser.Controller/Library/DtoBuilder.cs @@ -11,6 +11,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Controller.Library { diff --git a/MediaBrowser.Model/DTO/ItemFields.cs b/MediaBrowser.Model/DTO/ItemFields.cs deleted file mode 100644 index 981afe894..000000000 --- a/MediaBrowser.Model/DTO/ItemFields.cs +++ /dev/null @@ -1,114 +0,0 @@ - -namespace MediaBrowser.Model.Dto -{ - /// - /// Used to control the data that gets attached to DtoBaseItems - /// - public enum ItemFields - { - /// - /// Audio properties - /// - AudioInfo, - - /// - /// The chapters - /// - Chapters, - - /// - /// The date created of the item - /// - DateCreated, - - /// - /// The display media type - /// - DisplayMediaType, - - /// - /// Item display preferences - /// - DisplayPreferences, - - /// - /// Genres - /// - Genres, - - /// - /// Child count, recursive child count, etc - /// - ItemCounts, - - /// - /// The fields that the server supports indexing on - /// - IndexOptions, - - /// - /// The item overview - /// - Overview, - - /// - /// The id of the item's parent - /// - ParentId, - - /// - /// The physical path of the item - /// - Path, - - /// - /// The list of people for the item - /// - People, - - /// - /// Imdb, tmdb, etc - /// - ProviderIds, - - /// - /// The aspect ratio of the primary image - /// - PrimaryImageAspectRatio, - - /// - /// AirDays, status, SeriesName, etc - /// - SeriesInfo, - - /// - /// The sort name of the item - /// - SortName, - - /// - /// The studios of the item - /// - Studios, - - /// - /// The taglines of the item - /// - Taglines, - - /// - /// The trailer url of the item - /// - TrailerUrls, - - /// - /// The user data of the item - /// - UserData, - - /// - /// The media streams - /// - MediaStreams - } -} diff --git a/MediaBrowser.Model/DTO/ItemFilter.cs b/MediaBrowser.Model/DTO/ItemFilter.cs deleted file mode 100644 index 038acc587..000000000 --- a/MediaBrowser.Model/DTO/ItemFilter.cs +++ /dev/null @@ -1,38 +0,0 @@ - -namespace MediaBrowser.Model.Dto -{ - /// - /// Enum ItemFilter - /// - public enum ItemFilter - { - /// - /// The item is a folder - /// - IsFolder = 1, - /// - /// The item is not folder - /// - IsNotFolder = 2, - /// - /// The item is unplayed - /// - IsUnplayed = 3, - /// - /// The item is played - /// - IsPlayed = 4, - /// - /// The item is a favorite - /// - IsFavorite = 5, - /// - /// The item is recently added - /// - IsRecentlyAdded = 6, - /// - /// The item is resumable - /// - IsResumable = 7 - } -} diff --git a/MediaBrowser.Model/DTO/ItemQuery.cs b/MediaBrowser.Model/DTO/ItemQuery.cs deleted file mode 100644 index 085a872b1..000000000 --- a/MediaBrowser.Model/DTO/ItemQuery.cs +++ /dev/null @@ -1,125 +0,0 @@ -using MediaBrowser.Model.Entities; -using System; - -namespace MediaBrowser.Model.Dto -{ - /// - /// Contains all the possible parameters that can be used to query for items - /// - public class ItemQuery - { - /// - /// The user to localize search results for - /// - /// The user id. - public Guid UserId { get; set; } - - /// - /// Specify this to localize the search to a specific item or folder. Omit to use the root. - /// - /// The parent id. - public string ParentId { get; set; } - - /// - /// Skips over a given number of items within the results. Use for paging. - /// - /// The start index. - public int? StartIndex { get; set; } - - /// - /// The maximum number of items to return - /// - /// The limit. - public int? Limit { get; set; } - - /// - /// What to sort the results by - /// - /// The sort by. - public string[] SortBy { get; set; } - - /// - /// The sort order to return results with - /// - /// The sort order. - public SortOrder? SortOrder { get; set; } - - /// - /// Filters to apply to the results - /// - /// The filters. - public ItemFilter[] Filters { get; set; } - - /// - /// Fields to return within the items, in addition to basic information - /// - /// The fields. - public ItemFields[] Fields { get; set; } - - /// - /// Whether or not to perform the query recursively - /// - /// true if recursive; otherwise, false. - public bool Recursive { get; set; } - - /// - /// Limit results to items containing specific genres - /// - /// The genres. - public string[] Genres { get; set; } - - /// - /// Limit results to items containing specific studios - /// - /// The studios. - public string[] Studios { get; set; } - - /// - /// Gets or sets the exclude item types. - /// - /// The exclude item types. - public string[] ExcludeItemTypes { get; set; } - - /// - /// Gets or sets the include item types. - /// - /// The include item types. - public string[] IncludeItemTypes { get; set; } - - /// - /// Limit results to items containing specific years - /// - /// The years. - public int[] Years { get; set; } - - /// - /// Limit results to items containing a specific person - /// - /// The person. - public string Person { get; set; } - - /// - /// If the Person filter is used, this can also be used to restrict to a specific person type - /// - /// The type of the person. - public string PersonType { get; set; } - - /// - /// Search characters used to find items - /// - /// The index by. - public string SearchTerm { get; set; } - - /// - /// The dynamic, localized index function name - /// - /// The index by. - public string IndexBy { get; set; } - - /// - /// Gets or sets the image types. - /// - /// The image types. - public ImageType[] ImageTypes { get; set; } - } -} diff --git a/MediaBrowser.Model/DTO/ItemSortBy.cs b/MediaBrowser.Model/DTO/ItemSortBy.cs deleted file mode 100644 index 141690a55..000000000 --- a/MediaBrowser.Model/DTO/ItemSortBy.cs +++ /dev/null @@ -1,54 +0,0 @@ - -namespace MediaBrowser.Model.Dto -{ - /// - /// These represent sort orders that are known by the core - /// - public static class ItemSortBy - { - /// - /// The album - /// - public const string Album = "Album"; - /// - /// The album artist - /// - public const string AlbumArtist = "AlbumArtist"; - /// - /// The artist - /// - public const string Artist = "Artist"; - /// - /// The date created - /// - public const string DateCreated = "DateCreated"; - /// - /// The date played - /// - public const string DatePlayed = "DatePlayed"; - /// - /// The premiere date - /// - public const string PremiereDate = "PremiereDate"; - /// - /// The sort name - /// - public const string SortName = "SortName"; - /// - /// The random - /// - public const string Random = "Random"; - /// - /// The runtime - /// - public const string Runtime = "Runtime"; - /// - /// The community rating - /// - public const string CommunityRating = "CommunityRating"; - /// - /// The production year - /// - public const string ProductionYear = "ProductionYear"; - } -} diff --git a/MediaBrowser.Model/DTO/ItemsResult.cs b/MediaBrowser.Model/DTO/ItemsResult.cs deleted file mode 100644 index 623e04fdd..000000000 --- a/MediaBrowser.Model/DTO/ItemsResult.cs +++ /dev/null @@ -1,25 +0,0 @@ -using ProtoBuf; - -namespace MediaBrowser.Model.Dto -{ - /// - /// Represents the result of a query for items - /// - [ProtoContract] - public class ItemsResult - { - /// - /// The set of items returned based on sorting, paging, etc - /// - /// The items. - [ProtoMember(1)] - public BaseItemDto[] Items { get; set; } - - /// - /// The total number of records available - /// - /// The total record count. - [ProtoMember(2)] - public int TotalRecordCount { get; set; } - } -} diff --git a/MediaBrowser.Model/DTO/MediaType.cs b/MediaBrowser.Model/DTO/MediaType.cs deleted file mode 100644 index eae97e616..000000000 --- a/MediaBrowser.Model/DTO/MediaType.cs +++ /dev/null @@ -1,22 +0,0 @@ - -namespace MediaBrowser.Model.Dto -{ - /// - /// Enum MediaType - /// - public enum MediaType - { - /// - /// The audio - /// - Audio, - /// - /// The game - /// - Game, - /// - /// The video - /// - Video - } -} diff --git a/MediaBrowser.Model/Dto/ItemsByNameQuery.cs b/MediaBrowser.Model/Dto/ItemsByNameQuery.cs deleted file mode 100644 index a10b29012..000000000 --- a/MediaBrowser.Model/Dto/ItemsByNameQuery.cs +++ /dev/null @@ -1,52 +0,0 @@ -using MediaBrowser.Model.Entities; -using System; - -namespace MediaBrowser.Model.Dto -{ - /// - /// Class ItemsByNameQuery - /// - public class ItemsByNameQuery - { - /// - /// Gets or sets the user id. - /// - /// The user id. - public Guid UserId { get; set; } - /// - /// Gets or sets the start index. - /// - /// The start index. - public int? StartIndex { get; set; } - /// - /// Gets or sets the size of the page. - /// - /// The size of the page. - public int? Limit { get; set; } - /// - /// Gets or sets a value indicating whether this is recursive. - /// - /// true if recursive; otherwise, false. - public bool Recursive { get; set; } - /// - /// Gets or sets the sort order. - /// - /// The sort order. - public SortOrder? SortOrder { get; set; } - /// - /// If specified the search will be localized within a specific item or folder - /// - /// The item id. - public string ItemId { get; set; } - /// - /// Fields to return within the items, in addition to basic information - /// - /// The fields. - public ItemFields[] Fields { get; set; } - /// - /// Gets or sets the person types. - /// - /// The person types. - public string[] PersonTypes { get; set; } - } -} diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index 6c2a62f91..36f585e5c 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -45,8 +45,7 @@ - - + @@ -63,8 +62,8 @@ - - + + @@ -90,11 +89,11 @@ - - + + - + diff --git a/MediaBrowser.Model/Querying/ItemFields.cs b/MediaBrowser.Model/Querying/ItemFields.cs new file mode 100644 index 000000000..8cf9796c0 --- /dev/null +++ b/MediaBrowser.Model/Querying/ItemFields.cs @@ -0,0 +1,114 @@ + +namespace MediaBrowser.Model.Querying +{ + /// + /// Used to control the data that gets attached to DtoBaseItems + /// + public enum ItemFields + { + /// + /// Audio properties + /// + AudioInfo, + + /// + /// The chapters + /// + Chapters, + + /// + /// The date created of the item + /// + DateCreated, + + /// + /// The display media type + /// + DisplayMediaType, + + /// + /// Item display preferences + /// + DisplayPreferences, + + /// + /// Genres + /// + Genres, + + /// + /// Child count, recursive child count, etc + /// + ItemCounts, + + /// + /// The fields that the server supports indexing on + /// + IndexOptions, + + /// + /// The item overview + /// + Overview, + + /// + /// The id of the item's parent + /// + ParentId, + + /// + /// The physical path of the item + /// + Path, + + /// + /// The list of people for the item + /// + People, + + /// + /// Imdb, tmdb, etc + /// + ProviderIds, + + /// + /// The aspect ratio of the primary image + /// + PrimaryImageAspectRatio, + + /// + /// AirDays, status, SeriesName, etc + /// + SeriesInfo, + + /// + /// The sort name of the item + /// + SortName, + + /// + /// The studios of the item + /// + Studios, + + /// + /// The taglines of the item + /// + Taglines, + + /// + /// The trailer url of the item + /// + TrailerUrls, + + /// + /// The user data of the item + /// + UserData, + + /// + /// The media streams + /// + MediaStreams + } +} diff --git a/MediaBrowser.Model/Querying/ItemFilter.cs b/MediaBrowser.Model/Querying/ItemFilter.cs new file mode 100644 index 000000000..9c7f139a8 --- /dev/null +++ b/MediaBrowser.Model/Querying/ItemFilter.cs @@ -0,0 +1,38 @@ + +namespace MediaBrowser.Model.Querying +{ + /// + /// Enum ItemFilter + /// + public enum ItemFilter + { + /// + /// The item is a folder + /// + IsFolder = 1, + /// + /// The item is not folder + /// + IsNotFolder = 2, + /// + /// The item is unplayed + /// + IsUnplayed = 3, + /// + /// The item is played + /// + IsPlayed = 4, + /// + /// The item is a favorite + /// + IsFavorite = 5, + /// + /// The item is recently added + /// + IsRecentlyAdded = 6, + /// + /// The item is resumable + /// + IsResumable = 7 + } +} diff --git a/MediaBrowser.Model/Querying/ItemQuery.cs b/MediaBrowser.Model/Querying/ItemQuery.cs new file mode 100644 index 000000000..3b320a011 --- /dev/null +++ b/MediaBrowser.Model/Querying/ItemQuery.cs @@ -0,0 +1,126 @@ +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using System; + +namespace MediaBrowser.Model.Querying +{ + /// + /// Contains all the possible parameters that can be used to query for items + /// + public class ItemQuery + { + /// + /// The user to localize search results for + /// + /// The user id. + public Guid UserId { get; set; } + + /// + /// Specify this to localize the search to a specific item or folder. Omit to use the root. + /// + /// The parent id. + public string ParentId { get; set; } + + /// + /// Skips over a given number of items within the results. Use for paging. + /// + /// The start index. + public int? StartIndex { get; set; } + + /// + /// The maximum number of items to return + /// + /// The limit. + public int? Limit { get; set; } + + /// + /// What to sort the results by + /// + /// The sort by. + public string[] SortBy { get; set; } + + /// + /// The sort order to return results with + /// + /// The sort order. + public SortOrder? SortOrder { get; set; } + + /// + /// Filters to apply to the results + /// + /// The filters. + public ItemFilter[] Filters { get; set; } + + /// + /// Fields to return within the items, in addition to basic information + /// + /// The fields. + public ItemFields[] Fields { get; set; } + + /// + /// Whether or not to perform the query recursively + /// + /// true if recursive; otherwise, false. + public bool Recursive { get; set; } + + /// + /// Limit results to items containing specific genres + /// + /// The genres. + public string[] Genres { get; set; } + + /// + /// Limit results to items containing specific studios + /// + /// The studios. + public string[] Studios { get; set; } + + /// + /// Gets or sets the exclude item types. + /// + /// The exclude item types. + public string[] ExcludeItemTypes { get; set; } + + /// + /// Gets or sets the include item types. + /// + /// The include item types. + public string[] IncludeItemTypes { get; set; } + + /// + /// Limit results to items containing specific years + /// + /// The years. + public int[] Years { get; set; } + + /// + /// Limit results to items containing a specific person + /// + /// The person. + public string Person { get; set; } + + /// + /// If the Person filter is used, this can also be used to restrict to a specific person type + /// + /// The type of the person. + public string PersonType { get; set; } + + /// + /// Search characters used to find items + /// + /// The index by. + public string SearchTerm { get; set; } + + /// + /// The dynamic, localized index function name + /// + /// The index by. + public string IndexBy { get; set; } + + /// + /// Gets or sets the image types. + /// + /// The image types. + public ImageType[] ImageTypes { get; set; } + } +} diff --git a/MediaBrowser.Model/Querying/ItemSortBy.cs b/MediaBrowser.Model/Querying/ItemSortBy.cs new file mode 100644 index 000000000..9599e2aac --- /dev/null +++ b/MediaBrowser.Model/Querying/ItemSortBy.cs @@ -0,0 +1,54 @@ + +namespace MediaBrowser.Model.Querying +{ + /// + /// These represent sort orders that are known by the core + /// + public static class ItemSortBy + { + /// + /// The album + /// + public const string Album = "Album"; + /// + /// The album artist + /// + public const string AlbumArtist = "AlbumArtist"; + /// + /// The artist + /// + public const string Artist = "Artist"; + /// + /// The date created + /// + public const string DateCreated = "DateCreated"; + /// + /// The date played + /// + public const string DatePlayed = "DatePlayed"; + /// + /// The premiere date + /// + public const string PremiereDate = "PremiereDate"; + /// + /// The sort name + /// + public const string SortName = "SortName"; + /// + /// The random + /// + public const string Random = "Random"; + /// + /// The runtime + /// + public const string Runtime = "Runtime"; + /// + /// The community rating + /// + public const string CommunityRating = "CommunityRating"; + /// + /// The production year + /// + public const string ProductionYear = "ProductionYear"; + } +} diff --git a/MediaBrowser.Model/Querying/ItemsByNameQuery.cs b/MediaBrowser.Model/Querying/ItemsByNameQuery.cs new file mode 100644 index 000000000..5be23f3dd --- /dev/null +++ b/MediaBrowser.Model/Querying/ItemsByNameQuery.cs @@ -0,0 +1,53 @@ +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Entities; +using System; + +namespace MediaBrowser.Model.Querying +{ + /// + /// Class ItemsByNameQuery + /// + public class ItemsByNameQuery + { + /// + /// Gets or sets the user id. + /// + /// The user id. + public Guid UserId { get; set; } + /// + /// Gets or sets the start index. + /// + /// The start index. + public int? StartIndex { get; set; } + /// + /// Gets or sets the size of the page. + /// + /// The size of the page. + public int? Limit { get; set; } + /// + /// Gets or sets a value indicating whether this is recursive. + /// + /// true if recursive; otherwise, false. + public bool Recursive { get; set; } + /// + /// Gets or sets the sort order. + /// + /// The sort order. + public SortOrder? SortOrder { get; set; } + /// + /// If specified the search will be localized within a specific item or folder + /// + /// The item id. + public string ItemId { get; set; } + /// + /// Fields to return within the items, in addition to basic information + /// + /// The fields. + public ItemFields[] Fields { get; set; } + /// + /// Gets or sets the person types. + /// + /// The person types. + public string[] PersonTypes { get; set; } + } +} diff --git a/MediaBrowser.Model/Querying/ItemsResult.cs b/MediaBrowser.Model/Querying/ItemsResult.cs new file mode 100644 index 000000000..f8393b7fc --- /dev/null +++ b/MediaBrowser.Model/Querying/ItemsResult.cs @@ -0,0 +1,26 @@ +using MediaBrowser.Model.Dto; +using ProtoBuf; + +namespace MediaBrowser.Model.Querying +{ + /// + /// Represents the result of a query for items + /// + [ProtoContract] + public class ItemsResult + { + /// + /// The set of items returned based on sorting, paging, etc + /// + /// The items. + [ProtoMember(1)] + public BaseItemDto[] Items { get; set; } + + /// + /// The total number of records available + /// + /// The total record count. + [ProtoMember(2)] + public int TotalRecordCount { get; set; } + } +} diff --git a/MediaBrowser.Server.Implementations/Sorting/AlbumArtistComparer.cs b/MediaBrowser.Server.Implementations/Sorting/AlbumArtistComparer.cs index e045cdfc8..5356ecf9e 100644 --- a/MediaBrowser.Server.Implementations/Sorting/AlbumArtistComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/AlbumArtistComparer.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; using System; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/AlbumComparer.cs b/MediaBrowser.Server.Implementations/Sorting/AlbumComparer.cs index 24e1f40da..f8d319e36 100644 --- a/MediaBrowser.Server.Implementations/Sorting/AlbumComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/AlbumComparer.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; using System; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs b/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs index 278a39785..e41185dff 100644 --- a/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/ArtistComparer.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; using System; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/CommunityRatingComparer.cs b/MediaBrowser.Server.Implementations/Sorting/CommunityRatingComparer.cs index 2e1b73ccf..5aa1ad100 100644 --- a/MediaBrowser.Server.Implementations/Sorting/CommunityRatingComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/CommunityRatingComparer.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/DateCreatedComparer.cs b/MediaBrowser.Server.Implementations/Sorting/DateCreatedComparer.cs index d340913c9..5097ae459 100644 --- a/MediaBrowser.Server.Implementations/Sorting/DateCreatedComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/DateCreatedComparer.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; using System; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/DatePlayedComparer.cs b/MediaBrowser.Server.Implementations/Sorting/DatePlayedComparer.cs index 49e464559..34b0335b8 100644 --- a/MediaBrowser.Server.Implementations/Sorting/DatePlayedComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/DatePlayedComparer.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; using System; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/PremiereDateComparer.cs b/MediaBrowser.Server.Implementations/Sorting/PremiereDateComparer.cs index 2a8d52405..a3dd56b65 100644 --- a/MediaBrowser.Server.Implementations/Sorting/PremiereDateComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/PremiereDateComparer.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; using System; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/ProductionYearComparer.cs b/MediaBrowser.Server.Implementations/Sorting/ProductionYearComparer.cs index 47a03048c..662692952 100644 --- a/MediaBrowser.Server.Implementations/Sorting/ProductionYearComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/ProductionYearComparer.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/RandomComparer.cs b/MediaBrowser.Server.Implementations/Sorting/RandomComparer.cs index e7e98a8a0..73c636bab 100644 --- a/MediaBrowser.Server.Implementations/Sorting/RandomComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/RandomComparer.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; using System; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/RuntimeComparer.cs b/MediaBrowser.Server.Implementations/Sorting/RuntimeComparer.cs index 71893ef31..576187b84 100644 --- a/MediaBrowser.Server.Implementations/Sorting/RuntimeComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/RuntimeComparer.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.Server.Implementations/Sorting/SortNameComparer.cs b/MediaBrowser.Server.Implementations/Sorting/SortNameComparer.cs index 067f8c453..5053b14db 100644 --- a/MediaBrowser.Server.Implementations/Sorting/SortNameComparer.cs +++ b/MediaBrowser.Server.Implementations/Sorting/SortNameComparer.cs @@ -2,6 +2,7 @@ using System; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Server.Implementations.Sorting { diff --git a/MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs b/MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs index 26e0978a3..1968bbc7d 100644 --- a/MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs +++ b/MediaBrowser.ServerApplication/LibraryExplorer.xaml.cs @@ -7,6 +7,7 @@ using MediaBrowser.Controller.Localization; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; +using MediaBrowser.Model.Querying; using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index f1ac09af5..75ac535d8 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.40 + 3.0.42 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index 8b22d0886..048cb1d45 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.40 + 3.0.42 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index a97d2fc03..d5ca086be 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.40 + 3.0.42 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - + -- cgit v1.2.3