Преглед изворни кода

save library options on dialog close

Luke Pulverenti пре 8 година
родитељ
комит
89dd4f0be1

+ 20 - 4
MediaBrowser.Api/Library/LibraryStructureService.cs

@@ -11,6 +11,7 @@ using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using CommonIO;
 using CommonIO;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Entities;
 using MediaBrowser.Model.Configuration;
 using MediaBrowser.Model.Configuration;
 
 
 namespace MediaBrowser.Api.Library
 namespace MediaBrowser.Api.Library
@@ -140,6 +141,14 @@ namespace MediaBrowser.Api.Library
         public bool RefreshLibrary { get; set; }
         public bool RefreshLibrary { get; set; }
     }
     }
 
 
+    [Route("/Library/VirtualFolders/LibraryOptions", "POST")]
+    public class UpdateLibraryOptions : IReturnVoid
+    {
+        public string Id { get; set; }
+
+        public LibraryOptions LibraryOptions { get; set; }
+    }
+
     /// <summary>
     /// <summary>
     /// Class LibraryStructureService
     /// Class LibraryStructureService
     /// </summary>
     /// </summary>
@@ -188,6 +197,13 @@ namespace MediaBrowser.Api.Library
             return ToOptimizedSerializedResultUsingCache(result);
             return ToOptimizedSerializedResultUsingCache(result);
         }
         }
 
 
+        public void Post(UpdateLibraryOptions request)
+        {
+            var collectionFolder = (CollectionFolder)_libraryManager.GetItemById(request.Id);
+
+            collectionFolder.UpdateLibraryOptions(request.LibraryOptions);
+        }
+
         /// <summary>
         /// <summary>
         /// Posts the specified request.
         /// Posts the specified request.
         /// </summary>
         /// </summary>
@@ -220,12 +236,12 @@ namespace MediaBrowser.Api.Library
             var currentPath = Path.Combine(rootFolderPath, request.Name);
             var currentPath = Path.Combine(rootFolderPath, request.Name);
             var newPath = Path.Combine(rootFolderPath, request.NewName);
             var newPath = Path.Combine(rootFolderPath, request.NewName);
 
 
-			if (!_fileSystem.DirectoryExists(currentPath))
+            if (!_fileSystem.DirectoryExists(currentPath))
             {
             {
                 throw new DirectoryNotFoundException("The media collection does not exist");
                 throw new DirectoryNotFoundException("The media collection does not exist");
             }
             }
 
 
-			if (!string.Equals(currentPath, newPath, StringComparison.OrdinalIgnoreCase) && _fileSystem.DirectoryExists(newPath))
+            if (!string.Equals(currentPath, newPath, StringComparison.OrdinalIgnoreCase) && _fileSystem.DirectoryExists(newPath))
             {
             {
                 throw new ArgumentException("There is already a media collection with the name " + newPath + ".");
                 throw new ArgumentException("There is already a media collection with the name " + newPath + ".");
             }
             }
@@ -240,11 +256,11 @@ namespace MediaBrowser.Api.Library
                     //Create an unique name
                     //Create an unique name
                     var temporaryName = Guid.NewGuid().ToString();
                     var temporaryName = Guid.NewGuid().ToString();
                     var temporaryPath = Path.Combine(rootFolderPath, temporaryName);
                     var temporaryPath = Path.Combine(rootFolderPath, temporaryName);
-					_fileSystem.MoveDirectory(currentPath, temporaryPath);
+                    _fileSystem.MoveDirectory(currentPath, temporaryPath);
                     currentPath = temporaryPath;
                     currentPath = temporaryPath;
                 }
                 }
 
 
-				_fileSystem.MoveDirectory(currentPath, newPath);
+                _fileSystem.MoveDirectory(currentPath, newPath);
             }
             }
             finally
             finally
             {
             {

+ 11 - 1
MediaBrowser.Controller/Entities/CollectionFolder.cs

@@ -95,9 +95,19 @@ namespace MediaBrowser.Controller.Entities
             return System.IO.Path.Combine(path, "options.xml");
             return System.IO.Path.Combine(path, "options.xml");
         }
         }
 
 
+        public void UpdateLibraryOptions(LibraryOptions options)
+        {
+            SaveLibraryOptions(Path, options);
+        }
+
         public static void SaveLibraryOptions(string path, LibraryOptions options)
         public static void SaveLibraryOptions(string path, LibraryOptions options)
         {
         {
-            XmlSerializer.SerializeToFile(options, GetLibraryOptionsPath(path));
+            lock (LibraryOptions)
+            {
+                LibraryOptions[path] = options;
+
+                XmlSerializer.SerializeToFile(options, GetLibraryOptionsPath(path));
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>

+ 1 - 2
MediaBrowser.Controller/Entities/Movies/BoxSet.cs

@@ -110,8 +110,7 @@ namespace MediaBrowser.Controller.Entities.Movies
         {
         {
             get
             get
             {
             {
-                // TODO
-                return false;
+                return !FileSystem.ContainsSubPath(ConfigurationManager.ApplicationPaths.DataPath, Path);
             }
             }
         }
         }
 
 

+ 1 - 1
MediaBrowser.Server.Implementations/Collections/CollectionsDynamicFolder.cs

@@ -8,7 +8,7 @@ namespace MediaBrowser.Server.Implementations.Collections
     public class CollectionsDynamicFolder : IVirtualFolderCreator
     public class CollectionsDynamicFolder : IVirtualFolderCreator
     {
     {
         private readonly IApplicationPaths _appPaths;
         private readonly IApplicationPaths _appPaths;
-        private IFileSystem _fileSystem;
+        private readonly IFileSystem _fileSystem;
 
 
         public CollectionsDynamicFolder(IApplicationPaths appPaths, IFileSystem fileSystem)
         public CollectionsDynamicFolder(IApplicationPaths appPaths, IFileSystem fileSystem)
         {
         {