aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs
diff options
context:
space:
mode:
authorLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-18 15:38:27 -0400
committerLukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com>2012-08-18 15:38:27 -0400
commita508a997d9e7605c40f4442e367b9dd74e54f5e3 (patch)
tree98b7d64d60532402e938c75996dee85ce05dff6a /MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs
parenta201eb060b7da8d95892d5cae3d70a24596e27c7 (diff)
Added a VirtualFolder entity, a resolver, and a CollectionType property.
Diffstat (limited to 'MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs')
-rw-r--r--MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs41
1 files changed, 41 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs b/MediaBrowser.Controller/Resolvers/VirtualFolderResolver.cs
new file mode 100644
index 000000000..51478fd02
--- /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<VirtualFolder>
+ {
+ 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);
+ }
+
+ }
+}