mirror of
https://github.com/AtomUI/AtomUI.git
synced 2026-10-26 03:00:28 +08:00
Refactor AtomUIExtensions
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user