FolderResolver.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using MediaBrowser.Controller.Entities;
  2. using MediaBrowser.Controller.Library;
  3. namespace MediaBrowser.Controller.Resolvers
  4. {
  5. /// <summary>
  6. /// Class FolderResolver
  7. /// </summary>
  8. public class FolderResolver : BaseFolderResolver<Folder>
  9. {
  10. /// <summary>
  11. /// Gets the priority.
  12. /// </summary>
  13. /// <value>The priority.</value>
  14. public override ResolverPriority Priority
  15. {
  16. get { return ResolverPriority.Last; }
  17. }
  18. /// <summary>
  19. /// Resolves the specified args.
  20. /// </summary>
  21. /// <param name="args">The args.</param>
  22. /// <returns>Folder.</returns>
  23. protected override Folder Resolve(ItemResolveArgs args)
  24. {
  25. if (args.IsDirectory)
  26. {
  27. if (args.IsPhysicalRoot)
  28. {
  29. return new AggregateFolder();
  30. }
  31. if (args.IsRoot)
  32. {
  33. return new UserRootFolder(); //if we got here and still a root - must be user root
  34. }
  35. if (args.IsVf)
  36. {
  37. return new CollectionFolder();
  38. }
  39. return new Folder();
  40. }
  41. return null;
  42. }
  43. }
  44. /// <summary>
  45. /// Class BaseFolderResolver
  46. /// </summary>
  47. /// <typeparam name="TItemType">The type of the T item type.</typeparam>
  48. public abstract class BaseFolderResolver<TItemType> : BaseItemResolver<TItemType>
  49. where TItemType : Folder, new()
  50. {
  51. /// <summary>
  52. /// Sets the initial item values.
  53. /// </summary>
  54. /// <param name="item">The item.</param>
  55. /// <param name="args">The args.</param>
  56. protected override void SetInitialItemValues(TItemType item, ItemResolveArgs args)
  57. {
  58. base.SetInitialItemValues(item, args);
  59. item.IsRoot = args.Parent == null;
  60. item.IsPhysicalRoot = args.IsPhysicalRoot;
  61. }
  62. }
  63. }