Added PersonPicture

This commit is contained in:
TheXamlGuy
2024-05-09 19:09:18 +01:00
parent ee7083d009
commit 711353c8e9
19 changed files with 1108 additions and 0 deletions
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class BitmapIcon : FluentAvalonia.UI.Controls.BitmapIcon
{
}
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class BitmapIconSource : FluentAvalonia.UI.Controls.BitmapIconSource
{
}
@@ -0,0 +1,71 @@
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Templates;
using Avalonia.LogicalTree;
using Avalonia.Metadata;
namespace Toolkit.UI.Controls.Avalonia;
public class ContentIcon : FluentAvalonia.UI.Controls.FAIconElement
{
public static readonly StyledProperty<object?> ContentProperty =
AvaloniaProperty.Register<ContentIcon, object?>("Content");
public static readonly StyledProperty<IDataTemplate?> ContentTemplateProperty =
AvaloniaProperty.Register<ContentIcon, IDataTemplate?>("ContentTemplate");
private ContentControl? content;
[Content]
public object? Content
{
get => GetValue(ContentProperty);
set => SetValue(ContentProperty, value);
}
public IDataTemplate? IconTemplate
{
get => GetValue(ContentTemplateProperty);
set => SetValue(ContentTemplateProperty, value);
}
protected override Size MeasureOverride(Size availableSize)
{
if (content == null)
{
CreateContent();
}
return base.MeasureOverride(availableSize);
}
protected override void OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs args)
{
if (VisualChildren.Count > 0)
{
((ILogical)VisualChildren[0]).NotifyAttachedToLogicalTree(args);
}
base.OnAttachedToLogicalTree(args);
}
protected override void OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs args)
{
if (VisualChildren.Count > 0)
{
((ILogical)VisualChildren[0]).NotifyDetachedFromLogicalTree(args);
}
base.OnDetachedFromLogicalTree(args);
}
private void CreateContent()
{
content = new ContentControl();
content.Bind(ContentControl.ContentProperty, this.GetBindingObservable(ContentProperty));
content.Bind(ContentControl.ContentTemplateProperty, this.GetBindingObservable(ContentTemplateProperty));
LogicalChildren.Add(content);
VisualChildren.Add(content);
}
}
@@ -0,0 +1,26 @@
using Avalonia;
using Avalonia.Controls.Templates;
using Avalonia.Metadata;
namespace Toolkit.UI.Controls.Avalonia;
public class ContentIconSource : FluentAvalonia.UI.Controls.IconSource
{
public static readonly StyledProperty<object?> ContentProperty =
AvaloniaProperty.Register<ContentIconSource, object?>("Content");
public static readonly StyledProperty<IDataTemplate?> ContentTemplateProperty =
AvaloniaProperty.Register<ContentIconSource, IDataTemplate?>("ContentTemplate");
[Content]
public object? Content
{
get => GetValue(ContentProperty);
set => SetValue(ContentProperty, value);
}
public IDataTemplate? IconTemplate
{
get => GetValue(ContentTemplateProperty);
set => SetValue(ContentTemplateProperty, value);
}
}
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class FAIconElement : FluentAvalonia.UI.Controls.FAIconElement
{
}
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class FAPathIcon : FluentAvalonia.UI.Controls.FAPathIcon
{
}
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class FontIcon : FluentAvalonia.UI.Controls.FontIcon
{
}
@@ -0,0 +1,8 @@
namespace Kromek.UI.Avalonia.Controls
{
public class FontIconSource : FluentAvalonia.UI.Controls.FontIconSource
{
}
}
@@ -0,0 +1,35 @@
using System.Reflection;
namespace Toolkit.UI.Controls.Avalonia;
public class IconHelper
{
private static MethodInfo? invoker;
public static FluentAvalonia.UI.Controls.FAIconElement? CreateIconElement(FluentAvalonia.UI.Controls.IconSource source)
{
if (source is ContentIconSource contentIconSource)
{
ContentIcon contentIcon = new()
{
[!ContentIcon.ContentProperty] = contentIconSource[!ContentIconSource.ContentProperty],
[!ContentIcon.ContentTemplateProperty] = contentIconSource[!ContentIconSource.ContentTemplateProperty],
};
return contentIcon;
}
else
{
if (invoker == null)
{
Type? iconHelpersType = Type.GetType("FluentAvalonia.UI.Controls.IconHelpers,FluentAvalonia");
if (iconHelpersType?.GetMethod("CreateFromUnknown", BindingFlags.Public | BindingFlags.Static) is MethodInfo createFromUnknown)
{
invoker = createFromUnknown;
}
}
return (FluentAvalonia.UI.Controls.FAIconElement?)invoker?.Invoke(null, new object[] { source });
}
}
}
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class ImageIcon : FluentAvalonia.UI.Controls.ImageIcon
{
}
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class ImageIconSource : FluentAvalonia.UI.Controls.ImageIconSource
{
}
@@ -0,0 +1,12 @@
using Avalonia.Controls.Templates;
using Avalonia.Controls;
using Avalonia.LogicalTree;
using Avalonia.Metadata;
using Avalonia;
namespace Toolkit.UI.Controls.Avalonia;
public class PathIconSource : FluentAvalonia.UI.Controls.PathIconSource
{
}
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class SymbolIcon : FluentAvalonia.UI.Controls.SymbolIcon
{
}
@@ -0,0 +1,6 @@
namespace Toolkit.UI.Controls.Avalonia;
public class SymbolIconSource : FluentAvalonia.UI.Controls.SymbolIconSource
{
}