mirror of
https://github.com/BeyondDimension/SteamTools.git
synced 2026-10-24 02:39:46 +08:00
Add Badge Control
This commit is contained in:
@@ -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>
|
||||
|
||||
+6
-2
@@ -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>
|
||||
|
||||
+2
-2
@@ -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>
|
||||
|
||||
+1
-1
@@ -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 运行状态">
|
||||
|
||||
+357
-323
@@ -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>
|
||||
|
||||
+2
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user