using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using SparkClient.Model.Helper;

namespace SparkClient.Views.Dialog;

public partial class MessageBox : Window
{
    public MessageBox()
    {
        InitializeComponent();
        WindowStartupLocation = WindowStartupLocation.CenterScreen; 
        
    }
    private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (e.ButtonState == MouseButtonState.Pressed)
        {
            this.DragMove();
        }
    }

    private int _showType = -1;
    private MessageBoxResult _result = MessageBoxResult.None;
    public void Show(String message, String btnStr = "")
    {
        BorderInput.Visibility = Visibility.Hidden;
        Grid.SetRow(GridButtons, 2);
        CancelButton.Visibility = Visibility.Hidden;
        Grid.SetColumn(ConfirmButton, 2);
        TextBlockCenterBox.Text = message;
        System.Media.SystemSounds.Asterisk.Play();
        _showType = 0;
        this.Height = 200;
        if (!string.IsNullOrWhiteSpace(btnStr))
        {
            ConfirmButtonText.Text = btnStr;
        }
        else
        {
            ConfirmButtonText.Text = MultilingualHelper.getString("DialogConfirmDefaultTitle");
        }
        this.ShowDialog();
        
    }
    public MessageBoxResult ShowAsk(String message, String confirmButtonTitle = "", String cancelButtonTitle ="")
    {
        BorderInput.Visibility = Visibility.Hidden;
        Grid.SetRow(GridButtons, 2);
        _showType = 1;
        this.Height = 250;
        System.Media.SystemSounds.Asterisk.Play();
        TextBlockCenterBox.Text = message;
        if (!string.IsNullOrWhiteSpace(confirmButtonTitle) && !string.IsNullOrWhiteSpace(cancelButtonTitle))
        {
            ConfirmButtonText.Text = confirmButtonTitle;
            CancelButtonText.Text = cancelButtonTitle;
        }
        else
        {
            ConfirmButtonText.Text = MultilingualHelper.getString("DialogConfirmDefaultTitle");
            CancelButtonText.Text = MultilingualHelper.getString("DialogCancelDefaultTitle");
        }
        this.ShowDialog();

        return _result;
    }
    //
    public  MessageBoxResult ShowInput(String message, out String inputStr , String confirmButtonTitle = "", String cancelButtonTitle ="")
    {
        _showType = 2;
        this.Height = 300;
        TextBlockCenterBox.Text = message;
        if (!string.IsNullOrWhiteSpace(confirmButtonTitle) && !string.IsNullOrWhiteSpace(cancelButtonTitle))
        {
            ConfirmButtonText.Text = confirmButtonTitle;
            CancelButtonText.Text = cancelButtonTitle;
        }
        else
        {
            ConfirmButtonText.Text = MultilingualHelper.getString("DialogConfirmDefaultTitle");
            CancelButtonText.Text = MultilingualHelper.getString("DialogCancelDefaultTitle");
        }
        this.ShowDialog();
        
        inputStr = TextBoxInput.Text;
        return _result;
    }
    private void CloseButton_OnClick(object sender, RoutedEventArgs e)
    {
        _result = MessageBoxResult.None;
        this.Close();
    }

    private void ConfirmButton_OnClick(object sender, RoutedEventArgs e)
    {
        if (_showType == 0)
        {
            this.Close();
        }else if (_showType == 1)
        {
            _result = MessageBoxResult.OK;
            this.Close();
        }else if (_showType == 2)
        {
            if (string.IsNullOrWhiteSpace(TextBoxInput.Text))
            {
                BorderInput.BorderBrush = Brushes.Red;
                return;
            }
            else
            {
                _result = MessageBoxResult.OK;
                this.Close();
            }
        }
    }

    private void CancelButton_OnClick(object sender, RoutedEventArgs e)
    {
        _result = MessageBoxResult.Cancel;
        this.Close();
    }
}