From a508a997d9e7605c40f4442e367b9dd74e54f5e3 Mon Sep 17 00:00:00 2001 From: LukePulverenti Luke Pulverenti luke pulverenti Date: Sat, 18 Aug 2012 15:38:27 -0400 Subject: Added a VirtualFolder entity, a resolver, and a CollectionType property. --- .../Resolvers/FolderResolver.cs | 8 ++--- .../Resolvers/VirtualFolderResolver.cs | 41 ++++++++++++++++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs (limited to 'MediaBrowser.Controller/Resolvers') diff --git a/MediaBrowser.Controller/Resolvers/FolderResolver.cs b/MediaBrowser.Controller/Resolvers/FolderResolver.cs index bd91ec2bac..09d3cebe49 100644 --- a/MediaBrowser.Controller/Resolvers/FolderResolver.cs +++ b/MediaBrowser.Controller/Resolvers/FolderResolver.cs @@ -19,10 +19,10 @@ namespace MediaBrowser.Controller.Resolvers } } - public abstract class BaseFolderResolver : BaseItemResolver - where T : Folder, new () + public abstract class BaseFolderResolver : BaseItemResolver + where TItemType : Folder, new() { - protected override void SetItemValues(T item, ItemResolveEventArgs args) + protected override void SetItemValues(TItemType item, ItemResolveEventArgs args) { base.SetItemValues(item, args); @@ -32,7 +32,7 @@ namespace MediaBrowser.Controller.Resolvers PopulateFolderMetadata(item, args); } - private void PopulateFolderMetadata(Folder folder, ItemResolveEventArgs args) + private void PopulateFolderMetadata(TItemType folder, ItemResolveEventArgs args) { var metadataFile = args.GetFileByName("folder.xml"); diff --git a/MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs b/MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs new file mode 100644 index 0000000000..51478fd02e --- /dev/null +++ b/MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs @@ -0,0 +1,41 @@ +using System.ComponentModel.Composition; +using System.IO; +using MediaBrowser.Controller.Events; +using MediaBrowser.Model.Entities; + +namespace MediaBrowser.Controller.Resolvers +{ + [Export(typeof(IBaseItemResolver))] + public class VirtualFolderResolver : BaseFolderResolver + { + protected override VirtualFolder Resolve(ItemResolveEventArgs args) + { + if (args.IsFolder && args.Parent != null && args.Parent.IsRoot) + { + return new VirtualFolder(); + } + + return null; + } + + protected override void SetItemValues(VirtualFolder item, ItemResolveEventArgs args) + { + // Set the name initially by stripping off the [CollectionType=...] + // The name can always be overridden later by folder.xml + string pathName = Path.GetFileNameWithoutExtension(args.Path); + + string srch = "[collectiontype="; + int index = pathName.IndexOf(srch, System.StringComparison.OrdinalIgnoreCase); + + if (index != -1) + { + item.Name = pathName.Substring(0, index).Trim(); + + item.CollectionType = pathName.Substring(index + srch.Length).TrimEnd(']'); + } + + base.SetItemValues(item, args); + } + + } +} -- cgit v1.2.3