Skip to content

Commit b5404d3

Browse files
committed
add: 包样式全部可设置
1 parent cde1e6e commit b5404d3

File tree

7 files changed

+222
-42
lines changed

7 files changed

+222
-42
lines changed

llcomNext/LLCOM/Controls/PacketDataControl.axaml

+10-4
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@
3232
</Border>
3333

3434
<controls:PacketDataControl
35+
DataFontFamily="Consolas"
3536
Extra="2025/03/11 - 11:22:33.123"
36-
FontFamily="Consolas"
3737
Header="串口1"
3838
Hex="44 55 66 77 88 99 00 AA BB CC DD EE FF"
3939
Icon="&#xE02E;"
@@ -87,9 +87,10 @@
8787
FontFamily="{DynamicResource Phosphor}"
8888
FontSize="12"
8989
Text="{TemplateBinding Icon}" />
90-
<TextBlock Text="{TemplateBinding Header}" />
90+
<TextBlock FontFamily="{TemplateBinding HeaderFontFamily}" Text="{TemplateBinding Header}" />
9191
<TextBlock
9292
VerticalAlignment="Center"
93+
FontFamily="{TemplateBinding ExtraFontFamily}"
9394
FontSize="12"
9495
FontWeight="Bold"
9596
Text="{TemplateBinding Extra}" />
@@ -106,6 +107,7 @@
106107
<SelectableTextBlock
107108
VerticalAlignment="Center"
108109
Background="Transparent"
110+
FontFamily="{TemplateBinding ExtraFontFamily}"
109111
FontSize="12"
110112
FontWeight="Bold"
111113
Text="{TemplateBinding Extra}"
@@ -118,28 +120,30 @@
118120
Text="{TemplateBinding Icon}" />
119121
<TextBlock
120122
VerticalAlignment="Center"
123+
FontFamily="{TemplateBinding HeaderFontFamily}"
121124
FontSize="12"
122125
Foreground="{TemplateBinding MainColor}"
123126
Text="{TemplateBinding Header}" />
124127
</StackPanel>
125128
<SelectableTextBlock
126129
Background="Transparent"
127-
FontFamily="{TemplateBinding FontFamily}"
130+
FontFamily="{TemplateBinding DataFontFamily}"
128131
FontSize="16"
129132
Foreground="{TemplateBinding MainColor}"
130133
IsVisible="{Binding ShowString, RelativeSource={RelativeSource TemplatedParent}}"
131134
Text="{TemplateBinding Text}"
132135
TextWrapping="Wrap" />
133136
<SelectableTextBlock
134137
Background="Transparent"
135-
FontFamily="{TemplateBinding FontFamily}"
138+
FontFamily="{TemplateBinding DataFontFamily}"
136139
FontSize="16"
137140
Foreground="{TemplateBinding MainColor}"
138141
IsVisible="{Binding !ShowString, RelativeSource={RelativeSource TemplatedParent}}"
139142
Text="{TemplateBinding Hex}"
140143
TextWrapping="Wrap" />
141144
<SelectableTextBlock
142145
Background="Transparent"
146+
FontFamily="{TemplateBinding HexFontFamily}"
143147
FontSize="10"
144148
Foreground="{DynamicResource SemiColorText2}"
145149
IsVisible="{TemplateBinding ShowHex}"
@@ -166,6 +170,7 @@
166170
Text="{TemplateBinding Icon}" />
167171
<TextBlock
168172
VerticalAlignment="Center"
173+
FontFamily="{TemplateBinding HeaderFontFamily}"
169174
FontSize="12"
170175
Foreground="{DynamicResource SemiColorHighlight}"
171176
Text="{TemplateBinding Header}" />
@@ -175,6 +180,7 @@
175180
Margin="0,0,10,0"
176181
HorizontalAlignment="Right"
177182
VerticalAlignment="Center"
183+
FontFamily="{TemplateBinding ExtraFontFamily}"
178184
FontSize="12"
179185
FontWeight="Bold"
180186
Text="{TemplateBinding Extra}" />

llcomNext/LLCOM/Controls/PacketDataControl.axaml.cs

+31-5
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,39 @@ public bool? PureText
9191
set => SetValue(PureTextProperty, value);
9292
}
9393

94-
public static readonly StyledProperty<FontFamily?> FontFamilyProperty =
95-
AvaloniaProperty.Register<PacketDataControl, FontFamily?>(nameof(FontFamily));
96-
public FontFamily? FontFamily
94+
public static readonly StyledProperty<FontFamily?> DataFontFamilyProperty =
95+
AvaloniaProperty.Register<PacketDataControl, FontFamily?>(nameof(DataFontFamily));
96+
public FontFamily? DataFontFamily
9797
{
98-
get => GetValue(FontFamilyProperty);
99-
set => SetValue(FontFamilyProperty, value);
98+
get => GetValue(DataFontFamilyProperty);
99+
set => SetValue(DataFontFamilyProperty, value);
100100
}
101+
102+
public static readonly StyledProperty<FontFamily?> HexFontFamilyProperty =
103+
AvaloniaProperty.Register<PacketDataControl, FontFamily?>(nameof(HexFontFamily));
104+
public FontFamily? HexFontFamily
105+
{
106+
get => GetValue(HexFontFamilyProperty);
107+
set => SetValue(HexFontFamilyProperty, value);
108+
}
109+
110+
public static readonly StyledProperty<FontFamily?> HeaderFontFamilyProperty =
111+
AvaloniaProperty.Register<PacketDataControl, FontFamily?>(nameof(HeaderFontFamily));
112+
public FontFamily? HeaderFontFamily
113+
{
114+
get => GetValue(HeaderFontFamilyProperty);
115+
set => SetValue(HeaderFontFamilyProperty, value);
116+
}
117+
118+
public static readonly StyledProperty<FontFamily?> ExtraFontFamilyProperty =
119+
AvaloniaProperty.Register<PacketDataControl, FontFamily?>(nameof(ExtraFontFamily));
120+
public FontFamily? ExtraFontFamily
121+
{
122+
get => GetValue(ExtraFontFamilyProperty);
123+
set => SetValue(ExtraFontFamilyProperty, value);
124+
}
125+
126+
101127

102128
public PacketDataControl()
103129
{

llcomNext/LLCOM/Services/Setting.cs

+82-20
Original file line numberDiff line numberDiff line change
@@ -38,40 +38,102 @@ public partial class Setting : ObservableObject
3838
public bool IsShowHexSmall => IsHexMode is null;
3939

4040
//分包数据的字体
41+
///////////数据包的字体
42+
public FontFamily? PacketFontFamily
43+
{
44+
get
45+
{
46+
if(string.IsNullOrEmpty(PacketFont))
47+
PacketFont = Utils.CheckFontName(PacketFont);
48+
return PacketFont;
49+
}
50+
set
51+
{
52+
if (value is null)
53+
return;
54+
PacketFont = value.Name;
55+
OnPropertyChanged();
56+
}
57+
}
58+
//字体名称
4159
[ObservableProperty]
42-
private FontFamily _packetFontFamily;
43-
44-
//分包数据的字体名称
4560
private string _packetFont = Database.Get(nameof(PacketFont), "").Result;
46-
public string PacketFont => _packetFont;
61+
//////////Hex小字的字体
62+
public FontFamily? PacketHexFontFamily
63+
{
64+
get
65+
{
66+
if(string.IsNullOrEmpty(PacketHexFont))
67+
PacketHexFont = Utils.CheckFontName(PacketHexFont);
68+
return PacketHexFont;
69+
}
70+
set
71+
{
72+
if (value is null)
73+
return;
74+
PacketHexFont = value.Name;
75+
OnPropertyChanged();
76+
}
77+
}
78+
//字体名称
79+
[ObservableProperty]
80+
private string _packetHexFont = Database.Get(nameof(PacketHexFont), "").Result;
81+
//////////标题头的字体
82+
public FontFamily? PacketHeaderFontFamily
83+
{
84+
get
85+
{
86+
if(string.IsNullOrEmpty(PacketHeaderFont))
87+
PacketHeaderFont = Utils.CheckFontName(PacketHeaderFont);
88+
return PacketHeaderFont;
89+
}
90+
set
91+
{
92+
if (value is null)
93+
return;
94+
PacketHeaderFont = value.Name;
95+
OnPropertyChanged();
96+
}
97+
}
98+
//字体名称
99+
[ObservableProperty]
100+
private string _packetHeaderFont = Database.Get(nameof(PacketHeaderFont), "").Result;
101+
//////////时间标记的字体
102+
public FontFamily? PacketExtraFontFamily
103+
{
104+
get
105+
{
106+
if(string.IsNullOrEmpty(PacketExtraFont))
107+
PacketExtraFont = Utils.CheckFontName(PacketExtraFont);
108+
return PacketExtraFont;
109+
}
110+
set
111+
{
112+
if (value is null)
113+
return;
114+
PacketExtraFont = value.Name;
115+
OnPropertyChanged();
116+
}
117+
}
118+
//字体名称
119+
[ObservableProperty]
120+
private string _packetExtraFont = Database.Get(nameof(PacketExtraFont), "").Result;
121+
47122

48-
49123
public Setting()
50124
{
51-
var font = SkiaSharp.SKFontManager.Default.MatchFamily(PacketFont);
52-
font ??= SkiaSharp.SKTypeface.Default;
53-
PacketFontFamily = font.FamilyName;
54-
if(string.IsNullOrEmpty(PacketFont))
55-
_packetFont = font.FamilyName;
56-
57125
PropertyChanged += async (sender, e) =>
58126
{
59127
//某个变量被更改
60128
var name = e.PropertyName;
61129

62-
//需要特殊处理的变量
63-
switch (name)
64-
{
65-
case nameof(PacketFontFamily):
66-
_packetFont = PacketFontFamily.Name;
67-
await Database.Set(nameof(PacketFont), PacketFont);
68-
break;
69-
}
70-
71130
//不需要存储的变量
72131
string[] dismissList =
73132
[
74133
nameof(PacketFontFamily),
134+
nameof(PacketHexFontFamily),
135+
nameof(PacketHeaderFontFamily),
136+
nameof(PacketExtraFontFamily),
75137
];
76138
if (name == null || dismissList.Contains(name))
77139
return;

llcomNext/LLCOM/Services/Utils.cs

+9
Original file line numberDiff line numberDiff line change
@@ -151,4 +151,13 @@ public static void OpenWebLink(string url)
151151
}
152152

153153
public static bool HasUpdate() => _updateUrl != null;
154+
155+
/// <summary>
156+
/// 获取字体名称,会根据字体名称返回一个可用的字体名称
157+
/// 如果字体名称不存在,则返回默认字体名称
158+
/// </summary>
159+
/// <param name="name">字体名</param>
160+
/// <returns>可用的字体名</returns>
161+
public static string CheckFontName(string name) =>
162+
(SkiaSharp.SKFontManager.Default.MatchFamily(name) ?? SkiaSharp.SKTypeface.Default).FamilyName;
154163
}

llcomNext/LLCOM/ViewModels/Pages/SettingPageViewModel.cs

+12-4
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,11 @@ public SettingPageViewModel(Func<Type, ViewModelBase> getService)
4040
{
4141
SystemFontList.Add(f);
4242
}
43-
//找找看当前设置的是什么字体
44-
var font = Services.Utils.Setting.PacketFont;
45-
SystemFontIndex = SystemFontList.IndexOf(font);
43+
//找找看当前设置的是什么字体,对应上
44+
PacketFontIndex = SystemFontList.IndexOf(Services.Utils.Setting.PacketFont);
45+
PacketHexFontIndex = SystemFontList.IndexOf(Services.Utils.Setting.PacketHexFont);
46+
PacketHeaderFontIndex = SystemFontList.IndexOf(Services.Utils.Setting.PacketHeaderFont);
47+
PacketExtraFontIndex = SystemFontList.IndexOf(Services.Utils.Setting.PacketExtraFont);
4648

4749
//是否已经检查过更新?
4850
if (Services.Utils.HasUpdate())
@@ -82,7 +84,13 @@ public SettingPageViewModel(Func<Type, ViewModelBase> getService)
8284
[ObservableProperty]
8385
private ObservableCollection<FontFamily> _SystemFontList = new();
8486
[ObservableProperty]
85-
private int _systemFontIndex;
87+
private int _packetFontIndex;
88+
[ObservableProperty]
89+
private int _packetHexFontIndex;
90+
[ObservableProperty]
91+
private int _packetHeaderFontIndex;
92+
[ObservableProperty]
93+
private int _packetExtraFontIndex;
8694

8795
#endregion
8896

llcomNext/LLCOM/Views/DataViews/PacketDataView.axaml

+4-1
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,13 @@
5656
Classes.Black="{Binding IsWayUnknown}"
5757
Classes.Green="{Binding IsWaySend}"
5858
Classes.Red="{Binding IsWayReceive}"
59+
DataFontFamily="{Binding PacketFontFamily, Source={x:Static services:Utils.Setting}}"
5960
Extra="{Binding Extra}"
60-
FontFamily="{Binding PacketFontFamily, Source={x:Static services:Utils.Setting}}"
61+
ExtraFontFamily="{Binding PacketExtraFontFamily, Source={x:Static services:Utils.Setting}}"
6162
Header="{Binding Channel}"
63+
HeaderFontFamily="{Binding PacketHeaderFontFamily, Source={x:Static services:Utils.Setting}}"
6264
Hex="{Binding HexString}"
65+
HexFontFamily="{Binding PacketHexFontFamily, Source={x:Static services:Utils.Setting}}"
6366
HideHeader="{Binding ShowHeader, Source={x:Static services:Utils.Setting}}"
6467
PureText="{Binding PureText, Source={x:Static services:Utils.Setting}}"
6568
ShowString="{Binding IsShowString, Source={x:Static services:Utils.Setting}}"

0 commit comments

Comments
 (0)