FolderResolver.cs 2.1 KB

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