aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.UI/Converters
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.UI/Converters')
-rw-r--r--MediaBrowser.UI/Converters/BaseItemImageVisibilityConverter.cs75
-rw-r--r--MediaBrowser.UI/Converters/CurrentUserVisibilityConverter.cs52
-rw-r--r--MediaBrowser.UI/Converters/DateTimeToStringConverter.cs75
-rw-r--r--MediaBrowser.UI/Converters/LastSeenTextConverter.cs172
-rw-r--r--MediaBrowser.UI/Converters/MetroTileBackgroundConverter.cs51
-rw-r--r--MediaBrowser.UI/Converters/UserImageConverter.cs157
-rw-r--r--MediaBrowser.UI/Converters/WatchedVisibilityConverter.cs117
-rw-r--r--MediaBrowser.UI/Converters/WeatherTemperatureConverter.cs62
8 files changed, 524 insertions, 237 deletions
diff --git a/MediaBrowser.UI/Converters/BaseItemImageVisibilityConverter.cs b/MediaBrowser.UI/Converters/BaseItemImageVisibilityConverter.cs
new file mode 100644
index 0000000000..55a90a0b80
--- /dev/null
+++ b/MediaBrowser.UI/Converters/BaseItemImageVisibilityConverter.cs
@@ -0,0 +1,75 @@
+using MediaBrowser.Model.DTO;
+using MediaBrowser.Model.Entities;
+using System;
+using System.Windows;
+using System.Windows.Data;
+
+namespace MediaBrowser.UI.Converters
+{
+ /// <summary>
+ /// Class BaseItemImageVisibilityConverter
+ /// </summary>
+ class BaseItemImageVisibilityConverter : IValueConverter
+ {
+ /// <summary>
+ /// Converts a value.
+ /// </summary>
+ /// <param name="value">The value produced by the binding source.</param>
+ /// <param name="targetType">The type of the binding target property.</param>
+ /// <param name="parameter">The converter parameter to use.</param>
+ /// <param name="culture">The culture to use in the converter.</param>
+ /// <returns>A converted value. If the method returns null, the valid null value is used.</returns>
+ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ var item = value as DtoBaseItem;
+
+ if (item != null)
+ {
+ var paramString = parameter as string;
+
+ var vals = paramString.Split(',');
+
+ var imageType = (ImageType)Enum.Parse(typeof(ImageType), vals[0], true);
+ bool reverse = vals.Length > 1 && vals[1].Equals("reverse", StringComparison.OrdinalIgnoreCase);
+
+ return GetVisibility(item, imageType, reverse);
+ }
+
+ return Visibility.Collapsed;
+ }
+
+ /// <summary>
+ /// Gets the visibility.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="type">The type.</param>
+ /// <param name="reverse">if set to <c>true</c> [reverse].</param>
+ /// <returns>Visibility.</returns>
+ private Visibility GetVisibility(DtoBaseItem item, ImageType type, bool reverse)
+ {
+ var hasImageVisibility = reverse ? Visibility.Collapsed : Visibility.Visible;
+ var hasNoImageVisibility = reverse ? Visibility.Visible : Visibility.Collapsed;
+
+ if (type == ImageType.Logo)
+ {
+ return item.HasLogo || !string.IsNullOrEmpty(item.ParentLogoItemId) ? hasImageVisibility : hasNoImageVisibility;
+ }
+
+ return item.HasPrimaryImage ? hasImageVisibility : hasNoImageVisibility;
+ }
+
+ /// <summary>
+ /// Converts a value.
+ /// </summary>
+ /// <param name="value">The value that is produced by the binding target.</param>
+ /// <param name="targetType">The type to convert to.</param>
+ /// <param name="parameter">The converter parameter to use.</param>
+ /// <param name="culture">The culture to use in the converter.</param>
+ /// <returns>A converted value. If the method returns null, the valid null value is used.</returns>
+ /// <exception cref="System.NotImplementedException"></exception>
+ public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/MediaBrowser.UI/Converters/CurrentUserVisibilityConverter.cs b/MediaBrowser.UI/Converters/CurrentUserVisibilityConverter.cs
index a5dd5013b4..c7853ea9c6 100644
--- a/MediaBrowser.UI/Converters/CurrentUserVisibilityConverter.cs
+++ b/MediaBrowser.UI/Converters/CurrentUserVisibilityConverter.cs
@@ -1,26 +1,26 @@
-using System;
-using System.Globalization;
-using System.Windows;
-using System.Windows.Data;
-
-namespace MediaBrowser.UI.Converters
-{
- public class CurrentUserVisibilityConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- if (App.Instance.ServerConfiguration == null || !App.Instance.ServerConfiguration.EnableUserProfiles)
- {
- return Visibility.Collapsed;
- }
-
- return value == null ? Visibility.Collapsed : Visibility.Visible;
- }
-
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
-}
+using System;
+using System.Globalization;
+using System.Windows;
+using System.Windows.Data;
+
+namespace MediaBrowser.UI.Converters
+{
+ public class CurrentUserVisibilityConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (App.Instance.ServerConfiguration == null)
+ {
+ return Visibility.Collapsed;
+ }
+
+ return value == null ? Visibility.Collapsed : Visibility.Visible;
+ }
+
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/MediaBrowser.UI/Converters/DateTimeToStringConverter.cs b/MediaBrowser.UI/Converters/DateTimeToStringConverter.cs
index 6c568c0612..f0c93e7d5b 100644
--- a/MediaBrowser.UI/Converters/DateTimeToStringConverter.cs
+++ b/MediaBrowser.UI/Converters/DateTimeToStringConverter.cs
@@ -1,34 +1,41 @@
-using System;
-using System.Globalization;
-using System.Windows.Data;
-
-namespace MediaBrowser.UI.Converters
-{
- public class DateTimeToStringConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var date = (DateTime)value;
-
- string format = parameter as string;
-
- if (string.IsNullOrEmpty(format))
- {
- return date.ToString();
- }
-
- if (format.Equals("shorttime", StringComparison.OrdinalIgnoreCase))
- {
- return date.ToShortTimeString();
- }
-
- return date.ToString(format);
- }
-
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
-}
+using System;
+using System.Globalization;
+using System.Windows.Data;
+
+namespace MediaBrowser.UI.Converters
+{
+ public class DateTimeToStringConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var date = (DateTime)value;
+
+ string format = parameter as string;
+
+ if (string.IsNullOrEmpty(format))
+ {
+ return date.ToString();
+ }
+
+ // If a theme asks for this, they know it's only going to work if the current culture is en-us
+ if (format.Equals("timesuffixlower", StringComparison.OrdinalIgnoreCase))
+ {
+ if (CultureInfo.CurrentCulture.Name.Equals("en-US", StringComparison.OrdinalIgnoreCase))
+ {
+ var time = date.ToString("t");
+ var values = time.Split(' ');
+ return values[values.Length - 1].ToLower();
+ }
+ return string.Empty;
+ }
+
+ return date.ToString(format);
+ }
+
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/MediaBrowser.UI/Converters/LastSeenTextConverter.cs b/MediaBrowser.UI/Converters/LastSeenTextConverter.cs
index 7462602100..d8056a1e20 100644
--- a/MediaBrowser.UI/Converters/LastSeenTextConverter.cs
+++ b/MediaBrowser.UI/Converters/LastSeenTextConverter.cs
@@ -1,86 +1,86 @@
-using MediaBrowser.Model.DTO;
-using System;
-using System.Globalization;
-using System.Windows.Data;
-
-namespace MediaBrowser.UI.Converters
-{
- public class LastSeenTextConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var user = value as DtoUser;
-
- if (user != null)
- {
- if (user.LastActivityDate.HasValue)
- {
- DateTime date = user.LastActivityDate.Value.ToLocalTime();
-
- return "Last seen " + GetRelativeTimeText(date);
- }
- }
-
- return null;
- }
-
- private static string GetRelativeTimeText(DateTime date)
- {
- TimeSpan ts = DateTime.Now - date;
-
- const int second = 1;
- const int minute = 60 * second;
- const int hour = 60 * minute;
- const int day = 24 * hour;
- const int month = 30 * day;
-
- int delta = System.Convert.ToInt32(ts.TotalSeconds);
-
- if (delta < 0)
- {
- return "not yet";
- }
- if (delta < 1 * minute)
- {
- return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";
- }
- if (delta < 2 * minute)
- {
- return "a minute ago";
- }
- if (delta < 45 * minute)
- {
- return ts.Minutes + " minutes ago";
- }
- if (delta < 90 * minute)
- {
- return "an hour ago";
- }
- if (delta < 24 * hour)
- {
- return ts.Hours + " hours ago";
- }
- if (delta < 48 * hour)
- {
- return "yesterday";
- }
- if (delta < 30 * day)
- {
- return ts.Days + " days ago";
- }
- if (delta < 12 * month)
- {
- int months = System.Convert.ToInt32(Math.Floor((double)ts.Days / 30));
- return months <= 1 ? "one month ago" : months + " months ago";
- }
-
- int years = System.Convert.ToInt32(Math.Floor((double)ts.Days / 365));
- return years <= 1 ? "one year ago" : years + " years ago";
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
-}
+using MediaBrowser.Model.DTO;
+using System;
+using System.Globalization;
+using System.Windows.Data;
+
+namespace MediaBrowser.UI.Converters
+{
+ public class LastSeenTextConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var user = value as DtoUser;
+
+ if (user != null)
+ {
+ if (user.LastActivityDate.HasValue)
+ {
+ DateTime date = user.LastActivityDate.Value.ToLocalTime();
+
+ return "Last seen " + GetRelativeTimeText(date);
+ }
+ }
+
+ return null;
+ }
+
+ private static string GetRelativeTimeText(DateTime date)
+ {
+ TimeSpan ts = DateTime.Now - date;
+
+ const int second = 1;
+ const int minute = 60 * second;
+ const int hour = 60 * minute;
+ const int day = 24 * hour;
+ const int month = 30 * day;
+
+ int delta = System.Convert.ToInt32(ts.TotalSeconds);
+
+ if (delta < 0)
+ {
+ return "not yet";
+ }
+ if (delta < 1 * minute)
+ {
+ return ts.Seconds == 1 ? "one second ago" : ts.Seconds + " seconds ago";
+ }
+ if (delta < 2 * minute)
+ {
+ return "a minute ago";
+ }
+ if (delta < 45 * minute)
+ {
+ return ts.Minutes + " minutes ago";
+ }
+ if (delta < 90 * minute)
+ {
+ return "an hour ago";
+ }
+ if (delta < 24 * hour)
+ {
+ return ts.Hours == 1 ? "an hour ago" : ts.Hours + " hours ago";
+ }
+ if (delta < 48 * hour)
+ {
+ return "yesterday";
+ }
+ if (delta < 30 * day)
+ {
+ return ts.Days + " days ago";
+ }
+ if (delta < 12 * month)
+ {
+ int months = System.Convert.ToInt32(Math.Floor((double)ts.Days / 30));
+ return months <= 1 ? "one month ago" : months + " months ago";
+ }
+
+ int years = System.Convert.ToInt32(Math.Floor((double)ts.Days / 365));
+ return years <= 1 ? "one year ago" : years + " years ago";
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/MediaBrowser.UI/Converters/MetroTileBackgroundConverter.cs b/MediaBrowser.UI/Converters/MetroTileBackgroundConverter.cs
new file mode 100644
index 0000000000..6279711e2a
--- /dev/null
+++ b/MediaBrowser.UI/Converters/MetroTileBackgroundConverter.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Globalization;
+using System.Windows.Data;
+using System.Windows.Media;
+
+namespace MediaBrowser.UI.Converters
+{
+ /// <summary>
+ /// Generates a random metro-friendly background color
+ /// </summary>
+ public class MetroTileBackgroundConverter : IValueConverter
+ {
+ private static readonly Brush[] TileColors = new Brush[] {
+ new SolidColorBrush(Color.FromRgb((byte)111,(byte)189,(byte)69)),
+ new SolidColorBrush(Color.FromRgb((byte)75,(byte)179,(byte)221)),
+ new SolidColorBrush(Color.FromRgb((byte)65,(byte)100,(byte)165)),
+ new SolidColorBrush(Color.FromRgb((byte)225,(byte)32,(byte)38)),
+ new SolidColorBrush(Color.FromRgb((byte)128,(byte)0,(byte)128)),
+ new SolidColorBrush(Color.FromRgb((byte)0,(byte)128,(byte)64)),
+ new SolidColorBrush(Color.FromRgb((byte)0,(byte)148,(byte)255)),
+ new SolidColorBrush(Color.FromRgb((byte)255,(byte)0,(byte)199)),
+ new SolidColorBrush(Color.FromRgb((byte)255,(byte)135,(byte)15)),
+ new SolidColorBrush(Color.FromRgb((byte)127,(byte)0,(byte)55))
+
+ };
+
+ private static int _currentIndex = new Random(DateTime.Now.Millisecond).Next(0, TileColors.Length);
+
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ return GetRandomBackground();
+ }
+
+ public static Brush GetRandomBackground()
+ {
+ int index;
+
+ lock (TileColors)
+ {
+ index = (_currentIndex++) % TileColors.Length;
+ }
+
+ return TileColors[index++];
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new System.NotImplementedException();
+ }
+ }
+}
diff --git a/MediaBrowser.UI/Converters/UserImageConverter.cs b/MediaBrowser.UI/Converters/UserImageConverter.cs
index a9ef4b8620..9101c5c46b 100644
--- a/MediaBrowser.UI/Converters/UserImageConverter.cs
+++ b/MediaBrowser.UI/Converters/UserImageConverter.cs
@@ -1,60 +1,97 @@
-using MediaBrowser.Model.DTO;
-using MediaBrowser.UI.Controller;
-using System;
-using System.Globalization;
-using System.Net.Cache;
-using System.Windows.Data;
-using System.Windows.Media.Imaging;
-
-namespace MediaBrowser.UI.Converters
-{
- public class UserImageConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var user = value as DtoUser;
-
- if (user != null && user.HasImage)
- {
- var config = parameter as string;
-
- int? maxWidth = null;
- int? maxHeight = null;
- int? width = null;
- int? height = null;
-
- if (!string.IsNullOrEmpty(config))
- {
- var vals = config.Split(',');
-
- width = GetSize(vals[0]);
- height = GetSize(vals[1]);
- maxWidth = GetSize(vals[2]);
- maxHeight = GetSize(vals[3]);
- }
-
- var uri = UIKernel.Instance.ApiClient.GetUserImageUrl(user.Id, width, height, maxWidth, maxHeight, 100);
-
- return new BitmapImage(new Uri(uri), new RequestCachePolicy(RequestCacheLevel.Revalidate));
- }
-
- return null;
- }
-
- private int? GetSize(string val)
- {
- if (string.IsNullOrEmpty(val) || val == "0")
- {
- return null;
- }
-
- return int.Parse(val);
- }
-
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
-}
+using MediaBrowser.Model.DTO;
+using MediaBrowser.Model.Net;
+using System;
+using System.Globalization;
+using System.Windows.Data;
+
+namespace MediaBrowser.UI.Converters
+{
+ /// <summary>
+ /// Class UserImageConverter
+ /// </summary>
+ public class UserImageConverter : IValueConverter
+ {
+ /// <summary>
+ /// Converts a value.
+ /// </summary>
+ /// <param name="value">The value produced by the binding source.</param>
+ /// <param name="targetType">The type of the binding target property.</param>
+ /// <param name="parameter">The converter parameter to use.</param>
+ /// <param name="culture">The culture to use in the converter.</param>
+ /// <returns>A converted value. If the method returns null, the valid null value is used.</returns>
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var user = value as DtoUser;
+
+ if (user != null && user.HasPrimaryImage)
+ {
+ var config = parameter as string;
+
+ int? maxWidth = null;
+ int? maxHeight = null;
+ int? width = null;
+ int? height = null;
+
+ if (!string.IsNullOrEmpty(config))
+ {
+ var vals = config.Split(',');
+
+ width = GetSize(vals[0]);
+ height = GetSize(vals[1]);
+ maxWidth = GetSize(vals[2]);
+ maxHeight = GetSize(vals[3]);
+ }
+
+ var uri = App.Instance.ApiClient.GetUserImageUrl(user, new ImageOptions
+ {
+ Width = width,
+ Height = height,
+ MaxWidth = maxWidth,
+ MaxHeight = maxHeight,
+ Quality = 100
+ });
+
+ try
+ {
+ return App.Instance.GetRemoteBitmapAsync(uri).Result;
+ }
+ catch (HttpException)
+ {
+
+ }
+ }
+
+ return null;
+ }
+
+ /// <summary>
+ /// Gets the size.
+ /// </summary>
+ /// <param name="val">The val.</param>
+ /// <returns>System.Nullable{System.Int32}.</returns>
+ private int? GetSize(string val)
+ {
+ if (string.IsNullOrEmpty(val) || val == "0")
+ {
+ return null;
+ }
+
+ return int.Parse(val);
+ }
+
+
+ /// <summary>
+ /// Converts a value.
+ /// </summary>
+ /// <param name="value">The value that is produced by the binding target.</param>
+ /// <param name="targetType">The type to convert to.</param>
+ /// <param name="parameter">The converter parameter to use.</param>
+ /// <param name="culture">The culture to use in the converter.</param>
+ /// <returns>A converted value. If the method returns null, the valid null value is used.</returns>
+ /// <exception cref="System.NotImplementedException"></exception>
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/MediaBrowser.UI/Converters/WatchedVisibilityConverter.cs b/MediaBrowser.UI/Converters/WatchedVisibilityConverter.cs
new file mode 100644
index 0000000000..485386ae91
--- /dev/null
+++ b/MediaBrowser.UI/Converters/WatchedVisibilityConverter.cs
@@ -0,0 +1,117 @@
+using MediaBrowser.Model.DTO;
+using System;
+using System.Globalization;
+using System.Windows;
+using System.Windows.Data;
+
+namespace MediaBrowser.UI.Converters
+{
+ public class WatchedVisibilityConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var item = value as DtoBaseItem;
+
+ if (item == null)
+ {
+ return null;
+ }
+
+ if (item.IsFolder)
+ {
+ return item.PlayedPercentage.HasValue && item.PlayedPercentage.Value == 100 ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ if (item.UserData == null)
+ {
+ return Visibility.Collapsed;
+ }
+
+ return item.UserData.PlayCount == 0 ? Visibility.Collapsed : Visibility.Visible;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public class FavoriteVisibilityConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var item = value as DtoBaseItem;
+
+ if (item == null)
+ {
+ return null;
+ }
+
+ if (item.UserData == null)
+ {
+ return Visibility.Collapsed;
+ }
+
+ return item.UserData.IsFavorite ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public class LikeVisibilityConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var item = value as DtoBaseItem;
+
+ if (item == null)
+ {
+ return null;
+ }
+
+ if (item.UserData == null)
+ {
+ return Visibility.Collapsed;
+ }
+
+ var userdata = item.UserData;
+
+ return userdata.Likes.HasValue && userdata.Likes.Value && !userdata.IsFavorite ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ public class DislikeVisibilityConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var item = value as DtoBaseItem;
+
+ if (item == null)
+ {
+ return null;
+ }
+
+ if (item.UserData == null)
+ {
+ return Visibility.Collapsed;
+ }
+
+ var userdata = item.UserData;
+
+ return userdata.Likes.HasValue && !userdata.Likes.Value && !userdata.IsFavorite ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
diff --git a/MediaBrowser.UI/Converters/WeatherTemperatureConverter.cs b/MediaBrowser.UI/Converters/WeatherTemperatureConverter.cs
index cab4c595ca..c297df4f0a 100644
--- a/MediaBrowser.UI/Converters/WeatherTemperatureConverter.cs
+++ b/MediaBrowser.UI/Converters/WeatherTemperatureConverter.cs
@@ -1,31 +1,31 @@
-using MediaBrowser.Model.Weather;
-using System;
-using System.Globalization;
-using System.Windows.Data;
-
-namespace MediaBrowser.UI.Converters
-{
- public class WeatherTemperatureConverter : IValueConverter
- {
- public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
- {
- var weather = value as WeatherInfo;
-
- if (weather != null)
- {
- if (App.Instance.ServerConfiguration.WeatherUnit == WeatherUnits.Celsius)
- {
- return weather.CurrentWeather.TemperatureCelsius + "°C";
- }
-
- return weather.CurrentWeather.TemperatureFahrenheit + "°F";
- }
- return null;
- }
-
- public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
- }
-}
+using MediaBrowser.Model.Weather;
+using System;
+using System.Globalization;
+using System.Windows.Data;
+
+namespace MediaBrowser.UI.Converters
+{
+ public class WeatherTemperatureConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var weather = value as WeatherInfo;
+
+ if (weather != null && weather.CurrentWeather != null)
+ {
+ if (App.Instance.ServerConfiguration.WeatherUnit == WeatherUnits.Celsius)
+ {
+ return weather.CurrentWeather.TemperatureCelsius + "°C";
+ }
+
+ return weather.CurrentWeather.TemperatureFahrenheit + "°F";
+ }
+ return null;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}