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;
- }
- }
- }
|