diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-04-10 21:42:37 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-04-10 21:42:37 -0400 |
| commit | 0abe0685f5bab61124d6212360744a24fb47d09c (patch) | |
| tree | 12023836250c46750ae0a8375ba5892c3723596f /MediaBrowser.Controller | |
| parent | 17f5ae811817b0d891b2884d7a4adefc18bfaf3f (diff) | |
rework image providers
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 28 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/IHasImages.cs | 8 |
2 files changed, 30 insertions, 6 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index a1bcde9e6..ea8510b53 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -44,7 +44,7 @@ namespace MediaBrowser.Controller.Entities /// <summary> /// The supported image extensions /// </summary> - public static readonly string[] SupportedImageExtensions = { ".png", ".jpg", ".jpeg", ".tbn" }; + public static readonly string[] SupportedImageExtensions = { ".png", ".jpg", ".jpeg" }; public static readonly List<string> SupportedImageExtensionsList = SupportedImageExtensions.ToList(); @@ -1532,7 +1532,7 @@ namespace MediaBrowser.Controller.Entities } // Remove it from the item - ImageInfos.Remove(info); + RemoveImage(info); // Delete the source file var currentFile = new FileInfo(info.Path); @@ -1551,6 +1551,11 @@ namespace MediaBrowser.Controller.Entities return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None); } + public void RemoveImage(ItemImageInfo image) + { + ImageInfos.Remove(image); + } + public virtual Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) { return LibraryManager.UpdateItem(this, updateReason, cancellationToken); @@ -1641,9 +1646,9 @@ namespace MediaBrowser.Controller.Entities return ImageInfos.Where(i => i.Type == imageType); } - public bool AddImages(ImageType imageType, IEnumerable<FileInfo> images) + public bool AddImages(ImageType imageType, List<FileInfo> images) { - return AddImages(imageType, images.Cast<FileSystemInfo>()); + return AddImages(imageType, images.Cast<FileSystemInfo>().ToList()); } /// <summary> @@ -1653,7 +1658,7 @@ namespace MediaBrowser.Controller.Entities /// <param name="images">The images.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> /// <exception cref="System.ArgumentException">Cannot call AddImages with chapter images</exception> - public bool AddImages(ImageType imageType, IEnumerable<FileSystemInfo> images) + public bool AddImages(ImageType imageType, List<FileSystemInfo> images) { if (imageType == ImageType.Chapter) { @@ -1664,6 +1669,7 @@ namespace MediaBrowser.Controller.Entities .ToList(); var newImageList = new List<FileSystemInfo>(); + var imageAdded = false; foreach (var newImage in images) { @@ -1678,6 +1684,7 @@ namespace MediaBrowser.Controller.Entities if (existing == null) { newImageList.Add(newImage); + imageAdded = true; } else { @@ -1686,6 +1693,17 @@ namespace MediaBrowser.Controller.Entities } } + if (imageAdded || images.Count != existingImages.Count) + { + var newImagePaths = images.Select(i => i.FullName).ToList(); + + var deleted = existingImages + .Where(i => !newImagePaths.Contains(i.Path, StringComparer.OrdinalIgnoreCase) && !File.Exists(i.Path)) + .ToList(); + + ImageInfos = ImageInfos.Except(deleted).ToList(); + } + ImageInfos.AddRange(newImageList.Select(i => GetImageInfo(i, imageType))); return newImageList.Count > 0; diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs index 00a42271b..1871d7b68 100644 --- a/MediaBrowser.Controller/Entities/IHasImages.cs +++ b/MediaBrowser.Controller/Entities/IHasImages.cs @@ -141,7 +141,7 @@ namespace MediaBrowser.Controller.Entities /// <param name="imageType">Type of the image.</param> /// <param name="images">The images.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> - bool AddImages(ImageType imageType, IEnumerable<FileSystemInfo> images); + bool AddImages(ImageType imageType, List<FileSystemInfo> images); /// <summary> /// Determines whether [is save local metadata enabled]. @@ -190,6 +190,12 @@ namespace MediaBrowser.Controller.Entities /// </summary> /// <returns><c>true</c> if [is internet metadata enabled]; otherwise, <c>false</c>.</returns> bool IsInternetMetadataEnabled(); + + /// <summary> + /// Removes the image. + /// </summary> + /// <param name="image">The image.</param> + void RemoveImage(ItemImageInfo image); } public static class HasImagesExtensions |
