UserView.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using MediaBrowser.Controller.TV;
  2. using MediaBrowser.Model.Entities;
  3. using MediaBrowser.Model.Querying;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. namespace MediaBrowser.Controller.Entities
  9. {
  10. public class UserView : Folder
  11. {
  12. public string ViewType { get; set; }
  13. public Guid ParentId { get; set; }
  14. public static ITVSeriesManager TVSeriesManager;
  15. public override Task<QueryResult<BaseItem>> GetItems(InternalItemsQuery query)
  16. {
  17. return new UserViewBuilder(UserViewManager, LiveTvManager, ChannelManager, LibraryManager, Logger, UserDataManager, TVSeriesManager)
  18. .GetUserItems(this, ViewType, query);
  19. }
  20. public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
  21. {
  22. var result = GetItems(new InternalItemsQuery
  23. {
  24. User = user
  25. }).Result;
  26. return result.Items;
  27. }
  28. public override IEnumerable<BaseItem> GetRecursiveChildren(User user, bool includeLinkedChildren = true)
  29. {
  30. var result = GetItems(new InternalItemsQuery
  31. {
  32. User = user,
  33. Recursive = true
  34. }).Result;
  35. return result.Items;
  36. }
  37. protected override IEnumerable<BaseItem> GetEligibleChildrenForRecursiveChildren(User user)
  38. {
  39. return GetChildren(user, false);
  40. }
  41. public static bool IsExcludedFromGrouping(Folder folder)
  42. {
  43. var standaloneTypes = new List<string>
  44. {
  45. CollectionType.AdultVideos,
  46. CollectionType.Books,
  47. CollectionType.HomeVideos,
  48. CollectionType.Photos,
  49. CollectionType.Trailers
  50. };
  51. var collectionFolder = folder as CollectionFolder;
  52. if (collectionFolder == null)
  53. {
  54. return false;
  55. }
  56. return standaloneTypes.Contains(collectionFolder.CollectionType ?? string.Empty);
  57. }
  58. }
  59. public class SpecialFolder : Folder
  60. {
  61. public SpecialFolderType SpecialFolderType { get; set; }
  62. public string ItemTypeName { get; set; }
  63. public string ParentId { get; set; }
  64. public override IEnumerable<BaseItem> GetChildren(User user, bool includeLinkedChildren)
  65. {
  66. var parent = (Folder)LibraryManager.GetItemById(new Guid(ParentId));
  67. if (SpecialFolderType == SpecialFolderType.ItemsByType)
  68. {
  69. var items = parent.GetRecursiveChildren(user, includeLinkedChildren);
  70. return items.Where(i => string.Equals(i.GetType().Name, ItemTypeName, StringComparison.OrdinalIgnoreCase));
  71. }
  72. return new List<BaseItem>();
  73. }
  74. }
  75. public enum SpecialFolderType
  76. {
  77. ItemsByType = 1
  78. }
  79. }