Improve widget builder

This commit is contained in:
TheXamlGuy
2024-01-19 22:37:12 +00:00
parent 4766ed1156
commit 3a268db79d
16 changed files with 141 additions and 80 deletions
+2 -2
View File
@@ -52,8 +52,8 @@ public partial class App :
services.AddHandler<AppConfigurationChangedHandler>();
services.AddWidgetProvider<MediaControllerWidgetProvider>();
services.AddWidgetProvider<PrimaryWidgetProvider>();
services.AddWidget<MediaControllerWidgetBuilder>();
services.AddWidget<PrimaryWidgetConfigurationBuilder>();
services.AddTransient(provider =>
{
@@ -9,14 +9,13 @@ namespace Hyperbar.Windows
{
public static class IServiceCollectionExtensions
{
public static IServiceCollection AddWidgetProvider<TWidgetProvider>(this IServiceCollection services)
where TWidgetProvider :
IWidgetProvider, new()
public static IServiceCollection AddWidget<TWidgetBuilder>(this IServiceCollection services)
where TWidgetBuilder :
IWidgetBuilder, new()
{
DispatcherQueueSynchronizationContext context = new(DispatcherQueue.GetForCurrentThread());
SynchronizationContext.SetSynchronizationContext(context);
TWidgetProvider builder = new();
IHost? host = new HostBuilder()
.UseContentRoot(AppContext.BaseDirectory)
.ConfigureAppConfiguration(config =>
@@ -32,7 +31,6 @@ namespace Hyperbar.Windows
new ServiceFactory((type, parameters) => ActivatorUtilities.CreateInstance(provider, type, parameters!)));
isolatedServices.AddHostedService<WidgetService>();
isolatedServices.AddTransient<ITemplateFactory, TemplateFactory>();
isolatedServices.AddScoped<IMediator, Mediator>();
@@ -50,7 +48,8 @@ namespace Hyperbar.Windows
isolatedServices.AddContentTemplate<WidgetButtonViewModel, WidgetButtonView>();
isolatedServices.AddContentTemplate<WidgetSplitButtonViewModel, WidgetSplitButtonView>();
builder.Create(context, isolatedServices);
TWidgetBuilder builder = new();
builder.Create(isolatedServices);
}).Build();