fix User Avater

This commit is contained in:
Aigio Liu
2021-04-27 16:53:31 +08:00
parent f6bf278471
commit 2ae473a020
2 changed files with 157 additions and 156 deletions
@@ -15,165 +15,165 @@
FontFamily="{Binding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
x:DataType="vm:MainWindowViewModel"
x:CompileBindings="True">
<Panel>
<!--Background-->
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder IsHitTestVisible="False" DockPanel.Dock="Left" Width="240">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.80" TintOpacity="1" BackgroundSource="None" PlatformTransparencyCompensationLevel="0.5"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder IsHitTestVisible="False">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.80" TintOpacity="1" BackgroundSource="None" PlatformTransparencyCompensationLevel="0.5"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
<Panel>
<!--Background-->
<DockPanel HorizontalAlignment="Stretch">
<ExperimentalAcrylicBorder IsHitTestVisible="False" DockPanel.Dock="Left" Width="240">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource BackgroundColorKey}" MaterialOpacity="0.80" TintOpacity="1" BackgroundSource="None" PlatformTransparencyCompensationLevel="0.5"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
<ExperimentalAcrylicBorder IsHitTestVisible="False">
<ExperimentalAcrylicBorder.Material>
<ExperimentalAcrylicMaterial TintColor="{DynamicResource ThemeColorKey}" MaterialOpacity="0.80" TintOpacity="1" BackgroundSource="None" PlatformTransparencyCompensationLevel="0.5"/>
</ExperimentalAcrylicBorder.Material>
</ExperimentalAcrylicBorder>
</DockPanel>
<!--Title-->
<Grid ColumnDefinitions="240,*,Auto" ZIndex="0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Height="110" VerticalAlignment="Top">
<Image Source="/Application/UI/Assets/Icon.ico" Height="64" Width="64" VerticalAlignment="Center" Margin="-8,0,0,0"/>
<Label Content="{ReflectionBinding Path=Title}" Foreground="{DynamicResource HighlightForegroundBrushKey}" VerticalContentAlignment="Center" FontSize="20" Margin="8,0,0,0"/>
</StackPanel>
<TextBlock IsHitTestVisible="False" Grid.Column="1" Text="{ReflectionBinding SelectedItem.Name}" Foreground="{DynamicResource HighlightForegroundBrushKey}" Padding="15 8 0 0" FontSize="28"/>
<StackPanel Grid.Column="2" x:Name="titleMenu" Orientation="Horizontal" VerticalAlignment="Top">
<!--<Menu Items="{Binding SelectedItem.MenuItems}" IsVisible="{Binding !SelectedItem.MenuItems,Converter={StaticResource IsNullConverter}}" Classes="BindMenu">
<!--Title-->
<Grid ColumnDefinitions="240,*,Auto" ZIndex="0">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Height="110" VerticalAlignment="Top">
<Image Source="/Application/UI/Assets/Icon.ico" Height="64" Width="64" VerticalAlignment="Center" Margin="-8,0,0,0"/>
<Label Content="{ReflectionBinding Path=Title}" Foreground="{DynamicResource HighlightForegroundBrushKey}" VerticalContentAlignment="Center" FontSize="20" Margin="8,0,0,0"/>
</StackPanel>
<TextBlock IsHitTestVisible="False" Grid.Column="1" Text="{ReflectionBinding SelectedItem.Name}" Foreground="{DynamicResource HighlightForegroundBrushKey}" Padding="15 8 0 0" FontSize="28"/>
<StackPanel Grid.Column="2" x:Name="titleMenu" Orientation="Horizontal" VerticalAlignment="Top">
<!--<Menu Items="{Binding SelectedItem.MenuItems}" IsVisible="{Binding !SelectedItem.MenuItems,Converter={StaticResource IsNullConverter}}" Classes="BindMenu">
</Menu>-->
<Menu Classes="BindMenu">
<MenuItem Items="{Binding SelectedItem.MenuItems}" Classes="BindItem"
IsVisible="{Binding !SelectedItem.MenuItems,Converter={StaticResource IsNullConverter}}">
<MenuItem.Header>
<PathIcon Data="{StaticResource SettingsDrawing}" Width="14"></PathIcon>
</MenuItem.Header>
</MenuItem>
<Menu Classes="BindMenu">
<MenuItem Items="{Binding SelectedItem.MenuItems}" Classes="BindItem"
IsVisible="{Binding !SelectedItem.MenuItems,Converter={StaticResource IsNullConverter}}">
<MenuItem.Header>
<PathIcon Data="{StaticResource SettingsDrawing}" Width="14"></PathIcon>
</MenuItem.Header>
</MenuItem>
<MenuItem x:Name="userBtn" Command="{Binding OpenUserMenu}">
<MenuItem.Header>
<Image
Source="{ReflectionBinding Path=AvaterPath, Source={x:Static service:UserService.Current},Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter},ConverterParameter=20}"
Stretch="Uniform"
Height="20"
Width="20">
<!--<Image.Clip>
<MenuItem x:Name="userBtn" Command="{Binding OpenUserMenu}">
<MenuItem.Header>
<Image
Source="{ReflectionBinding Path=AvaterPath, Source={x:Static service:UserService.Current},Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter},ConverterParameter=20}"
Stretch="Uniform"
Height="20"
Width="20">
<!--<Image.Clip>
<EllipseGeometry Rect="0,0,20,20" />
</Image.Clip>-->
</Image>
</MenuItem.Header>
</MenuItem>
</Menu>
<Popup IsOpen="{Binding IsOpenUserMenu,Mode=TwoWay, FallbackValue=False}"
StaysOpen="False" Width="300"
PlacementTarget="userBtn"
HorizontalOffset="-250"
IsLightDismissEnabled="True">
<Border Background="{DynamicResource ThemeBrushKey}"
HorizontalAlignment="Stretch"
CornerRadius="{DynamicResource OverlayCornerRadius}">
<StackPanel>
<Panel Width="200" Margin="5">
<StackPanel Spacing="8">
<Image Source="{ReflectionBinding Path=User, Source={x:Static service:UserService.Current}}, Converter={StaticResource UserAvatarValueConverter}}" Height="100" Width="100" HorizontalAlignment="Center">
<Image.Clip>
<EllipseGeometry Rect="0,0,100,100" />
</Image.Clip>
</Image>
<Button
Content="{ReflectionBinding Path=User.NickName,Source={x:Static service:UserService.Current}}"
FontSize="16"
HorizontalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"></Button>
</StackPanel>
</Panel>
<ListBox SelectionMode="Single" Background="{DynamicResource ThemeBrushKey}">
<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.UserProfile,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="UserProfile"></Button>
</ListBoxItem>
<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.User_ChangePhoneNum,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="ChangeBindPhoneNumber"></Button>
</ListBoxItem>
<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.DelAccount,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="ChangeBindPhoneNumber"></Button>
</ListBoxItem>
<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.SignOut,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=SignOut,Source={x:Static service:UserService.Current}}"></Button>
</ListBoxItem>
</ListBox>
</StackPanel>
</Border>
</Popup>
</Image>
</MenuItem.Header>
</MenuItem>
</Menu>
<Popup IsOpen="{Binding IsOpenUserMenu,Mode=TwoWay, FallbackValue=False}"
StaysOpen="False" Width="300"
PlacementTarget="userBtn"
HorizontalOffset="-250"
IsLightDismissEnabled="True">
<Border Background="{DynamicResource ThemeBrushKey}"
HorizontalAlignment="Stretch"
CornerRadius="{DynamicResource OverlayCornerRadius}">
<StackPanel>
<Panel Width="200" Margin="5">
<StackPanel Spacing="8">
<Image Source="{ReflectionBinding Path=AvaterPath, Source={x:Static service:UserService.Current},Mode=OneWay,Converter={StaticResource BitmapAssetValueConverter},ConverterParameter=100}" Height="100" Width="100" HorizontalAlignment="Center">
<Image.Clip>
<EllipseGeometry Rect="0,0,100,100" />
</Image.Clip>
</Image>
<TextBlock
Text="{ReflectionBinding Path=User.NickName,Source={x:Static service:UserService.Current}}"
FontSize="16"
HorizontalAlignment="Center"
Foreground="{DynamicResource HighlightForegroundBrushKey}"></TextBlock>
</StackPanel>
</Panel>
<ListBox SelectionMode="Single" Background="{DynamicResource ThemeBrushKey}">
<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.UserProfile,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="UserProfile"></Button>
</ListBoxItem>
<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.User_ChangePhoneNum,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="ChangeBindPhoneNumber"></Button>
</ListBoxItem>
<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.DelAccount,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=ShowWindow,Source={x:Static service:UserService.Current}}"
CommandParameter="ChangeBindPhoneNumber"></Button>
</ListBoxItem>
<ListBoxItem>
<Button
Classes="CodeButton"
Content="{ReflectionBinding Path=Res.SignOut,Mode=OneWay,Source={x:Static resx:R.Current}}"
Command="{ReflectionBinding Path=SignOut,Source={x:Static service:UserService.Current}}"></Button>
</ListBoxItem>
</ListBox>
</StackPanel>
</Grid>
</Border>
</Popup>
</StackPanel>
</Grid>
<!--Content-->
<TabControl
Items="{Binding TabItems}"
SelectedItem="{Binding SelectedItem}"
Margin="0 25 0 0"
Classes="NavBar">
<TabControl.DataTemplates>
<DataTemplate DataType="vm:DebugWebViewPageViewModel">
<pages:DebugWebViewPage/>
</DataTemplate>
<DataTemplate DataType="vm:ProxyScriptManagePageViewModel">
<pages:ProxyScriptManagePage/>
</DataTemplate>
<DataTemplate DataType="vm:DebugPageViewModel">
<pages:DebugPage/>
</DataTemplate>
<DataTemplate DataType="vm:AboutPageViewModel">
<pages:AboutPage/>
</DataTemplate>
<DataTemplate DataType="vm:SettingsPageViewModel">
<pages:SettingsPage/>
</DataTemplate>
<DataTemplate DataType="vm:StartPageViewModel">
<pages:StartPage/>
</DataTemplate>
<DataTemplate DataType="vm:SteamAccountPageViewModel">
<pages:SteamAccountPage/>
</DataTemplate>
<DataTemplate DataType="vm:GameListPageViewModel">
<pages:GameListPage/>
</DataTemplate>
<DataTemplate DataType="vm:CommunityProxyPageViewModel">
<pages:CommunityProxyPage/>
</DataTemplate>
<DataTemplate DataType="vm:LocalAuthPageViewModel">
<pages:LocalAuthPage/>
</DataTemplate>
</TabControl.DataTemplates>
<TabControl.ItemTemplate>
<DataTemplate>
<DockPanel>
<PathIcon Data="{Binding IconKey,Converter={StaticResource DrawingKeyValueConverter}}"
Width="18" Height="18"
HorizontalAlignment="Left"
Margin="0 0 10 0"></PathIcon>
<controls:ScrollingTextBlock
Text="{Binding Name}"
FontSize="14"
FontWeight="Regular"></controls:ScrollingTextBlock>
</DockPanel>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
<!--Toast-->
<controls:ToastMessage />
</Panel>
<!--Content-->
<TabControl
Items="{Binding TabItems}"
SelectedItem="{Binding SelectedItem}"
Margin="0 25 0 0"
Classes="NavBar">
<TabControl.DataTemplates>
<DataTemplate DataType="vm:DebugWebViewPageViewModel">
<pages:DebugWebViewPage/>
</DataTemplate>
<DataTemplate DataType="vm:ProxyScriptManagePageViewModel">
<pages:ProxyScriptManagePage/>
</DataTemplate>
<DataTemplate DataType="vm:DebugPageViewModel">
<pages:DebugPage/>
</DataTemplate>
<DataTemplate DataType="vm:AboutPageViewModel">
<pages:AboutPage/>
</DataTemplate>
<DataTemplate DataType="vm:SettingsPageViewModel">
<pages:SettingsPage/>
</DataTemplate>
<DataTemplate DataType="vm:StartPageViewModel">
<pages:StartPage/>
</DataTemplate>
<DataTemplate DataType="vm:SteamAccountPageViewModel">
<pages:SteamAccountPage/>
</DataTemplate>
<DataTemplate DataType="vm:GameListPageViewModel">
<pages:GameListPage/>
</DataTemplate>
<DataTemplate DataType="vm:CommunityProxyPageViewModel">
<pages:CommunityProxyPage/>
</DataTemplate>
<DataTemplate DataType="vm:LocalAuthPageViewModel">
<pages:LocalAuthPage/>
</DataTemplate>
</TabControl.DataTemplates>
<TabControl.ItemTemplate>
<DataTemplate>
<DockPanel>
<PathIcon Data="{Binding IconKey,Converter={StaticResource DrawingKeyValueConverter}}"
Width="18" Height="18"
HorizontalAlignment="Left"
Margin="0 0 10 0"></PathIcon>
<controls:ScrollingTextBlock
Text="{Binding Name}"
FontSize="14"
FontWeight="Regular"></controls:ScrollingTextBlock>
</DockPanel>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
<!--Toast-->
<controls:ToastMessage />
</Panel>
</UserControl>
@@ -54,6 +54,7 @@ namespace System.Application.Services
static string GetAvaterPath(UserInfoDTO? user)
{
string? value = null;
if (user is UserInfoDTO userInfo && userInfo.SteamAccountId.HasValue)
{
// Steam Avatar
@@ -62,9 +63,9 @@ namespace System.Application.Services
if (user is IUserDTO user2 && user2.Avatar.HasValue)
{
// Guid Avatar
return ImageUrlHelper.GetImageApiUrlById(user2.Avatar.Value);
value = ImageUrlHelper.GetImageApiUrlById(user2.Avatar.Value);
}
return DefaultAvaterPath;
return value ?? DefaultAvaterPath;
}
const string DefaultAvaterPath = "avares://System.Application.SteamTools.Client.Desktop.Avalonia/Application/UI/Assets/AppResources/avater_default.png";