diff --git a/packages/AtomUI/AppBuilderExtensions.cs b/packages/AtomUI/AppBuilderExtensions.cs index 728a4cf29..57d76f0af 100644 --- a/packages/AtomUI/AppBuilderExtensions.cs +++ b/packages/AtomUI/AppBuilderExtensions.cs @@ -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? 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(); } diff --git a/src/AtomUI.Theme/IThemeManagerBuilder.cs b/src/AtomUI.Theme/IThemeManagerBuilder.cs index d2608b1db..02e3d206a 100644 --- a/src/AtomUI.Theme/IThemeManagerBuilder.cs +++ b/src/AtomUI.Theme/IThemeManagerBuilder.cs @@ -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); } \ No newline at end of file diff --git a/src/AtomUI.Theme/ThemeManagerBuilder.cs b/src/AtomUI.Theme/ThemeManagerBuilder.cs index 872f206dc..130a4ce93 100644 --- a/src/AtomUI.Theme/ThemeManagerBuilder.cs +++ b/src/AtomUI.Theme/ThemeManagerBuilder.cs @@ -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 _registeredTokenTypes; private HashSet _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; }