using Microsoft.Extensions.DependencyInjection; using ModVersionChecker.managers.interfaces; using ModVersionChecker.service.interfaces; namespace ModVersionChecker.ui.forms { public class FormFactory : IFormFactory { private readonly IServiceProvider _serviceProvider; public FormFactory(IServiceProvider serviceProvider) { _serviceProvider = serviceProvider ?? throw new ArgumentNullException(nameof(serviceProvider)); } public AppDetailsForm CreateAppDetailsForm(App? app, bool isEditable, EventHandler? onAppSaved) { var apiService = _serviceProvider.GetRequiredService(); var appsManager = _serviceProvider.GetRequiredService(); var form = new AppDetailsForm(apiService, appsManager); if (onAppSaved != null) { form.OnAppAdded += onAppSaved; } return form; } public GlobalConfigForm CreateGlobalConfigForm() { var configManager = _serviceProvider.GetRequiredService(); return new GlobalConfigForm(configManager); } public TypeConfigForm CreateTypeConfigForm() { var typeManager = _serviceProvider.GetRequiredService(); var apiService = _serviceProvider.GetRequiredService(); var configManager = _serviceProvider.GetRequiredService(); return new TypeConfigForm(typeManager, apiService, configManager); } //public SourcesConfigForm CreateSourcesConfigForm(EventHandler? onSourcesChanged) //{ // var sourcesDefManager = _serviceProvider.GetRequiredService(); // var formFactory = _serviceProvider.GetRequiredService(); // var form = new SourcesConfigForm(formFactory, sourcesDefManager); // if (onSourcesChanged != null) // { // form.OnSourcesChanged += onSourcesChanged; // } // return form; //} //public SourceDetailForm CreateSourceDetailForm(SourceDef? sourceDef, EventHandler? onSourceChanged) //{ // var sourcesDefManager = _serviceProvider.GetRequiredService(); // var checkerTypesDefManager = _serviceProvider.GetRequiredService(); // var formFactory = _serviceProvider.GetRequiredService(); // var form = new SourceDetailForm(formFactory, sourcesDefManager); // form.SourceDef = sourceDef; // if (onSourceChanged != null) // { // form.UpdateFields(); // form.OnSourceChanged += onSourceChanged; // } // return form; //} } }