
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.WinForms;
using System;
using System.Windows.Forms;

namespace AIProofread.Controls
{
    public partial class ProofreadMainControl : UserControl
    {
        public ProofreadMainControl()
        {
            InitializeComponent();
            Bridge.InitWebEnvAsync("main", web);
            //this.minWidth = 420 * LabelWidth() / 42;
            //this.MinimumSize = new System.Drawing.Size(this.minWidth, 0);
        }
        private bool isShowingErrorPage = false;
        public void WebView2NavigationCompleted(object sender, CoreWebView2NavigationCompletedEventArgs e)
        {
            if (isShowingErrorPage)
            {
                return;
            }
            if (e.IsSuccess)
            {
                isShowingErrorPage = false;
                return;
            }

            isShowingErrorPage = true;
            string errorPageHtml = @"
                <html>
                <head>
                    <title>加载失败</title>
                    <style>
                        body { font-family: sans-serif; text-align: center; padding-top: 50px;  user-select: none; }
                        h1 { color: #d00; }
                    </style>
                </head>
                <body oncontextmenu='return false;'>
                    <h1>页面加载失败</h1>
                    <p>请检查您的网络连接或稍后再试。</p>
                    <a href="+ "\"javascript:window.chrome.webview.postMessage('reload');\"" + @">重新加载</a>
                </body>
                </html>";
            (sender as WebView2).CoreWebView2.NavigateToString(errorPageHtml);

        }


        private void ProofreadMainControl_Load(object sender, EventArgs e)
        {
            this.web.NavigationCompleted += WebView2NavigationCompleted;
            this.web.WebMessageReceived += (s, ex) =>
            {
                if (ex.TryGetWebMessageAsString() == "reload")
                {
                    isShowingErrorPage = false;
                    web.Source = new Uri(Config.WebPath("correct"));
                }
            };
            this.web.Source = new Uri(Config.WebPath("correct" ));
            //this.SizeChanged += ProofreadMainControl_SizeChanged;
        }

        private void ProofreadMainControl_SizeChanged(object sender, EventArgs e)
        {
            //if(this.minWidth > 0 && this.Width < this.minWidth)
            //{
            //    SendKeys.Send("{ESC}");
            //    this.Width = this.minWidth;
            //}
        }
        public int LabelWidth()
        {
            return label1.Width;
        }
        public void ResetWeb()
        {
            if (!this.web.IsDisposed)
            {
                this.web.Stop();
                this.web.Dispose();
            }
        }
    }
}
