ItemSpecialFeatures.xaml.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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 ItemSpecialFeatures.xaml
  14. /// </summary>
  15. public partial class ItemSpecialFeatures : BaseDetailsControl
  16. {
  17. /// <summary>
  18. /// Initializes a new instance of the <see cref="ItemSpecialFeatures" /> class.
  19. /// </summary>
  20. public ItemSpecialFeatures()
  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.GetSpecialFeaturesAsync(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. lstItems.ItemsSource = resultItems.Select(i => new SpecialFeatureViewModel
  58. {
  59. Item = i,
  60. ImageHeight = height,
  61. ImageWidth = width
  62. }).ToList();
  63. }
  64. }
  65. }