fix: font selector

This commit is contained in:
Zhe Fang
2025-12-02 19:19:15 -05:00
parent 4f74e48cfb
commit 6f02a1a46c
3 changed files with 39 additions and 27 deletions

View File

@@ -12,7 +12,7 @@
<Identity
Name="37412.BetterLyrics"
Publisher="CN=E1428B0E-DC1D-4EA4-ACB1-4556569D5BA9"
Version="1.1.164.0" />
Version="1.1.165.0" />
<mp:PhoneIdentity PhoneProductId="ca4a4830-fc19-40d9-b823-53e2bff3d816" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>

View File

@@ -21,14 +21,13 @@
x:Name="AutoSuggestBox"
MinWidth="180"
GotFocus="AutoSuggestBox_GotFocus"
ItemContainerStyle="{StaticResource ListViewStretchedItemContainerStyle}"
LostFocus="AutoSuggestBox_LostFocus"
SuggestionChosen="AutoSuggestBox_SuggestionChosen"
Text="{x:Bind SelectedFontFamily, Mode=OneWay}"
TextChanged="AutoSuggestBox_TextChanged">
<AutoSuggestBox.ItemTemplate>
<!--<AutoSuggestBox.ItemTemplate>
<DataTemplate x:DataType="models:ExtendedFontFamily">
<StackPanel Padding="8,4">
<StackPanel>
<TextBlock Text="{x:Bind LocalizedFontFamily}" TextWrapping="Wrap" />
<TextBlock
FontSize="12"
@@ -37,7 +36,7 @@
TextWrapping="Wrap" />
</StackPanel>
</DataTemplate>
</AutoSuggestBox.ItemTemplate>
</AutoSuggestBox.ItemTemplate>-->
</AutoSuggestBox>
<Button
Click="Button_Click"

View File

@@ -20,7 +20,8 @@ namespace BetterLyrics.WinUI3.Controls
{
private readonly ISettingsService _settingsService = Ioc.Default.GetRequiredService<ISettingsService>();
private List<ExtendedFontFamily> FontFamilies { get; set; } = [];
//private List<ExtendedFontFamily> FontFamilies { get; set; } = [];
private List<string> FontFamilies { get; set; } = [];
public FontFamilyAutoSuggestBox()
{
@@ -39,36 +40,46 @@ namespace BetterLyrics.WinUI3.Controls
private void RefreshFontFamilies()
{
Task.Run(() =>
{
var fontFamilies = FontHelper.SystemFontFamilies.Select(x => new ExtendedFontFamily()
{
FontFamily = x,
LocalizedFontFamily = FontHelper.GetLocalizedFontFamilyName(x, _settingsService.AppSettings.GeneralSettings.LanguageCode)
}).OrderBy(x => x.LocalizedFontFamily).ToList();
DispatcherQueue.TryEnqueue(() =>
{
FontFamilies = fontFamilies;
});
});
//Task.Run(() =>
//{
// var fontFamilies = FontHelper.SystemFontFamilies.Select(x => new ExtendedFontFamily()
// {
// FontFamily = x,
// LocalizedFontFamily = FontHelper.GetLocalizedFontFamilyName(x, _settingsService.AppSettings.GeneralSettings.LanguageCode)
// }).OrderBy(x => x.LocalizedFontFamily).ToList();
// DispatcherQueue.TryEnqueue(() =>
// {
// FontFamilies = fontFamilies;
// });
//});
FontFamilies = FontHelper.SystemFontFamilies.OrderBy(x => x).ToList();
}
private void AutoSuggestBox_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args)
{
SelectedFontFamily = ((ExtendedFontFamily)args.SelectedItem).FontFamily ?? "";
if (args.SelectedItem is ExtendedFontFamily extendedFontFamily)
{
SelectedFontFamily = extendedFontFamily.FontFamily;
}
else
{
SelectedFontFamily = args.SelectedItem.ToString() ?? "";
}
}
private void UpdateAutoSuggestBoxItemsSource(string? query = null)
{
query ??= AutoSuggestBox.Text;
var suitableItems = new List<ExtendedFontFamily>();
//var suitableItems = new List<ExtendedFontFamily>();
var suitableItems = new List<string>();
var splitText = query.ToLower().Split(" ");
foreach (var fontFamily in FontFamilies)
{
bool found = splitText.All((key) =>
{
return fontFamily.FontFamily.ToLower().Contains(key) || fontFamily.LocalizedFontFamily.ToLower().Contains(key);
//return fontFamily.FontFamily.ToLower().Contains(key) || fontFamily.LocalizedFontFamily.ToLower().Contains(key);
return fontFamily.ToLower().Contains(key);
});
if (found)
{
@@ -77,13 +88,15 @@ namespace BetterLyrics.WinUI3.Controls
}
if (suitableItems.Count == 0)
{
suitableItems.Add(new ExtendedFontFamily()
{
FontFamily = "",
LocalizedFontFamily = "N/A"
});
//suitableItems.Add(new ExtendedFontFamily()
//{
// FontFamily = "",
// LocalizedFontFamily = "N/A"
//});
suitableItems.Add("N/A");
}
AutoSuggestBox.ItemsSource = suitableItems.OrderBy(x => x.LocalizedFontFamily);
//AutoSuggestBox.ItemsSource = suitableItems.OrderBy(x => x.LocalizedFontFamily);
AutoSuggestBox.ItemsSource = suitableItems.OrderBy(x => x);
}
private void AutoSuggestBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)