using AccompanyingAssistant;

public class WindowManager {
    private MainForm? mainForm = null;
    private Thread? uiThread = null;

    public void ShowMain() {
        if (mainForm == null || mainForm.IsDisposed) {
            uiThread = new Thread(() => {
                ApplicationConfiguration.Initialize();
                mainForm = new MainForm();
                Application.Run(mainForm);
            });
            uiThread.SetApartmentState(ApartmentState.STA);
            uiThread.IsBackground = true;
            uiThread.Start();

            // 等待窗体创建完毕（简单阻塞）
            while (mainForm == null || !mainForm.IsHandleCreated) {
                Thread.Sleep(10);
            }
        } else {
            mainForm.Invoke(() => mainForm.Show());
        }
    }

    public void ShowBubble(string message) {
        ShowMain();

        // 此处保证 ShowMessage 在 UI 线程上执行
        if (mainForm != null && mainForm.IsHandleCreated) {
            mainForm.Invoke(() => mainForm.ShowMessage(message));
        }
    }

    public void CloseBubble() {
        if (mainForm != null && mainForm.IsHandleCreated) {
            mainForm.Invoke(() => mainForm.CloseBubble());
        }
    }

    public void CloseMain() {
        if (mainForm != null && mainForm.IsHandleCreated) {
            mainForm.Invoke(() => {
                mainForm.Close();
                mainForm.Dispose();
                mainForm = null;
            });
        }
    }
}
