using InABox.Wpf;
using System.Collections.Generic;
using System.Drawing.Printing;
using System.Windows;
using System.Windows.Controls;

namespace InABox.WPF
{
    /// <summary>
    ///     Interaction logic for PrinterSelection.xaml
    /// </summary>
    public partial class PrinterSelection : ThemableWindow
    {
        private readonly List<string> printers = new() { "" };

        public PrinterSelection(string value)
        {
            InitializeComponent();
            foreach (string printer in PrinterSettings.InstalledPrinters)
                printers.Add(printer);
            Combo.ItemsSource = printers;
            Value = Combo.Items.Contains(value) ? value : "";
        }

        public string Value
        {
            get => Combo.SelectedItem.ToString();
            set => Combo.SelectedItem = value;
        }

        private void OK_Click(object sender, RoutedEventArgs e)
        {
            DialogResult = true;
            Close();
        }

        private void Cancel_Click(object sender, RoutedEventArgs e)
        {
            DialogResult = false;
            Close();
        }

        public static bool Execute(ref string value)
        {
            var edit = new PrinterSelection(value);
            if (edit.ShowDialog() == true)
            {
                value = edit.Value;
                return true;
            }

            return false;
        }

        private void Combo_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            OK.IsEnabled = !string.IsNullOrWhiteSpace(Combo.SelectedValue.ToString());
        }
    }
}