| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | using MediaBrowser.Controller.Entities;using MediaBrowser.Model.Entities;using MediaBrowser.Model.Logging;using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Windows;using System.Windows.Controls;using System.Windows.Media;namespace MediaBrowser.ServerApplication.Controls{    /// <summary>    /// Interaction logic for MultiItemUpdateNotification.xaml    /// </summary>    public partial class MultiItemUpdateNotification : UserControl    {        /// <summary>        /// The logger        /// </summary>        private readonly ILogger Logger;        /// <summary>        /// Gets the children changed event args.        /// </summary>        /// <value>The children changed event args.</value>        private List<BaseItem> Items        {            get { return DataContext as List<BaseItem>; }        }        /// <summary>        /// Initializes a new instance of the <see cref="MultiItemUpdateNotification" /> class.        /// </summary>        public MultiItemUpdateNotification(ILogger logger)        {            if (logger == null)            {                throw new ArgumentNullException("logger");            }            Logger = logger;            InitializeComponent();            Loaded += MultiItemUpdateNotification_Loaded;        }        /// <summary>        /// Handles the Loaded event of the MultiItemUpdateNotification control.        /// </summary>        /// <param name="sender">The source of the event.</param>        /// <param name="e">The <see cref="RoutedEventArgs" /> instance containing the event data.</param>        void MultiItemUpdateNotification_Loaded(object sender, RoutedEventArgs e)        {            header.Text = string.Format("{0} New Items!", Items.Count);            PopulateItems();        }        /// <summary>        /// Populates the items.        /// </summary>        private void PopulateItems()        {            itemsPanel.Children.Clear();            var items = Items;            const int maxItemsToDisplay = 8;            var index = 0;            foreach (var item in items)            {                if (index >= maxItemsToDisplay)                {                    break;                }                // Try our best to find an image                var path = GetImagePath(item);                if (string.IsNullOrEmpty(path))                {                    continue;                }                Image img;                try                {                    img = App.Instance.GetImage(path);                }                catch (FileNotFoundException)                {                    Logger.Error("Image file not found {0}", path);                    continue;                }                img.Stretch = Stretch.Uniform;                img.Margin = new Thickness(0, 0, 5, 5);                img.ToolTip = ItemUpdateNotification.GetDisplayName(item, true);                RenderOptions.SetBitmapScalingMode(img, BitmapScalingMode.Fant);                itemsPanel.Children.Add(img);                index++;            }        }        /// <summary>        /// Gets the image path.        /// </summary>        /// <param name="item">The item.</param>        /// <returns>System.String.</returns>        internal static string GetImagePath(BaseItem item)        {            // Try our best to find an image            var path = item.PrimaryImagePath;            if (string.IsNullOrEmpty(path) && item.BackdropImagePaths != null)            {                path = item.BackdropImagePaths.FirstOrDefault();            }            if (string.IsNullOrEmpty(path))            {                path = item.GetImage(ImageType.Thumb);            }            if (string.IsNullOrEmpty(path))            {                path = item.GetImage(ImageType.Art);            }            if (string.IsNullOrEmpty(path))            {                path = item.GetImage(ImageType.Logo);            }            if (string.IsNullOrEmpty(path))            {                path = item.GetImage(ImageType.Disc);            }            return path;        }    }}
 |