Refactor AtomUIExtensions

This commit is contained in:
qinware
2025-08-05 11:09:18 +08:00
parent 32d641ed35
commit 167f339b1b
3 changed files with 16 additions and 12 deletions
+11 -7
View File
@@ -1,16 +1,19 @@
using Avalonia;
using System.Globalization;
using AtomUI.Utils;
using Avalonia;
namespace AtomUI.Theme;
public static class AtomUIExtensions
{
public static ThemeManagerBuilder CreateThemeManagerBuilder(this AppBuilder builder)
{
return new ThemeManagerBuilder(builder);
}
public static AppBuilder UseAtomUI(this AppBuilder builder, ThemeManagerBuilder themeManagerBuilder)
public static AppBuilder UseAtomUI(this AppBuilder builder, Action<ThemeManagerBuilder>? themeConfigureAction = null)
{
var themeManagerBuilder = new ThemeManagerBuilder(builder);
themeManagerBuilder.WithDefaultCultureInfo(new CultureInfo(LanguageCode.en_US));
themeManagerBuilder.WithDefaultTheme(ThemeManager.DEFAULT_THEME_ID);
themeConfigureAction?.Invoke(themeManagerBuilder);
builder.AfterSetup(_ =>
{
var themeManager = themeManagerBuilder.Build();
@@ -21,6 +24,7 @@ public static class AtomUIExtensions
themeManager.SetActiveTheme(themeManagerBuilder.ThemeId);
builder.Instance!.Styles.Add(themeManager);
themeManager.NotifyInitialized();
themeManagerBuilder = null;
});
return builder.WithInterFont();
}
+2 -2
View File
@@ -17,6 +17,6 @@ public interface IThemeManagerBuilder
void AddControlThemesProvider(IControlThemesProvider controlThemesProvider);
void AddLanguageProviders(AbstractLanguageProvider languageProvider);
void UseTheme(string themeId);
void UseCultureInfo(CultureInfo cultureInfo);
void WithDefaultTheme(string themeId);
void WithDefaultCultureInfo(CultureInfo cultureInfo);
}
+3 -3
View File
@@ -14,7 +14,7 @@ public class ThemeManagerBuilder : IThemeManagerBuilder
public CultureInfo CultureInfo { get; private set; }
public string ThemeId { get; private set; }
public AppBuilder AppBuilder { get; private set; }
public AppBuilder AppBuilder { get; }
private HashSet<string> _registeredTokenTypes;
private HashSet<string> _registeredControlThemesProviders;
@@ -73,12 +73,12 @@ public class ThemeManagerBuilder : IThemeManagerBuilder
_registeredLanguageProviders.Add(id);
}
public void UseTheme(string themeId)
public void WithDefaultTheme(string themeId)
{
ThemeId = themeId;
}
public void UseCultureInfo(CultureInfo cultureInfo)
public void WithDefaultCultureInfo(CultureInfo cultureInfo)
{
CultureInfo = cultureInfo;
}