Add Badge Control

This commit is contained in:
RMBGAME
2021-11-21 06:48:34 +08:00
parent ce476ce858
commit 6bc4d64d81
6 changed files with 400 additions and 339 deletions
@@ -5,12 +5,24 @@
xmlns:ui="using:FluentAvalonia.UI.Controls">
<Design.PreviewWith>
<Border Padding="40">
<controls:Badge Background="#3CB371" Text="Test">
<controls:Badge.Icon>
<ui:SymbolIcon Symbol="Games" />
</controls:Badge.Icon>
<TextBlock Text="Hello World!" />
</controls:Badge>
<StackPanel Spacing="10">
<controls:Badge Background="#3CB371" Text="Test">
<controls:Badge.Icon>
<ui:SymbolIcon Symbol="Checkmark" />
</controls:Badge.Icon>
<TextBlock Text="Hello World!" />
</controls:Badge>
<controls:Badge Background="#3CB371" Text="Test">
<TextBlock Text="Hello World!" />
</controls:Badge>
<controls:Badge Background="#3CB371" Text="Test">
<controls:Badge.Icon>
<ui:SymbolIcon Symbol="Globe" />
</controls:Badge.Icon>
</controls:Badge>
</StackPanel>
</Border>
</Design.PreviewWith>
@@ -20,14 +32,21 @@
<Setter Property="ClipToBounds" Value="False" />
<Setter Property="Height" Value="26" />
<Setter Property="FontSize" Value="12" />
<Setter Property="Padding" Value="8 4" />
<Setter Property="Padding" Value="0 4 8 4 " />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Template">
<ControlTemplate>
<Border>
<DockPanel Background="Transparent" ClipToBounds="False">
<Border Padding="{TemplateBinding Padding}" Background="#555555">
<DockPanel VerticalAlignment="Center">
<Border Name="IconColumn" Height="24">
<Border
Name="IconColumn"
Height="24"
Margin="8,0,0,0"
IsVisible="{TemplateBinding Icon,
Converter={StaticResource IsNullConverter},
ConverterParameter=invert}">
<Viewbox
Name="IconBox"
HorizontalAlignment="Center"
@@ -37,7 +56,7 @@
</Border>
<ContentPresenter
Name="ContentPresenter"
Margin="5,0,0,0"
Margin="8,0,0,0"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
@@ -47,7 +66,10 @@
</DockPanel>
</Border>
<Border Padding="{TemplateBinding Padding}" Background="{TemplateBinding Background}">
<TextBlock VerticalAlignment="Center" Text="{TemplateBinding Text}" />
<TextBlock
Margin="8,0,0,0"
VerticalAlignment="Center"
Text="{TemplateBinding Text}" />
</Border>
</DockPanel>
</Border>
@@ -26,6 +26,8 @@
VerticalScrollBarVisibility="Auto">
<Grid RowDefinitions="Auto,Auto">
<TextBox x:Name="LogTextbox"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
FontFamily="{Binding Source={x:Static ms:UISettings.FontName},Path=Value, Mode=OneWay,Converter={StaticResource NameToFontFamilyConverter}}"
IsVisible="False"
Classes="readonlybox"
@@ -45,7 +47,9 @@
TextWrapping="WrapWithOverflow"
VerticalAlignment="Center">
</TextBox>-->
<AutoCompleteBox x:Name="CommandTextbox"
<AutoCompleteBox x:Name="CommandTextbox"
ScrollViewer.VerticalScrollBarVisibility="Disabled"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Items="{ReflectionBinding Path=Value,Source={x:Static models:ArchiSteamFarmCommand.Commands}}"
x:DataType="models:ArchiSteamFarmCommand"
FilterMode="StartsWithOrdinal"
@@ -96,7 +100,7 @@
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
</Style>
<Style Selector="AutoCompleteBox /template/ Popup#PART_Popup">
<Setter Property="MaxWidth" Value="{ReflectionBinding Bounds.Width, RelativeSource={RelativeSource TemplatedParent}}"/>
</Style>
@@ -293,7 +293,7 @@
</controls:Badge.Icon>
</controls:Badge>
<controls:Badge Background="#3CB371"
<controls:Badge Background="#007EC6"
Text="{Binding CardsFarmer.CardsRemaining}"
ToolTip.Tip="{ReflectionBinding Path=Res.ASF_CardsRemaining,Mode=OneWay,Source={x:Static resx:R.Current}}">
<controls:Badge.Icon>
@@ -301,7 +301,7 @@
</controls:Badge.Icon>
</controls:Badge>
<controls:Badge Background="#3CB371"
<controls:Badge Background="#8C45AB"
ToolTip.Tip="{ReflectionBinding Path=Res.ASF_TimeRemaining,Mode=OneWay,Source={x:Static resx:R.Current}}"
Text="{Binding CardsFarmer.TimeRemaining,StringFormat= {}{0:hh\\:mm\\:ss}}">
<controls:Badge.Icon>
@@ -101,7 +101,7 @@
<Border Classes="paper"
Margin="10 0 10 10"
Padding="10"
Padding="0 10"
Background="{DynamicResource ThemeBrushKey}">
<TabControl Classes="flat">
<!--<TabItem Header="ASF 运行状态">
@@ -17,367 +17,401 @@
x:CompileBindings="True"
x:DataType="vm:SteamAccountPageViewModel"
mc:Ignorable="d">
<DockPanel>
<Border
Margin="{StaticResource ScrollMargin}"
Padding="10"
Background="{DynamicResource ThemeBrushKey}"
Classes="paper"
DockPanel.Dock="Top">
<ui:CommandBar DefaultLabelPosition="Right" IsSticky="False">
<ui:CommandBar.PrimaryCommands>
<ui:CommandBarButton
Command="{Binding LoginAccountCommand}"
Icon="Add"
Label="{ReflectionBinding Path=Res.UserChange_LoginNewAccount,
<DockPanel>
<Border
Margin="{StaticResource ScrollMargin}"
Padding="10"
Background="{DynamicResource ThemeBrushKey}"
Classes="paper"
DockPanel.Dock="Top">
<ui:CommandBar DefaultLabelPosition="Right" IsSticky="False">
<ui:CommandBar.PrimaryCommands>
<ui:CommandBarButton
Command="{Binding LoginAccountCommand}"
Icon="Add"
Label="{ReflectionBinding Path=Res.UserChange_LoginNewAccount,
Mode=OneWay,
Source={x:Static resx:R.Current}}" />
<ui:CommandBarButton
Command="{Binding RefreshCommand}"
Icon="Refresh"
Label="{ReflectionBinding Path=Res.Refresh,
<ui:CommandBarButton
Command="{Binding RefreshCommand}"
Icon="Refresh"
Label="{ReflectionBinding Path=Res.Refresh,
Mode=OneWay,
Source={x:Static resx:R.Current}}" />
<ui:CommandBarSeparator />
<ui:CommandBarButton Command="{Binding ShareManageCommand}" Label="{ReflectionBinding Path=Res.AccountChange_Title, Mode=OneWay, Source={x:Static resx:R.Current}}">
<ui:CommandBarButton.Icon>
<ui:PathIcon Data="{StaticResource ChannelShareDrawing}" />
</ui:CommandBarButton.Icon>
</ui:CommandBarButton>
</ui:CommandBar.PrimaryCommands>
<!--<ui:CommandBar.SecondaryCommands>
<ui:CommandBarSeparator />
<ui:CommandBarButton Command="{Binding ShareManageCommand}" Label="{ReflectionBinding Path=Res.AccountChange_Title, Mode=OneWay, Source={x:Static resx:R.Current}}">
<ui:CommandBarButton.Icon>
<ui:PathIcon Data="{StaticResource ChannelShareDrawing}" />
</ui:CommandBarButton.Icon>
</ui:CommandBarButton>
</ui:CommandBar.PrimaryCommands>
<!--<ui:CommandBar.SecondaryCommands>
<ui:CommandBarButton Icon="Help"
Label="{ReflectionBinding Path=Res.Helper,Mode=OneWay,Source={x:Static resx:R.Current}}"/>
</ui:CommandBar.SecondaryCommands>-->
</ui:CommandBar>
</Border>
</ui:CommandBar>
</Border>
<Panel HorizontalAlignment="Stretch" DockPanel.Dock="Bottom">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsUserEmpty}"
Text="{ReflectionBinding Path=Res.UserChange_NoUserTip,
<Panel HorizontalAlignment="Stretch" DockPanel.Dock="Bottom">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsUserEmpty}"
Text="{ReflectionBinding Path=Res.UserChange_NoUserTip,
Mode=OneWay,
Source={x:Static resx:R.Current}}"
TextWrapping="WrapWithOverflow" />
<ScrollViewer
Padding="0,0,0,10"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<ItemsRepeater Items="{CompiledBinding SteamUsers}">
<ItemsRepeater.Layout>
<!--<UniformGridLayout ItemsJustification="SpaceEvenly" MinRowSpacing="20" Orientation="Horizontal"
TextWrapping="WrapWithOverflow" />
<ScrollViewer
Padding="0,0,0,10"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<ItemsRepeater Items="{CompiledBinding SteamUsers}">
<ItemsRepeater.Layout>
<!--<UniformGridLayout ItemsJustification="SpaceEvenly" MinRowSpacing="20" Orientation="Horizontal"
MaximumRowsOrColumns="6" />-->
<StackLayout Orientation="Vertical" Spacing="10" />
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate>
<Border
x:Name="card"
Margin="10,0"
Background="{DynamicResource ThemeBrushKey}"
Classes="paper">
<!--<Border.Background>
<StackLayout Orientation="Vertical" Spacing="10" />
</ItemsRepeater.Layout>
<ItemsRepeater.ItemTemplate>
<DataTemplate>
<Border
x:Name="card"
Margin="10,0"
Background="{DynamicResource ThemeBrushKey}"
Classes="paper">
<!--<Border.Background>
<SolidColorBrush Color="{DynamicResource ThemeColorKey}"
Opacity="{ReflectionBinding Value,Source={x:Static ms:UISettings.AcrylicOpacity},Mode=OneWay}"/>
</Border.Background>-->
<Border.ContextMenu>
<ContextMenu>
<MenuItem
Command="{ReflectionBinding #u.DataContext.SteamId_Click}"
CommandParameter="{Binding}"
Header="{ReflectionBinding Path=Res.UserChange_BtnText,
<Border.ContextMenu>
<ContextMenu>
<MenuItem
Command="{ReflectionBinding #u.DataContext.SteamId_Click}"
CommandParameter="{Binding}"
Header="{ReflectionBinding Path=Res.UserChange_BtnText,
Mode=OneWay,
Source={x:Static resx:R.Current}}" />
<MenuItem
Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}"
CommandParameter="{Binding}"
Header="{ReflectionBinding Path=Res.UserChange_OfflineBtn,
<MenuItem
Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}"
CommandParameter="{Binding}"
Header="{ReflectionBinding Path=Res.UserChange_OfflineBtn,
Mode=OneWay,
Source={x:Static resx:R.Current}}" />
<MenuItem Header="-" />
<MenuItem
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
CommandParameter="{Binding}"
Header="{ReflectionBinding Path=Res.UserChange_DeleteUser,
<MenuItem Header="-" />
<MenuItem
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
CommandParameter="{Binding}"
Header="{ReflectionBinding Path=Res.UserChange_DeleteUser,
Mode=OneWay,
Source={x:Static resx:R.Current}}" />
</ContextMenu>
</Border.ContextMenu>
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="PointerEnter" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction
PropertyName="IsVisible"
TargetObject="{ReflectionBinding #delete_btn}"
Value="True" />
</ia:EventTriggerBehavior>
<ia:EventTriggerBehavior EventName="PointerLeave" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction
PropertyName="IsVisible"
TargetObject="{ReflectionBinding #delete_btn}"
Value="False" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</ContextMenu>
</Border.ContextMenu>
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="PointerEnter" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction
PropertyName="IsVisible"
TargetObject="{ReflectionBinding #delete_btn}"
Value="True" />
</ia:EventTriggerBehavior>
<ia:EventTriggerBehavior EventName="PointerLeave" SourceObject="{ReflectionBinding #card}">
<ia:ChangePropertyAction
PropertyName="IsVisible"
TargetObject="{ReflectionBinding #delete_btn}"
Value="False" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<Grid Height="184" ColumnDefinitions="Auto,*">
<Border ClipToBounds="True" CornerRadius="{StaticResource PaperRadiusLeft}">
<Panel
x:Name="avatar"
Cursor="Hand"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OpenUserUrl,
<Grid Height="184" ColumnDefinitions="Auto,*">
<Border ClipToBounds="True" CornerRadius="{StaticResource PaperRadiusLeft}">
<Panel
x:Name="avatar"
Cursor="Hand"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OpenUserUrl,
Mode=OneWay,
Source={x:Static resx:R.Current}}">
<!-- OpenUserProfileUrl -->
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #avatar}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.OpenUserProfileUrl}" CommandParameter="{Binding}" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<gif:Image2
Width="144"
AutoStart="true"
FallbackSource="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/AppResources/avatar.jpg"
Source="{Binding AvatarStream^}"
Stretch="Uniform" />
<gif:Image2
Width="184"
Height="184"
AutoStart="true"
IsVisible="{Binding MiniProfile.AvatarFrameStream^, Converter={StaticResource IsNullConverter}, ConverterParameter=invert}"
Source="{Binding MiniProfile.AvatarFrameStream^}"
Stretch="Uniform" />
</Panel>
</Border>
<Panel Grid.Column="1" Margin="10,0,0,0">
<StackPanel Margin="0,5,0,0">
<WrapPanel VerticalAlignment="Center">
<Ellipse
x:Name="circle"
Width="10"
Height="10"
Margin="5,0,12,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="#adadad"
StrokeThickness="0"
ToolTip.Tip="{Binding OnlineState}">
<i:Interaction.Behaviors>
<ia:DataTriggerBehavior
Binding="{Binding OnlineState}"
ComparisonCondition="Equal"
Value="online">
<ia:ChangePropertyAction
PropertyName="Fill"
TargetObject="{ReflectionBinding #circle}"
Value="#6AC3E7" />
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior
Binding="{Binding OnlineState}"
ComparisonCondition="Equal"
Value="in-game">
<ia:ChangePropertyAction
PropertyName="Fill"
TargetObject="{ReflectionBinding #circle}"
Value="#90BA3C" />
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior
Binding="{Binding OnlineState}"
ComparisonCondition="Equal"
Value="offline">
<ia:ChangePropertyAction
PropertyName="Fill"
TargetObject="{ReflectionBinding #circle}"
Value="#adadad" />
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>
</Ellipse>
<controls:ScrollingTextBlock
x:Name="nickname"
Cursor="Hand"
FontSize="24"
Foreground="{DynamicResource HighlightForegroundBrushKey}"
Text="{Binding SteamNickName}"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,
<!-- OpenUserProfileUrl -->
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #avatar}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.OpenUserProfileUrl}" CommandParameter="{Binding}" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
<gif:Image2
Width="144"
AutoStart="true"
FallbackSource="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/AppResources/avatar.jpg"
Source="{Binding AvatarStream^}"
Stretch="Uniform" />
<gif:Image2
Width="184"
Height="184"
AutoStart="true"
IsVisible="{Binding MiniProfile.AvatarFrameStream^, Converter={StaticResource IsNullConverter}, ConverterParameter=invert}"
Source="{Binding MiniProfile.AvatarFrameStream^}"
Stretch="Uniform" />
</Panel>
</Border>
<Panel Grid.Column="1" Margin="10,0,0,0">
<StackPanel Margin="0,5,0,0">
<WrapPanel VerticalAlignment="Center">
<Ellipse
x:Name="circle"
Width="10"
Height="10"
Margin="5,0,12,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="#adadad"
StrokeThickness="0"
ToolTip.Tip="{Binding OnlineState}">
<i:Interaction.Behaviors>
<ia:DataTriggerBehavior
Binding="{Binding OnlineState}"
ComparisonCondition="Equal"
Value="online">
<ia:ChangePropertyAction
PropertyName="Fill"
TargetObject="{ReflectionBinding #circle}"
Value="#6AC3E7" />
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior
Binding="{Binding OnlineState}"
ComparisonCondition="Equal"
Value="in-game">
<ia:ChangePropertyAction
PropertyName="Fill"
TargetObject="{ReflectionBinding #circle}"
Value="#90BA3C" />
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior
Binding="{Binding OnlineState}"
ComparisonCondition="Equal"
Value="offline">
<ia:ChangePropertyAction
PropertyName="Fill"
TargetObject="{ReflectionBinding #circle}"
Value="#adadad" />
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>
</Ellipse>
<controls:ScrollingTextBlock
x:Name="nickname"
Cursor="Hand"
FontSize="24"
Foreground="{DynamicResource HighlightForegroundBrushKey}"
Text="{Binding SteamNickName}"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,
Mode=OneWay,
Source={x:Static resx:R.Current}}">
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #nickname}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.SteamId_Click}" CommandParameter="{Binding}" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</controls:ScrollingTextBlock>
<TextBlock
Margin="5,0"
VerticalAlignment="Center"
Foreground="{DynamicResource InactiveForegroundBrushKey}"
Text="{Binding Remark, Mode=OneWay}" />
<Button
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Classes="plain"
Command="{ReflectionBinding #u.DataContext.EditRemarkAsync}"
CommandParameter="{Binding}"
Cursor="Hand"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_EditRemark,
<i:Interaction.Behaviors>
<ia:EventTriggerBehavior EventName="Tapped" SourceObject="{ReflectionBinding #nickname}">
<ia:InvokeCommandAction Command="{ReflectionBinding #u.DataContext.SteamId_Click}" CommandParameter="{Binding}" />
</ia:EventTriggerBehavior>
</i:Interaction.Behaviors>
</controls:ScrollingTextBlock>
<TextBlock
Margin="5,0"
VerticalAlignment="Center"
Foreground="{DynamicResource InactiveForegroundBrushKey}"
Text="{Binding Remark, Mode=OneWay}" />
<Button
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Classes="plain"
Command="{ReflectionBinding #u.DataContext.EditRemarkAsync}"
CommandParameter="{Binding}"
Cursor="Hand"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_EditRemark,
Mode=OneWay,
Source={x:Static resx:R.Current}}">
<PathIcon
Width="10"
Height="10"
Margin="0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Data="{StaticResource EditDrawing}"
Opacity="0.8" />
</Button>
</WrapPanel>
<PathIcon
Width="10"
Height="10"
Margin="0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Data="{StaticResource EditDrawing}"
Opacity="0.8" />
</Button>
</WrapPanel>
<WrapPanel Orientation="Horizontal">
<WrapPanel.Styles>
<Style Selector="TextBlock">
<Setter Property="FontSize" Value="16" />
<Setter Property="Foreground" Value="{DynamicResource InactiveForegroundBrushKey}" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</WrapPanel.Styles>
<TextBlock Text="{Binding AccountName}" />
<TextBlock Text="(" />
<TextBox
Padding="0"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Classes="readonlybox"
Foreground="{DynamicResource InactiveForegroundBrushKey}"
IsReadOnly="True"
Text="{Binding SteamId64, Mode=OneWay}" />
<TextBlock Text=")" />
</WrapPanel>
<WrapPanel Orientation="Horizontal">
<WrapPanel.Styles>
<Style Selector="TextBlock">
<Setter Property="FontSize" Value="16" />
<Setter Property="Foreground" Value="{DynamicResource InactiveForegroundBrushKey}" />
<Setter Property="VerticalAlignment" Value="Center" />
</Style>
</WrapPanel.Styles>
<TextBlock Text="{Binding AccountName}" />
<TextBlock Text="(" />
<TextBox
Padding="0"
VerticalAlignment="Center"
VerticalContentAlignment="Center"
Classes="readonlybox"
Foreground="{DynamicResource InactiveForegroundBrushKey}"
IsReadOnly="True"
Text="{Binding SteamId64, Mode=OneWay}" />
<TextBlock Text=")" />
</WrapPanel>
<Border>
<WrapPanel VerticalAlignment="Center">
<TextBlock
Margin="0,0,10,0"
VerticalAlignment="Center"
FontSize="18"
Text="{Binding MiniProfile.Level, StringFormat=Lv.{0}}" />
<Border>
<StackPanel Orientation="Horizontal"
Spacing="3"
VerticalAlignment="Center">
<StackPanel Spacing="3"
Orientation="Horizontal"
IsVisible="{Binding MiniProfile,Converter={StaticResource IsNullConverter},ConverterParameter=invert}">
<controls:Badge Background="#3CB371"
Text="{Binding MiniProfile.Level}"
Content="Level">
</controls:Badge>
<controls:Badge Background="#007EC6"
IsVisible="{Binding MiniProfile.InGame,Converter={StaticResource IsNullConverter},ConverterParameter=invert}"
Text="{Binding MiniProfile.InGame.Name}"
Content="{ReflectionBinding Path=Res.UserChange_InGame,Mode=OneWay,Source={x:Static resx:R.Current}}">
</controls:Badge>
</StackPanel>
<WrapPanel VerticalAlignment="Center" IsVisible="{Binding MiniProfile, Converter={StaticResource IsNullConverter}, ConverterParameter=invert}">
<TextBlock
Margin="5,0"
Foreground="#90BA3C"
IsVisible="{Binding MiniProfile.InGame, Converter={StaticResource IsNullConverter}, ConverterParameter=invert}"
Text="{ReflectionBinding Path=Res.UserChange_InGame,
Mode=OneWay,
Source={x:Static resx:R.Current}}" />
<TextBlock
VerticalAlignment="Center"
Foreground="#90BA3C"
Text="{Binding MiniProfile.InGame.Name}" />
</WrapPanel>
</WrapPanel>
</Border>
</StackPanel>
<controls:Badge Background="#512BD4"
IsVisible="{Binding RememberPassword}"
Text="{ReflectionBinding Path=Res.UserChange_RememberMe, Mode=OneWay, Source={x:Static resx:R.Current}}">
<controls:Badge.Icon>
<ui:SymbolIcon Symbol="Checkmark"/>
</controls:Badge.Icon>
</controls:Badge>
<DockPanel VerticalAlignment="Bottom">
<WrapPanel>
<PathIcon
Width="16"
Margin="5,0"
VerticalAlignment="Center"
Data="{StaticResource ClockDrawing}"
Foreground="{DynamicResource InactiveForegroundBrushKey}" />
<TextBlock
VerticalAlignment="Center"
FontSize="16"
Foreground="{DynamicResource InactiveForegroundBrushKey}"
Text="{Binding LastLoginTime, StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" />
</WrapPanel>
<controls:Badge Background="#FE7D37"
IsVisible="{Binding MostRecent}"
Text="{ReflectionBinding Path=Res.UserChange_RecentLogin, Mode=OneWay, Source={x:Static resx:R.Current}}">
<controls:Badge.Icon>
<ui:SymbolIcon Symbol="Checkmark"/>
</controls:Badge.Icon>
</controls:Badge>
</StackPanel>
</Border>
</StackPanel>
<WrapPanel HorizontalAlignment="Right" Orientation="Horizontal">
<Border
BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}"
BorderThickness=".66,.66,.66,0"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OfflineBtn,
<DockPanel VerticalAlignment="Bottom">
<WrapPanel>
<PathIcon
Width="16"
Margin="5,0"
VerticalAlignment="Center"
Data="{StaticResource ClockDrawing}"
Foreground="{DynamicResource InactiveForegroundBrushKey}" />
<TextBlock
VerticalAlignment="Center"
FontSize="16"
Foreground="{DynamicResource InactiveForegroundBrushKey}"
Text="{Binding LastLoginTime, StringFormat={}{0:yyyy-MM-dd HH:mm:ss}}" />
</WrapPanel>
<WrapPanel HorizontalAlignment="Right" Orientation="Horizontal">
<Border
BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}"
BorderThickness=".66,.66,.66,0"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_OfflineBtn,
Mode=OneWay,
Source={x:Static resx:R.Current}}">
<Button
MaxWidth="200"
HorizontalAlignment="Stretch"
Classes="flatbutton"
Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}"
CommandParameter="{Binding}"
Cursor="Hand">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_OfflineBtn, Mode=OneWay, Source={x:Static resx:R.Current}}" />
</Button>
</Border>
<Border
BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}"
BorderThickness="0,.66,0,0"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,
<Button
MaxWidth="200"
HorizontalAlignment="Stretch"
Classes="flatbutton"
Command="{ReflectionBinding #u.DataContext.OfflineModeButton_Click}"
CommandParameter="{Binding}"
Cursor="Hand">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_OfflineBtn, Mode=OneWay, Source={x:Static resx:R.Current}}" />
</Button>
</Border>
<Border
BorderBrush="{DynamicResource SemiactiveBackgroundBrushKey}"
BorderThickness="0,.66,0,0"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_BtnTootlip,
Mode=OneWay,
Source={x:Static resx:R.Current}}">
<Button
MaxWidth="250"
HorizontalAlignment="Stretch"
Classes="flatbutton"
Command="{ReflectionBinding #u.DataContext.SteamId_Click}"
CommandParameter="{Binding}"
Cursor="Hand">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_BtnText, Mode=OneWay, Source={x:Static resx:R.Current}}" />
</Button>
</Border>
</WrapPanel>
</DockPanel>
<Button
MaxWidth="250"
HorizontalAlignment="Stretch"
Classes="flatbutton"
Command="{ReflectionBinding #u.DataContext.SteamId_Click}"
CommandParameter="{Binding}"
Cursor="Hand">
<controls:ScrollingTextBlock Text="{ReflectionBinding Path=Res.UserChange_BtnText, Mode=OneWay, Source={x:Static resx:R.Current}}" />
</Button>
</Border>
</WrapPanel>
</DockPanel>
<Panel>
<Button
x:Name="delete_btn"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="Transparent"
Classes="flatbutton"
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
CommandParameter="{Binding}"
Cursor="Hand"
IsVisible="False"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_DeleteUser,
<Panel>
<Button
x:Name="delete_btn"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="Transparent"
Classes="flatbutton"
Command="{ReflectionBinding #u.DataContext.DeleteUserButton_Click}"
CommandParameter="{Binding}"
Cursor="Hand"
IsVisible="False"
ToolTip.Tip="{ReflectionBinding Path=Res.UserChange_DeleteUser,
Mode=OneWay,
Source={x:Static resx:R.Current}}">
<PathIcon Width="12" Data="{DynamicResource CloseDrawing}" />
</Button>
<StackPanel
Margin="0,30,10,0"
HorizontalAlignment="Right"
Orientation="Vertical"
Spacing="10">
<StackPanel.Styles>
<Style Selector="PathIcon">
<Setter Property="Height" Value="10" />
<Setter Property="Margin" Value="0 0 5 0" />
</Style>
<Style Selector="WrapPanel">
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
</StackPanel.Styles>
<StackPanel IsVisible="{Binding MostRecent}" Orientation="Horizontal">
<PathIcon Data="{StaticResource CheckmarkDrawing}" />
<TextBlock Text="{ReflectionBinding Path=Res.UserChange_RecentLogin, Mode=OneWay, Source={x:Static resx:R.Current}}" />
</StackPanel>
<PathIcon Width="12" Data="{DynamicResource CloseDrawing}" />
</Button>
<!--<StackPanel
Margin="0,30,10,0"
HorizontalAlignment="Right"
Orientation="Vertical"
Spacing="10">
-->
<!--<StackPanel.Styles>
<Style Selector="PathIcon">
<Setter Property="Height" Value="10" />
<Setter Property="Margin" Value="0 0 5 0" />
</Style>
<Style Selector="WrapPanel">
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
</StackPanel.Styles>-->
<!--
-->
<!--<controls:Badge Background="#3CB371"
IsVisible="{Binding RememberPassword}"
Text="{ReflectionBinding Path=Res.UserChange_RememberMe, Mode=OneWay, Source={x:Static resx:R.Current}}">
<controls:Badge.Icon>
<ui:SymbolIcon Symbol="Checkmark"/>
</controls:Badge.Icon>
</controls:Badge>
<controls:Badge Background="#3CB371"
IsVisible="{Binding MostRecent}"
Text="{ReflectionBinding Path=Res.UserChange_RecentLogin, Mode=OneWay, Source={x:Static resx:R.Current}}">
<controls:Badge.Icon>
<ui:SymbolIcon Symbol="Checkmark"/>
</controls:Badge.Icon>
</controls:Badge>-->
<!--
-->
<!--<StackPanel IsVisible="{Binding MostRecent}" Orientation="Horizontal">
<PathIcon Data="{StaticResource CheckmarkDrawing}" />
<TextBlock Text="{ReflectionBinding Path=Res.UserChange_RecentLogin, Mode=OneWay, Source={x:Static resx:R.Current}}" />
</StackPanel>
<StackPanel IsVisible="{Binding RememberPassword}" Orientation="Horizontal">
<PathIcon Data="{StaticResource CheckmarkDrawing}" />
<TextBlock Text="{ReflectionBinding Path=Res.UserChange_RememberMe, Mode=OneWay, Source={x:Static resx:R.Current}}" />
</StackPanel>
</StackPanel>
</Panel>
</Panel>
</Grid>
</Border>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
</ScrollViewer>
</Panel>
</DockPanel>
<StackPanel IsVisible="{Binding RememberPassword}" Orientation="Horizontal">
<PathIcon Data="{StaticResource CheckmarkDrawing}" />
<TextBlock Text="{ReflectionBinding Path=Res.UserChange_RememberMe, Mode=OneWay, Source={x:Static resx:R.Current}}" />
</StackPanel>-->
<!--
</StackPanel>-->
</Panel>
</Panel>
</Grid>
</Border>
</DataTemplate>
</ItemsRepeater.ItemTemplate>
</ItemsRepeater>
</ScrollViewer>
</Panel>
</DockPanel>
</UserControl>
@@ -108,7 +108,8 @@ namespace System.Application.UI.ViewModels
result = bot.Actions.Start();
}
Toast.Show(result.success ? result.message : string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, result.message));
if (!result.success)
Toast.Show(string.Format(CultureInfo.CurrentCulture, Strings.WarningFailedWithError, result.message));
}
public async Task<(IReadOnlyDictionary<string, string>? UnusedKeys, IReadOnlyDictionary<string, string>? UsedKeys)> GetUsedAndUnusedKeys(Bot bot)