Files
rssotto-csharp-client/ModVersionChecker/forms/FormFactory.cs
2025-09-04 10:14:30 +02:00

68 lines
2.9 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using ModVersionChecker.data.model;
using ModVersionChecker.managers.interfaces;
namespace ModVersionChecker.forms
{
public class FormFactory : IFormFactory
{
private readonly IServiceProvider _serviceProvider;
public FormFactory(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider));
}
public AppDetailsForm CreateAppDetailsForm(AppConfig? app, bool isEditable, EventHandler<string>? onAppChanged)
{
var configManager = _serviceProvider.GetRequiredService<IConfigManager>();
var appsManager = _serviceProvider.GetRequiredService<IAppsManager>();
var sourcesDefManager = _serviceProvider.GetRequiredService<ISourcesDefManager>();
var checkerTypesDefManager = _serviceProvider.GetRequiredService<ICheckerTypesDefManager>();
var flightSimsManager = _serviceProvider.GetRequiredService<IFlightSimsManager>();
var form = new AppDetailsForm(configManager, appsManager, sourcesDefManager, checkerTypesDefManager, flightSimsManager);
form.SetApp(app, false);
form.SetEditable(isEditable);
if (onAppChanged != null)
{
form.OnAppChanged += onAppChanged;
}
return form;
}
public GlobalConfigForm CreateGlobalConfigForm()
{
var configManager = _serviceProvider.GetRequiredService<IConfigManager>();
var form = new GlobalConfigForm(configManager);
return form;
}
public SourcesConfigForm CreateSourcesConfigForm(EventHandler<string>? onSourcesChanged)
{
var sourcesDefManager = _serviceProvider.GetRequiredService<ISourcesDefManager>();
var formFactory = _serviceProvider.GetRequiredService<IFormFactory>();
var form = new SourcesConfigForm(formFactory, sourcesDefManager);
if (onSourcesChanged != null)
{
form.OnSourcesChanged += onSourcesChanged;
}
return form;
}
public SourceDetailForm CreateSourceDetailForm(SourceDef? sourceDef, EventHandler<string>? onSourceChanged)
{
var sourcesDefManager = _serviceProvider.GetRequiredService<ISourcesDefManager>();
var checkerTypesDefManager = _serviceProvider.GetRequiredService<ICheckerTypesDefManager>();
var formFactory = _serviceProvider.GetRequiredService<IFormFactory>();
var form = new SourceDetailForm(formFactory, sourcesDefManager);
form.SourceDef = sourceDef;
if (onSourceChanged != null)
{
form.UpdateFields();
form.OnSourceChanged += onSourceChanged;
}
return form;
}
}
}