#pragma warning disable CS1591 using System.Collections.Generic; using Emby.Server.Implementations.Images; using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Drawing; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.IO; using MediaBrowser.Model.Querying; namespace Emby.Server.Implementations.Images { public abstract class BaseFolderImageProvider<T> : BaseDynamicImageProvider<T> where T : Folder, new() { protected ILibraryManager _libraryManager; public BaseFolderImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor, ILibraryManager libraryManager) : base(fileSystem, providerManager, applicationPaths, imageProcessor) { _libraryManager = libraryManager; } protected override IReadOnlyList<BaseItem> GetItemsWithImages(BaseItem item) { return _libraryManager.GetItemList(new InternalItemsQuery { Parent = item, DtoOptions = new DtoOptions(true), ImageTypes = new ImageType[] { ImageType.Primary }, OrderBy = new System.ValueTuple<string, SortOrder>[] { new System.ValueTuple<string, SortOrder>(ItemSortBy.IsFolder, SortOrder.Ascending), new System.ValueTuple<string, SortOrder>(ItemSortBy.SortName, SortOrder.Ascending) }, Limit = 1 }); } protected override string CreateImage(BaseItem item, IReadOnlyCollection<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType, int imageIndex) { return CreateSingleImage(itemsWithImages, outputPathWithoutExtension, ImageType.Primary); } protected override bool Supports(BaseItem item) { return item is T; } protected override bool HasChangedByDate(BaseItem item, ItemImageInfo image) { if (item is MusicAlbum) { return false; } return base.HasChangedByDate(item, image); } } public class FolderImageProvider : BaseFolderImageProvider<Folder> { public FolderImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor, ILibraryManager libraryManager) : base(fileSystem, providerManager, applicationPaths, imageProcessor, libraryManager) { } protected override bool Supports(BaseItem item) { if (item is PhotoAlbum || item is MusicAlbum) { return false; } if (item is Folder && item.IsTopParent) { return false; } return true; } } public class MusicAlbumImageProvider : BaseFolderImageProvider<MusicAlbum> { public MusicAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor, ILibraryManager libraryManager) : base(fileSystem, providerManager, applicationPaths, imageProcessor, libraryManager) { } } public class PhotoAlbumImageProvider : BaseFolderImageProvider<PhotoAlbum> { public PhotoAlbumImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IApplicationPaths applicationPaths, IImageProcessor imageProcessor, ILibraryManager libraryManager) : base(fileSystem, providerManager, applicationPaths, imageProcessor, libraryManager) { } } }