Added ContextMenu/Flyout animations. Added platform services. Use bitmap cache for all views.

This commit is contained in:
2025-03-18 09:31:32 -04:00
parent 7c70eb3814
commit 9214e97100
17 changed files with 649 additions and 169 deletions

View File

@@ -0,0 +1,40 @@
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Controls;
using Avalonia.Rendering;
using Avalonia;
using Avalonia.VisualTree;
namespace Harmonia.UI.Platform;
public abstract class PlatformServiceLocator<T> : IPlatformServiceLocator<T>
{
public T? Get()
{
//Desktop
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
if (desktop.MainWindow == null)
return default;
return GetFromWindow(desktop.MainWindow);
}
//Android (and iOS?)
else if (Application.Current?.ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
{
if (singleViewPlatform.MainView == null)
return default;
IRenderRoot? visualRoot = singleViewPlatform.MainView.GetVisualRoot();
if (visualRoot is TopLevel topLevel)
{
return GetFromTopLevel(topLevel);
}
}
return default;
}
protected abstract T? GetFromWindow(Window mainWindow);
protected abstract T? GetFromTopLevel(TopLevel topLevel);
}