diff --git a/src/BD.WTTS.Client.Avalonia/Converters/StringFormatConverter.cs b/src/BD.WTTS.Client.Avalonia/Converters/StringFormatConverter.cs
index abe1e9778..e83912e95 100644
--- a/src/BD.WTTS.Client.Avalonia/Converters/StringFormatConverter.cs
+++ b/src/BD.WTTS.Client.Avalonia/Converters/StringFormatConverter.cs
@@ -40,7 +40,7 @@ public sealed class StringFormatConverter : IValueConverter, IMultiValueConverte
var res = Strings.ResourceManager.GetString(para, Strings.Culture);
if (!string.IsNullOrEmpty(res))
return res.Format(str);
- return para.Format(str);
+ return str.Format(para);
}
else
{
diff --git a/src/BD.WTTS.Client.Avalonia/UI/Styling/Controls/AppItem.axaml b/src/BD.WTTS.Client.Avalonia/UI/Styling/Controls/AppItem.axaml
index c5538b11a..205007435 100644
--- a/src/BD.WTTS.Client.Avalonia/UI/Styling/Controls/AppItem.axaml
+++ b/src/BD.WTTS.Client.Avalonia/UI/Styling/Controls/AppItem.axaml
@@ -123,10 +123,10 @@
BorderBrush="{DynamicResource ControlFillColorDefaultBrush}"
ClipToBounds="True"
CornerRadius="{StaticResource ControlCornerRadius}">
-
@@ -270,7 +270,12 @@
Converter={StaticResource IsNullConverter},
ConverterParameter=invert}">
-
+
-
diff --git a/src/BD.WTTS.Client.Avalonia/UI/Styling/Controls/PageBase.axaml b/src/BD.WTTS.Client.Avalonia/UI/Styling/Controls/PageBase.axaml
index de0d300f2..31a9312bb 100644
--- a/src/BD.WTTS.Client.Avalonia/UI/Styling/Controls/PageBase.axaml
+++ b/src/BD.WTTS.Client.Avalonia/UI/Styling/Controls/PageBase.axaml
@@ -216,7 +216,8 @@
diff --git a/src/BD.WTTS.Client.Avalonia/UI/Views/Controls/AppItem.cs b/src/BD.WTTS.Client.Avalonia/UI/Views/Controls/AppItem.cs
index bdfcdbdb6..252e5bacc 100644
--- a/src/BD.WTTS.Client.Avalonia/UI/Views/Controls/AppItem.cs
+++ b/src/BD.WTTS.Client.Avalonia/UI/Views/Controls/AppItem.cs
@@ -12,8 +12,8 @@ public class AppItem : TemplatedControl
public static readonly StyledProperty DescriptionProperty =
AvaloniaProperty.Register(nameof(Description));
- public static readonly StyledProperty StatusProperty =
- AvaloniaProperty.Register(nameof(Status));
+ public static readonly StyledProperty
diff --git a/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.Operate.cs b/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.Operate.cs
index 0b8ccbafe..ee0e179bc 100644
--- a/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.Operate.cs
+++ b/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.Operate.cs
@@ -260,19 +260,17 @@ partial class ProxyService
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public bool OnStartedShowToastReturnProxyStatus()
{
- string? text;
bool proxyStatus;
if (string.IsNullOrWhiteSpace(Error))
{
- text = Strings.CommunityFix_StartProxySuccess;
+ Toast.Show(ToastIcon.Success, Strings.CommunityFix_StartProxySuccess);
proxyStatus = true;
}
else
{
- text = Error;
+ Toast.Show(ToastIcon.Error, Error);
proxyStatus = false;
}
- Toast.Show(text);
return proxyStatus;
}
@@ -282,7 +280,7 @@ partial class ProxyService
bool proxyStatus = default;
if (!string.IsNullOrWhiteSpace(Error))
{
- Toast.Show(Error);
+ Toast.Show(ToastIcon.Error, Error);
proxyStatus = true;
}
return proxyStatus;
diff --git a/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.cs b/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.cs
index 34215bc86..bab0dca9e 100644
--- a/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.cs
+++ b/src/BD.WTTS.Client.Plugins.Accelerator/Services/Mvvm/ProxyService.cs
@@ -239,7 +239,7 @@ public sealed partial class ProxyService
{
if (ProxySettings.SupportProxyServicesStatus.Value.Contains(item.Id.ToString()))
{
- item.Checked = true;
+ item.ThreeStateEnable = true;
}
}
}
@@ -249,13 +249,13 @@ public sealed partial class ProxyService
LoadOrSaveLocalAccelerate();
- if (IsLoadImage && ProxyDomains.Items.Any_Nullable())
- {
- foreach (var item in ProxyDomains.Items)
- {
- //item.ImageStream = ImageChannelType.AccelerateGroup.GetImageAsync(ImageUrlHelper.GetImageApiUrlById(item.ImageId));
- }
- }
+ //if (IsLoadImage && ProxyDomains.Items.Any_Nullable())
+ //{
+ // foreach (var item in ProxyDomains.Items)
+ // {
+ // item.ImageStream = ImageChannelType.AccelerateGroup.GetImageAsync(ImageUrlHelper.GetImageApiUrlById(item.ImageId));
+ // }
+ //}
this.WhenAnyValue(v => v.ProxyDomainsList)
.Subscribe(domain => domain?
diff --git a/src/BD.WTTS.Client.Plugins.Accelerator/UI/Views/Pages/AcceleratorPage.axaml b/src/BD.WTTS.Client.Plugins.Accelerator/UI/Views/Pages/AcceleratorPage.axaml
index c92c35237..89a7230b6 100644
--- a/src/BD.WTTS.Client.Plugins.Accelerator/UI/Views/Pages/AcceleratorPage.axaml
+++ b/src/BD.WTTS.Client.Plugins.Accelerator/UI/Views/Pages/AcceleratorPage.axaml
@@ -281,7 +281,7 @@
-
+
diff --git a/src/BD.WTTS.Client.Plugins.GameAccount/UI/ViewModels/GameAccountPageViewModel.props.cs b/src/BD.WTTS.Client.Plugins.GameAccount/UI/ViewModels/GameAccountPageViewModel.props.cs
index 708b712ea..c61f8d9c6 100644
--- a/src/BD.WTTS.Client.Plugins.GameAccount/UI/ViewModels/GameAccountPageViewModel.props.cs
+++ b/src/BD.WTTS.Client.Plugins.GameAccount/UI/ViewModels/GameAccountPageViewModel.props.cs
@@ -4,7 +4,7 @@ namespace BD.WTTS.UI.ViewModels;
public sealed partial class GameAccountPageViewModel : TabItemViewModel
{
- readonly Uri PlatformsPath = new("avares://BD.WTTS.Client.Plugins.GameAccount/UI/Assets/Platforms.json");
+ readonly static Uri PlatformsPath = new("avares://BD.WTTS.Client.Plugins.GameAccount/UI/Assets/Platforms.json");
public override string Name => Strings.Welcome;
diff --git a/src/BD.WTTS.Client.Plugins.GameAccount/UI/Views/Controls/AccountItems.axaml b/src/BD.WTTS.Client.Plugins.GameAccount/UI/Views/Controls/AccountItems.axaml
index 42472b816..94a6f22ad 100644
--- a/src/BD.WTTS.Client.Plugins.GameAccount/UI/Views/Controls/AccountItems.axaml
+++ b/src/BD.WTTS.Client.Plugins.GameAccount/UI/Views/Controls/AccountItems.axaml
@@ -35,7 +35,9 @@
MaxWidth="128"
Classes="Vertical"
Description="{Binding LastLoginTime}"
- Status="最近登录">
+ Status="{ReflectionBinding Path=Res.UserChange_RecentLogin,
+ Mode=OneWay,
+ Source={x:Static s:ResourceService.Current}}">
-
+
diff --git a/src/BD.WTTS.Client.Plugins.GameAccount/UI/Views/Pages/GameAccountPage.axaml b/src/BD.WTTS.Client.Plugins.GameAccount/UI/Views/Pages/GameAccountPage.axaml
index 00dc27c55..166065f06 100644
--- a/src/BD.WTTS.Client.Plugins.GameAccount/UI/Views/Pages/GameAccountPage.axaml
+++ b/src/BD.WTTS.Client.Plugins.GameAccount/UI/Views/Pages/GameAccountPage.axaml
@@ -92,7 +92,7 @@
Width="16"
Height="16"
HorizontalAlignment="Left">
-
+
var cancel = !File.Exists(ViewModel.SelectedPlatform.PlatformSetting?.PlatformPath);
if (cancel)
{
- Toast.Show($"{ViewModel.SelectedPlatform.FullName} 平台路径没有正确选择");
+ Toast.Show(ToastIcon.Error, $"{ViewModel.SelectedPlatform.FullName} 平台路径没有正确选择");
}
return cancel;
});
@@ -56,14 +56,14 @@ public partial class GameAccountPage : PageBase
var cancel = !File.Exists(platform.PlatformSetting?.PlatformPath);
if (cancel)
{
- Toast.Show($"{platform.FullName} 平台路径没有正确选择");
+ Toast.Show(ToastIcon.Error, $"{platform.FullName} 平台路径没有正确选择");
}
return cancel;
}))
{
if (!File.Exists(platform.PlatformSetting?.PlatformPath))
{
- Toast.Show($"路径没有正确选择,{platform.FullName} 平台账号切换功能无法使用");
+ Toast.Show(ToastIcon.Error, $"路径没有正确选择,{platform.FullName} 平台账号切换功能无法使用");
}
}
}
diff --git a/src/BD.WTTS.Client.Plugins.GameList/UI/Views/Pages/GameListPage.axaml b/src/BD.WTTS.Client.Plugins.GameList/UI/Views/Pages/GameListPage.axaml
index 4135995da..0e7798df3 100644
--- a/src/BD.WTTS.Client.Plugins.GameList/UI/Views/Pages/GameListPage.axaml
+++ b/src/BD.WTTS.Client.Plugins.GameList/UI/Views/Pages/GameListPage.axaml
@@ -158,7 +158,7 @@
+ /// 查找类似 已找到 {0} 个应用 的本地化字符串。
+ ///
+ public static string GameList_FindAppsText {
+ get {
+ return ResourceManager.GetString("GameList_FindAppsText", resourceCulture);
+ }
+ }
+
///
/// 查找类似 全部选中 的本地化字符串。
///
diff --git a/src/BD.WTTS.Client/Resources/Strings.resx b/src/BD.WTTS.Client/Resources/Strings.resx
index a1c960c9c..d8d3a8dee 100644
--- a/src/BD.WTTS.Client/Resources/Strings.resx
+++ b/src/BD.WTTS.Client/Resources/Strings.resx
@@ -2448,5 +2448,8 @@ AAAAA-BBBBB-CCCC3
插件商店
+
+
+ 已找到 {0} 个应用
\ No newline at end of file
diff --git a/src/BD.WTTS.Client/Services/Mvvm/Identity/UserService.cs b/src/BD.WTTS.Client/Services/Mvvm/Identity/UserService.cs
index 52c1a8971..61acdc816 100644
--- a/src/BD.WTTS.Client/Services/Mvvm/Identity/UserService.cs
+++ b/src/BD.WTTS.Client/Services/Mvvm/Identity/UserService.cs
@@ -15,6 +15,32 @@ public sealed class UserService : ReactiveObject
readonly ISteamworksWebApiService steamworksWebApiService = ISteamworksWebApiService.Instance;
readonly IWindowManager windowManager = IWindowManager.Instance;
+ [Reactive]
+ public IdentityUserInfoDTO? User { get; set; }
+
+ ///
+ /// 指示当前用户是否已通过身份验证(已登录)
+ ///
+ public bool IsAuthenticated => User != null;
+
+ [Reactive]
+ public SteamUser? CurrentSteamUser { get; set; }
+
+ [Reactive]
+ public object? AvatarPath { get; set; }
+
+ ///
+ /// 当前登录用户是否有手机号码
+ ///
+ [Reactive]
+ public bool HasPhoneNumber { get; set; }
+
+ ///
+ /// 用于 UI 显示的当前登录用户的手机号码(隐藏中间四位)
+ ///
+ [Reactive]
+ public string PhoneNumber { get; set; } = string.Empty;
+
public async void ShowWindow()
{
var cUser = await userManager.GetCurrentUserAsync();
@@ -102,25 +128,6 @@ public sealed class UserService : ReactiveObject
await userManager.SignOutAsync();
}
- [Reactive]
- public IdentityUserInfoDTO? User { get; set; }
-
- ///
- /// 指示当前用户是否已通过身份验证(已登录)
- ///
- public bool IsAuthenticated => User != null;
-
- [Reactive]
- public SteamUser? CurrentSteamUser { get; set; }
-
- object? _AvatarPath;
-
- public object? AvatarPath
- {
- get => _AvatarPath;
- set => this.RaiseAndSetIfChanged(ref _AvatarPath, value);
- }
-
private UserService()
{
mCurrent = this;
@@ -143,23 +150,6 @@ public sealed class UserService : ReactiveObject
await RefreshUserAsync();
}
- [Reactive]
- ///
- /// 当前登录用户是否有手机号码
- ///
- public bool HasPhoneNumber { get; set; }
-
- string _PhoneNumber = string.Empty;
-
- ///
- /// 用于 UI 显示的当前登录用户的手机号码(隐藏中间四位)
- ///
- public string PhoneNumber
- {
- get => _PhoneNumber;
- set => this.RaiseAndSetIfChanged(ref _PhoneNumber, value);
- }
-
static string GetCurrentUserPhoneNumber(CurrentUser? user, bool notHideMiddleFour = false)
{
var phone_number = user?.PhoneNumber;