123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- using MediaBrowser.Model.Dto;
- using MediaBrowser.Model.Net;
- using MediaBrowser.UI.Controller;
- using MediaBrowser.UI.Playback;
- using System.Collections.Generic;
- using System.Threading.Tasks;
- namespace MediaBrowser.UI.Pages
- {
- /// <summary>
- /// Provides a base class for detail pages
- /// </summary>
- public abstract class BaseDetailPage : BasePage
- {
- /// <summary>
- /// The _item id
- /// </summary>
- private string _itemId;
- /// <summary>
- /// Gets or sets the id of the item being displayed
- /// </summary>
- /// <value>The item id.</value>
- protected string ItemId
- {
- get { return _itemId; }
- private set
- {
- _itemId = value;
- OnPropertyChanged("ItemId");
- }
- }
- /// <summary>
- /// The _item
- /// </summary>
- private BaseItemDto _item;
- /// <summary>
- /// Gets or sets the item.
- /// </summary>
- /// <value>The item.</value>
- public BaseItemDto Item
- {
- get { return _item; }
- set
- {
- _item = value;
- OnPropertyChanged("Item");
- OnItemChanged();
- }
- }
- /// <summary>
- /// Gets a value indicating whether this instance can resume.
- /// </summary>
- /// <value><c>true</c> if this instance can resume; otherwise, <c>false</c>.</value>
- protected bool CanResume
- {
- get { return Item.CanResume; }
- }
- /// <summary>
- /// Gets a value indicating whether this instance can queue.
- /// </summary>
- /// <value><c>true</c> if this instance can queue; otherwise, <c>false</c>.</value>
- protected bool CanQueue
- {
- get { return true; }
- }
- /// <summary>
- /// Gets a value indicating whether this instance can play trailer.
- /// </summary>
- /// <value><c>true</c> if this instance can play trailer; otherwise, <c>false</c>.</value>
- protected bool CanPlayTrailer
- {
- get { return Item.HasTrailer; }
- }
- /// <summary>
- /// Initializes a new instance of the <see cref="BaseDetailPage" /> class.
- /// </summary>
- /// <param name="itemId">The item id.</param>
- protected BaseDetailPage(string itemId)
- : base()
- {
- ItemId = itemId;
- }
- /// <summary>
- /// Called when [property changed].
- /// </summary>
- /// <param name="name">The name.</param>
- public async override void OnPropertyChanged(string name)
- {
- base.OnPropertyChanged(name);
- // Reload the item when the itemId changes
- if (name.Equals("ItemId"))
- {
- await ReloadItem();
- }
- }
- /// <summary>
- /// Reloads the item.
- /// </summary>
- /// <returns>Task.</returns>
- private async Task ReloadItem()
- {
- try
- {
- Item = await App.Instance.ApiClient.GetItemAsync(ItemId, App.Instance.CurrentUser.Id);
- }
- catch (HttpException)
- {
- App.Instance.ShowDefaultErrorMessage();
- }
- }
- /// <summary>
- /// Called when [item changed].
- /// </summary>
- protected virtual void OnItemChanged()
- {
- SetBackdrops(Item);
- }
- /// <summary>
- /// Plays this instance.
- /// </summary>
- public async void Play()
- {
- await UIKernel.Instance.PlaybackManager.Play(new PlayOptions
- {
- Items = new List<BaseItemDto> { Item }
- });
- }
- /// <summary>
- /// Resumes this instance.
- /// </summary>
- public async void Resume()
- {
- await UIKernel.Instance.PlaybackManager.Play(new PlayOptions
- {
- Items = new List<BaseItemDto> { Item },
- Resume = true
- });
- }
- /// <summary>
- /// Queues this instance.
- /// </summary>
- public void Queue()
- {
- }
- }
- }
|