68 lines
2.9 KiB
C#
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;
|
|
}
|
|
}
|
|
} |