FolderResolver.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.ComponentModel.Composition;
  2. using MediaBrowser.Controller.Events;
  3. using MediaBrowser.Controller.Xml;
  4. using MediaBrowser.Model.Entities;
  5. namespace MediaBrowser.Controller.Resolvers
  6. {
  7. [Export(typeof(IBaseItemResolver))]
  8. public class FolderResolver : BaseFolderResolver<Folder>
  9. {
  10. protected override Folder Resolve(ItemResolveEventArgs args)
  11. {
  12. if (args.IsFolder)
  13. {
  14. return new Folder();
  15. }
  16. return null;
  17. }
  18. }
  19. public abstract class BaseFolderResolver<T> : BaseItemResolver<T>
  20. where T : Folder, new ()
  21. {
  22. protected override void SetItemValues(T item, ItemResolveEventArgs args)
  23. {
  24. base.SetItemValues(item, args);
  25. item.IsRoot = args.Parent == null;
  26. // Read data from folder.xml, if it exists
  27. PopulateFolderMetadata(item, args);
  28. }
  29. private void PopulateFolderMetadata(Folder folder, ItemResolveEventArgs args)
  30. {
  31. var metadataFile = args.GetFileByName("folder.xml");
  32. if (metadataFile.HasValue)
  33. {
  34. new FolderXmlParser().Fetch(folder, metadataFile.Value.Key);
  35. }
  36. }
  37. }
  38. }