using System;
using System.Drawing;
using System.Windows.Forms;
using AppStore;

namespace AppStore
{
    public class CalculatorForm : Form
    {
        private TextBox display = new TextBox();
        private double firstNumber = 0;
        private string operation = "";
        
        public CalculatorForm()
        {
            this.Text = "计算器";
            this.Size = new Size(300, 400);
            this.StartPosition = FormStartPosition.CenterScreen;
            CreateControls();
        }

        private void CreateControls()
        {
            // 显示框
            display = new TextBox();
            display.ReadOnly = true;
            display.TextAlign = HorizontalAlignment.Right;
            display.Font = new Font("Microsoft YaHei", 14);
            display.Size = new Size(260, 40);
            display.Location = new Point(20, 20);
            this.Controls.Add(display);

            // 按钮布局
            string[] buttonLabels = {
                "7", "8", "9", "/",
                "4", "5", "6", "*", 
                "1", "2", "3", "-",
                "0", ".", "=", "+"
            };

            for (int i = 0; i < buttonLabels.Length; i++)
            {
                var btn = new Button();
                btn.Text = buttonLabels[i];
                btn.Size = new Size(60, 50);
                btn.Location = new Point(20 + (i % 4) * 65, 70 + (i / 4) * 55);
                btn.Font = new Font("Microsoft YaHei", 12);
                btn.Click += ButtonClickHandler;
                this.Controls.Add(btn);
            }

            // 清除按钮
            var clearBtn = new Button();
            clearBtn.Text = "C";
            clearBtn.Size = new Size(260, 40);
            clearBtn.Location = new Point(20, 300);
            clearBtn.Font = new Font("Microsoft YaHei", 12);
            clearBtn.Click += (s, e) => {
                display.Text = "";
                firstNumber = 0;
                operation = "";
            };
            this.Controls.Add(clearBtn);
        }

        private void ButtonClickHandler(object sender, EventArgs e)
        {
            var button = sender as Button;
            if (button == null) return;

            switch (button.Text)
            {
                case "+":
                case "-":
                case "*":
                case "/":
                    if (!string.IsNullOrEmpty(display.Text))
                    {
                        firstNumber = double.Parse(display.Text);
                        operation = button.Text;
                        display.Text = "";
                    }
                    break;
                    
                case "=":
                    if (!string.IsNullOrEmpty(operation) && !string.IsNullOrEmpty(display.Text))
                    {
                        double secondNumber = double.Parse(display.Text);
                        double result = 0;
                        
                        try
                        {
                            result = operation switch
                            {
                                "+" => AppStore.Calculator.Add(firstNumber, secondNumber),
                                "-" => AppStore.Calculator.Subtract(firstNumber, secondNumber),
                                "*" => AppStore.Calculator.Multiply(firstNumber, secondNumber),
                                "/" => AppStore.Calculator.Divide(firstNumber, secondNumber),
                                _ => 0
                            };
                            
                            display.Text = result.ToString();
                        }
                        catch (DivideByZeroException)
                        {
                            MessageBox.Show("除数不能为零", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        operation = "";
                    }
                    break;
                    
                default:
                    display.Text += button.Text;
                    break;
            }
        }
    }
}
