From 752f0bbcb564ddb19f60521bb466f4d157c8485d Mon Sep 17 00:00:00 2001 From: rmbgame Date: Wed, 3 Mar 2021 18:26:20 +0800 Subject: [PATCH] fix --- .../Converters/BitmapAssetValueConverter.cs | 57 ++++++++++++++++++ .../Converters/StringToBitmapConverter.cs | 28 --------- .../Models/SteamUser.cs | 60 +------------------ 3 files changed, 59 insertions(+), 86 deletions(-) create mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/Converters/BitmapAssetValueConverter.cs delete mode 100644 System.Application.SteamTools.Client.Desktop.Avalonia/Application/Converters/StringToBitmapConverter.cs diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/Converters/BitmapAssetValueConverter.cs b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/Converters/BitmapAssetValueConverter.cs new file mode 100644 index 000000000..dbba1d481 --- /dev/null +++ b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/Converters/BitmapAssetValueConverter.cs @@ -0,0 +1,57 @@ +using System.Application.Services; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using Avalonia; +using Avalonia.Data.Converters; +using Avalonia.Media; +using Avalonia.Media.Imaging; +using Avalonia.Platform; + +namespace System.Application.Converters +{ + public class BitmapAssetValueConverter : IValueConverter + { + public static BitmapAssetValueConverter Instance = new BitmapAssetValueConverter(); + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) + return null; + + if (value is string rawUri && targetType == typeof(IBitmap)) + { + Uri uri; + + // Allow for assembly overrides + if (rawUri.StartsWith("avares://")) + { + uri = new Uri(rawUri); + } + else if (rawUri.StartsWith("http://") || rawUri.StartsWith("https://")) + { + //网络请求 + + } + else + { + string assemblyName = Assembly.GetEntryAssembly().GetName().Name; + uri = new Uri($"avares://{assemblyName}{rawUri}"); + } + + var assets = AvaloniaLocator.Current.GetService(); + var asset = assets.Open(uri); + + return new Bitmap(asset); + } + throw new NotSupportedException(); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } + } +} \ No newline at end of file diff --git a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/Converters/StringToBitmapConverter.cs b/System.Application.SteamTools.Client.Desktop.Avalonia/Application/Converters/StringToBitmapConverter.cs deleted file mode 100644 index cd50657a5..000000000 --- a/System.Application.SteamTools.Client.Desktop.Avalonia/Application/Converters/StringToBitmapConverter.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Application.Services; -using System.Globalization; -using System.Linq; -using Avalonia; -using Avalonia.Data.Converters; -using Avalonia.Media; - - -namespace System.Application.Converters -{ - public class StringToBitmapConverter : IValueConverter - { - public object? Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - if (value is string s) - { - DI.Get(). - } - - return null; - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - throw new NotImplementedException(); - } - } -} \ No newline at end of file diff --git a/System.Application.SteamTools.Client.Desktop/Models/SteamUser.cs b/System.Application.SteamTools.Client.Desktop/Models/SteamUser.cs index 26123e315..e211caa2b 100644 --- a/System.Application.SteamTools.Client.Desktop/Models/SteamUser.cs +++ b/System.Application.SteamTools.Client.Desktop/Models/SteamUser.cs @@ -5,7 +5,7 @@ using static System.Application.SteamApiUrls; namespace System.Application.Models { [XmlRoot("profile")] - public class SteamUser : ISteamUserAvatar + public class SteamUser { public SteamUser() { @@ -49,15 +49,12 @@ namespace System.Application.Models public string? PrivacyState { get; set; } [XmlElement("avatarIcon")] - [Obsolete("use GetAvatarIcon()", true)] public string? AvatarIcon { get; set; } [XmlElement("avatarMedium")] - [Obsolete("use GetAvatarMedium()", true)] - public string? AvatarMedium { get; set; } /*= "/Resources/Asstes/avater.jpg";*/ + public string? AvatarMedium { get; set; } [XmlElement("avatarFull")] - [Obsolete("use GetAvatarFull()", true)] public string? AvatarFull { get; set; } /// @@ -139,57 +136,4 @@ namespace System.Application.Models "\t\t\"SkipOfflineModeWarning\"\t\t\"" + Convert.ToByte(SkipOfflineModeWarning) + "\"\n" + "\t\t\"Timestamp\"\t\t\"" + Timestamp + "\"\n}"; } - - internal interface ISteamUserAvatar - { - public const string DefaultAvatar = "/Resources/Asstes/avater.jpg"; - - /// - /// 头像小图标 - /// - string? AvatarIcon { get; set; } - - /// - /// 头像中等图片链接 - /// - string? AvatarMedium { get; set; } - - /// - /// 头像大图链接 - /// - string? AvatarFull { get; set; } - } -} - -namespace System -{ - public static class SteamUserAvatarExtensions - { - static ISteamUserAvatar GetAvatar(this SteamUser user) - { - ISteamUserAvatar user_ = user; - return user_; - } - - /// - /// 获取头像小图标 - /// - /// - /// - public static string GetAvatarIcon(this SteamUser user) => user.GetAvatar().AvatarIcon ?? ISteamUserAvatar.DefaultAvatar; - - /// - /// 获取头像中等图片链接 - /// - /// - /// - public static string GetAvatarMedium(this SteamUser user) => user.GetAvatar().AvatarMedium ?? ISteamUserAvatar.DefaultAvatar; - - /// - /// 获取头像大图链接 - /// - /// - /// - public static string GetAvatarFull(this SteamUser user) => user.GetAvatar().AvatarFull ?? ISteamUserAvatar.DefaultAvatar; - } } \ No newline at end of file