Browse Source

reformat

pull/7353/head
Takoooooo 5 years ago
parent
commit
31cdd4e0b0
  1. 88
      src/Avalonia.Themes.Default/SimpleTheme.cs

88
src/Avalonia.Themes.Default/SimpleTheme.cs

@ -10,13 +10,15 @@ namespace Avalonia.Themes.Default
{ {
public class SimpleTheme : AvaloniaObject, IStyle, IResourceProvider public class SimpleTheme : AvaloniaObject, IStyle, IResourceProvider
{ {
public static readonly StyledProperty<SimpleThemeMode> ModeProperty =
AvaloniaProperty.Register<SimpleTheme, SimpleThemeMode>(nameof(Mode));
private readonly Uri _baseUri; private readonly Uri _baseUri;
private bool _isLoading; private bool _isLoading;
private IStyle? _loaded;
private Styles _sharedStyles = new();
private Styles _simpleDark = new(); private Styles _simpleDark = new();
private Styles _simpleLight = new(); private Styles _simpleLight = new();
private Styles _sharedStyles = new();
private IStyle? _loaded;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="SimpleTheme"/> class. /// Initializes a new instance of the <see cref="SimpleTheme"/> class.
/// </summary> /// </summary>
@ -42,32 +44,28 @@ namespace Avalonia.Themes.Default
InitStyles(_baseUri); InitStyles(_baseUri);
} }
public static readonly StyledProperty<SimpleThemeMode> ModeProperty = public event EventHandler OwnerChanged
AvaloniaProperty.Register<SimpleTheme, SimpleThemeMode>(nameof(Mode));
/// <summary>
/// Gets or sets the mode of the fluent theme (light, dark).
/// </summary>
public SimpleThemeMode Mode
{
get => GetValue(ModeProperty);
set => SetValue(ModeProperty, value);
}
protected override void OnPropertyChanged<T>(AvaloniaPropertyChangedEventArgs<T> change)
{ {
base.OnPropertyChanged(change); add
if (change.Property == ModeProperty)
{ {
if (Mode == SimpleThemeMode.Dark) if (Loaded is IResourceProvider rp)
{ {
(Loaded as Styles)![1] = _simpleDark[0]; rp.OwnerChanged += value;
} }
else }
remove
{
if (Loaded is IResourceProvider rp)
{ {
(Loaded as Styles)![1] = _simpleLight[0]; rp.OwnerChanged -= value;
} }
} }
} }
IReadOnlyList<IStyle> IStyle.Children => _loaded?.Children ?? Array.Empty<IStyle>();
bool IResourceNode.HasResources => (Loaded as IResourceProvider)?.HasResources ?? false;
public IStyle Loaded public IStyle Loaded
{ {
get get
@ -78,7 +76,7 @@ namespace Avalonia.Themes.Default
if (Mode == SimpleThemeMode.Light) if (Mode == SimpleThemeMode.Light)
{ {
_loaded = new Styles { _sharedStyles , _simpleLight}; _loaded = new Styles { _sharedStyles, _simpleLight };
} }
else if (Mode == SimpleThemeMode.Dark) else if (Mode == SimpleThemeMode.Dark)
{ {
@ -91,29 +89,19 @@ namespace Avalonia.Themes.Default
} }
} }
/// <summary>
/// Gets or sets the mode of the fluent theme (light, dark).
/// </summary>
public SimpleThemeMode Mode
{
get => GetValue(ModeProperty);
set => SetValue(ModeProperty, value);
}
public IResourceHost? Owner => (Loaded as IResourceProvider)?.Owner; public IResourceHost? Owner => (Loaded as IResourceProvider)?.Owner;
bool IResourceNode.HasResources => (Loaded as IResourceProvider)?.HasResources ?? false; void IResourceProvider.AddOwner(IResourceHost owner) => (Loaded as IResourceProvider)?.AddOwner(owner);
IReadOnlyList<IStyle> IStyle.Children => _loaded?.Children ?? Array.Empty<IStyle>();
public event EventHandler OwnerChanged void IResourceProvider.RemoveOwner(IResourceHost owner) => (Loaded as IResourceProvider)?.RemoveOwner(owner);
{
add
{
if (Loaded is IResourceProvider rp)
{
rp.OwnerChanged += value;
}
}
remove
{
if (Loaded is IResourceProvider rp)
{
rp.OwnerChanged -= value;
}
}
}
public SelectorMatchResult TryAttach(IStyleable target, IStyleHost? host) => Loaded.TryAttach(target, host); public SelectorMatchResult TryAttach(IStyleable target, IStyleHost? host) => Loaded.TryAttach(target, host);
@ -128,8 +116,22 @@ namespace Avalonia.Themes.Default
return false; return false;
} }
void IResourceProvider.AddOwner(IResourceHost owner) => (Loaded as IResourceProvider)?.AddOwner(owner); protected override void OnPropertyChanged<T>(AvaloniaPropertyChangedEventArgs<T> change)
void IResourceProvider.RemoveOwner(IResourceHost owner) => (Loaded as IResourceProvider)?.RemoveOwner(owner); {
base.OnPropertyChanged(change);
if (change.Property == ModeProperty)
{
if (Mode == SimpleThemeMode.Dark)
{
(Loaded as Styles)![1] = _simpleDark[0];
}
else
{
(Loaded as Styles)![1] = _simpleLight[0];
}
}
}
private void InitStyles(Uri baseUri) private void InitStyles(Uri baseUri)
{ {
_sharedStyles = new Styles _sharedStyles = new Styles

Loading…
Cancel
Save