using Inspectron.Settings;
using Inspectron.Settings.Windows.Configuration;
using VisionBuilder.UI.Common;
using VisionBuilder.UI.Common.ViewModel.Interfaces.UI;

namespace VisionBuilder.UI.Windows.Settings;

public class WindowsSettingsService: ISettingsService
{
    private readonly UIConfiguration _uiConfiguration;
    private readonly InspectronSettings _settings;

    public WindowsSettingsService(UIConfiguration uiConfiguration, InspectronSettings settings)
    {
        _uiConfiguration = uiConfiguration ?? throw new ArgumentNullException(nameof(uiConfiguration));
        _settings = settings ?? throw new ArgumentNullException(nameof(settings));

    }

    public Task ShowSettingsDialogAsync()
    {
        Thread th = new Thread(() =>
        {
            OptionsWindow window = new OptionsWindow(new DefaultControlFactory());
            window.LoadFromSettings(_settings);
            if (window.ShowDialog()==DialogResult.OK)
            {
                _settings.SaveSettings();
            }
        });
        th.SetApartmentState(ApartmentState.STA);
        th.Start();
        return Task.CompletedTask;
    }
}