From 68d1b609647d0a592afc7d994fad2dedcb135f6b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 13 Aug 2016 01:49:00 -0400 Subject: stub out objects for per library settings --- .../Entities/CollectionFolder.cs | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) (limited to 'MediaBrowser.Controller/Entities/CollectionFolder.cs') diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index 8bf9919f2..68ba22356 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -3,11 +3,14 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; using CommonIO; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Model.Serialization; using MoreLinq; namespace MediaBrowser.Controller.Entities @@ -18,6 +21,8 @@ namespace MediaBrowser.Controller.Entities /// public class CollectionFolder : Folder, ICollectionFolder { + public static IXmlSerializer XmlSerializer { get; set; } + public CollectionFolder() { PhysicalLocationsList = new List(); @@ -39,6 +44,61 @@ namespace MediaBrowser.Controller.Entities public string CollectionType { get; set; } + private readonly Dictionary _libraryOptions = new Dictionary(); + public LibraryOptions GetLibraryOptions() + { + lock (_libraryOptions) + { + LibraryOptions options; + if (!_libraryOptions.TryGetValue(Path, out options)) + { + options = LoadLibraryOptions(); + _libraryOptions[Path] = options; + } + + return options; + } + } + + private LibraryOptions LoadLibraryOptions() + { + try + { + var result = XmlSerializer.DeserializeFromFile(typeof(LibraryOptions), GetLibraryOptionsPath(Path)) as LibraryOptions; + + if (result == null) + { + return new LibraryOptions(); + } + + return result; + } + catch (FileNotFoundException) + { + return new LibraryOptions(); + } + catch (DirectoryNotFoundException) + { + return new LibraryOptions(); + } + catch (Exception ex) + { + Logger.ErrorException("Error loading library options", ex); + + return new LibraryOptions(); + } + } + + private static string GetLibraryOptionsPath(string path) + { + return System.IO.Path.Combine(path, "options.xml"); + } + + public static void SaveLibraryOptions(string path, LibraryOptions options) + { + XmlSerializer.SerializeToFile(options, GetLibraryOptionsPath(path)); + } + /// /// Allow different display preferences for each collection folder /// -- cgit v1.2.3 From c18b8ec608b44e04d17a1ef02a615b985ca00e7b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 13 Aug 2016 02:33:31 -0400 Subject: add options to library setup --- MediaBrowser.Controller/Entities/CollectionFolder.cs | 8 ++++---- MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'MediaBrowser.Controller/Entities/CollectionFolder.cs') diff --git a/MediaBrowser.Controller/Entities/CollectionFolder.cs b/MediaBrowser.Controller/Entities/CollectionFolder.cs index 68ba22356..289cb7a2e 100644 --- a/MediaBrowser.Controller/Entities/CollectionFolder.cs +++ b/MediaBrowser.Controller/Entities/CollectionFolder.cs @@ -44,16 +44,16 @@ namespace MediaBrowser.Controller.Entities public string CollectionType { get; set; } - private readonly Dictionary _libraryOptions = new Dictionary(); + private static readonly Dictionary LibraryOptions = new Dictionary(); public LibraryOptions GetLibraryOptions() { - lock (_libraryOptions) + lock (LibraryOptions) { LibraryOptions options; - if (!_libraryOptions.TryGetValue(Path, out options)) + if (!LibraryOptions.TryGetValue(Path, out options)) { options = LoadLibraryOptions(); - _libraryOptions[Path] = options; + LibraryOptions[Path] = options; } return options; diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 2917ec2ce..f1b234b90 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -143,6 +143,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest -- cgit v1.2.3