Reloadable configuration, FontService (WIP)

This commit is contained in:
2023-02-22 16:50:50 +01:00
parent d6022ee02c
commit 3db5945cfd
18 changed files with 166 additions and 41 deletions

View File

@@ -0,0 +1,34 @@
using System.Reactive.Linq;
using System.Reactive.Subjects;
using Avalonia.Media;
using FileTime.GuiApp.Configuration;
using Microsoft.Extensions.Options;
namespace FileTime.GuiApp.Services;
public class FontService : IFontService
{
private readonly IOptionsMonitor<FontConfiguration> _fontConfiguration;
private readonly BehaviorSubject<string?> _mainFont = new(null);
public IObservable<string?> MainFont => _mainFont.DistinctUntilChanged();
public FontService(IOptionsMonitor<FontConfiguration> fontConfiguration)
{
_fontConfiguration = fontConfiguration;
fontConfiguration.OnChange(UpdateFonts);
UpdateFonts(fontConfiguration.CurrentValue, null);
}
private void UpdateFonts(FontConfiguration newConfiguration, string? arg2)
{
_mainFont.OnNext(GetMainFont());
}
public string? GetMainFont()
{
var installedFonts = FontManager.Current.GetInstalledFontFamilyNames().ToList();
return _fontConfiguration.CurrentValue.Main.FirstOrDefault(f => installedFonts.Contains(f));
}
}