diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-20 20:33:05 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-20 20:33:05 -0500 |
| commit | 767cdc1f6f6a63ce997fc9476911e2c361f9d402 (patch) | |
| tree | 49add55976f895441167c66cfa95e5c7688d18ce /MediaBrowser.Plugins.DefaultTheme/Controls/HomePageTile.xaml.cs | |
| parent | 845554722efaed872948a9e0f7202e3ef52f1b6e (diff) | |
Pushing missing changes
Diffstat (limited to 'MediaBrowser.Plugins.DefaultTheme/Controls/HomePageTile.xaml.cs')
| -rw-r--r-- | MediaBrowser.Plugins.DefaultTheme/Controls/HomePageTile.xaml.cs | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/MediaBrowser.Plugins.DefaultTheme/Controls/HomePageTile.xaml.cs b/MediaBrowser.Plugins.DefaultTheme/Controls/HomePageTile.xaml.cs new file mode 100644 index 000000000..a8e238681 --- /dev/null +++ b/MediaBrowser.Plugins.DefaultTheme/Controls/HomePageTile.xaml.cs @@ -0,0 +1,128 @@ +using MediaBrowser.Model.DTO; +using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Net; +using MediaBrowser.UI; +using MediaBrowser.UI.Controls; +using MediaBrowser.UI.ViewModels; +using System; +using System.Windows; + +namespace MediaBrowser.Plugins.DefaultTheme.Controls +{ + /// <summary> + /// Interaction logic for BaseItemTile.xaml + /// </summary> + public partial class HomePageTile : BaseUserControl + { + /// <summary> + /// Gets the view model. + /// </summary> + /// <value>The view model.</value> + public DtoBaseItemViewModel ViewModel + { + get { return DataContext as DtoBaseItemViewModel; } + } + + /// <summary> + /// Gets the item. + /// </summary> + /// <value>The item.</value> + private DtoBaseItem Item + { + get { return ViewModel.Item; } + } + + /// <summary> + /// Initializes a new instance of the <see cref="HomePageTile" /> class. + /// </summary> + public HomePageTile() + { + InitializeComponent(); + + DataContextChanged += BaseItemTile_DataContextChanged; + } + + /// <summary> + /// Handles the DataContextChanged event of the BaseItemTile control. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="DependencyPropertyChangedEventArgs" /> instance containing the event data.</param> + void BaseItemTile_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) + { + OnItemChanged(); + } + + /// <summary> + /// Called when [item changed]. + /// </summary> + private void OnItemChanged() + { + ReloadImage(); + } + + /// <summary> + /// Reloads the image. + /// </summary> + private void ReloadImage() + { + if (Item.HasPrimaryImage) + { + var url = App.Instance.ApiClient.GetImageUrl(Item, new ImageOptions + { + ImageType = ImageType.Primary, + Height = 225 + }); + + SetImage(url); + } + else if (Item.BackdropCount > 0) + { + var url = App.Instance.ApiClient.GetImageUrl(Item, new ImageOptions + { + ImageType = ImageType.Backdrop, + Height = 225, + Width = 400 + }); + + SetImage(url); + } + else if (Item.HasThumb) + { + var url = App.Instance.ApiClient.GetImageUrl(Item, new ImageOptions + { + ImageType = ImageType.Thumb, + Height = 225, + Width = 400 + }); + + SetImage(url); + } + else + { + SetDefaultImage(); + } + } + + /// <summary> + /// Sets the image. + /// </summary> + /// <param name="url">The URL.</param> + private async void SetImage(string url) + { + try + { + image.Source = await App.Instance.GetRemoteBitmapAsync(url); + } + catch (HttpException) + { + SetDefaultImage(); + } + } + + private void SetDefaultImage() + { + var imageUri = new Uri("../Resources/Images/VideoDefault.png", UriKind.Relative); + image.Source = App.Instance.GetBitmapImage(imageUri); + } + } +} |
