ItemTrailers.xaml.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using MediaBrowser.Model.Dto;
  2. using MediaBrowser.Model.Net;
  3. using MediaBrowser.UI;
  4. using MediaBrowser.UI.Controller;
  5. using MediaBrowser.UI.Controls;
  6. using MediaBrowser.UI.Playback;
  7. using MediaBrowser.UI.ViewModels;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. namespace MediaBrowser.Plugins.DefaultTheme.Controls.Details
  11. {
  12. /// <summary>
  13. /// Interaction logic for ItemTrailers.xaml
  14. /// </summary>
  15. public partial class ItemTrailers : BaseDetailsControl
  16. {
  17. /// <summary>
  18. /// Initializes a new instance of the <see cref="ItemSpecialFeatures" /> class.
  19. /// </summary>
  20. public ItemTrailers()
  21. {
  22. InitializeComponent();
  23. lstItems.ItemInvoked += lstItems_ItemInvoked;
  24. }
  25. /// <summary>
  26. /// LSTs the items_ item invoked.
  27. /// </summary>
  28. /// <param name="sender">The sender.</param>
  29. /// <param name="e">The e.</param>
  30. void lstItems_ItemInvoked(object sender, ItemEventArgs<object> e)
  31. {
  32. var viewModel = (SpecialFeatureViewModel)e.Argument;
  33. UIKernel.Instance.PlaybackManager.Play(new PlayOptions
  34. {
  35. Items = new List<BaseItemDto> { viewModel.Item }
  36. });
  37. }
  38. /// <summary>
  39. /// Called when [item changed].
  40. /// </summary>
  41. protected override async void OnItemChanged()
  42. {
  43. BaseItemDto[] result;
  44. try
  45. {
  46. result = await UIKernel.Instance.ApiClient.GetLocalTrailersAsync(App.Instance.CurrentUser.Id, Item.Id);
  47. }
  48. catch (HttpException)
  49. {
  50. App.Instance.ShowDefaultErrorMessage();
  51. return;
  52. }
  53. var resultItems = result ?? new BaseItemDto[] { };
  54. const int height = 297;
  55. var aspectRatio = DtoBaseItemViewModel.GetAveragePrimaryImageAspectRatio(resultItems);
  56. var width = aspectRatio == 0 ? 528 : height * aspectRatio;
  57. if (Item.TrailerUrls != null)
  58. {
  59. //resultItems.AddRange(Item.TrailerUrls.Select(i => UIKernel.Instance.PlaybackManager.GetPlayableItem(new Uri(i), "Trailer")));
  60. }
  61. lstItems.ItemsSource = resultItems.Select(i => new SpecialFeatureViewModel
  62. {
  63. Item = i,
  64. ImageHeight = height,
  65. ImageWidth = width
  66. }).ToList();
  67. }
  68. }
  69. }