using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; namespace Emby.Server.Implementations.Channels { /// /// An image provider for channels. /// public class ChannelImageProvider : IDynamicImageProvider, IHasItemChangeMonitor { private readonly IChannelManager _channelManager; /// /// Initializes a new instance of the class. /// /// The channel manager. public ChannelImageProvider(IChannelManager channelManager) { _channelManager = channelManager; } /// public IEnumerable GetSupportedImages(BaseItem item) { return GetChannel(item).GetSupportedChannelImages(); } /// public Task GetImage(BaseItem item, ImageType type, CancellationToken cancellationToken) { var channel = GetChannel(item); return channel.GetChannelImage(type, cancellationToken); } /// public string Name => "Channel Image Provider"; /// public bool Supports(BaseItem item) { return item is Channel; } private IChannel GetChannel(BaseItem item) { var channel = (Channel)item; return ((ChannelManager)_channelManager).GetChannelProvider(channel); } /// public bool HasChanged(BaseItem item, IDirectoryService directoryService) { return GetSupportedImages(item).Any(i => !item.HasImage(i)); } } }