using FCM0000.Mail;
using FCOMMON;
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.WinForms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Project.Dialog
{
    public partial class fDashboard : fBase
    {
        private WebView2 webView;
        private Web.MachineBridge _machineBridge;

        public fDashboard()
        {
            InitializeComponent();
            InitializeWebView2();
            _machineBridge = new Web.MachineBridge(this);
        }

        bool loadok = false;
        public void RefreshView()
        {
            if (loadok)
                webView.Reload();
        }
        private void InitializeWebView2()
        {
            // 수동으로 WebView2 컨트롤 생성
            this.webView = new WebView2();

            // 기본 속성 설정
            this.webView.CreationProperties = null;
            this.webView.DefaultBackgroundColor = Color.White;
            this.webView.Dock = DockStyle.Fill;
            this.webView.Location = new Point(0, 0);
            this.webView.Name = "webView21";
            this.webView.Size = new Size(800, 600);
            this.webView.TabIndex = 0;
            this.webView.ZoomFactor = 1D;

            // 폼에 추가
            this.Controls.Add(this.webView);

            // 비동기 초기화
            InitializeAsync();
        }
        private async void InitializeAsync()
        {
            try
            {
                // Fixed Version 경로 설정
                string runtimePath = Path.Combine(Application.StartupPath, "WebView2Runtime");

                if (Directory.Exists(runtimePath))
                {
                    var env = await CoreWebView2Environment.CreateAsync(runtimePath);
                    await this.webView.EnsureCoreWebView2Async(env);
                }
                else
                {
                    // 시스템에 설치된 WebView2 사용
                    await this.webView.EnsureCoreWebView2Async();
                }

                var wwwroot = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Web", "dist");
                webView.CoreWebView2.SetVirtualHostNameToFolderMapping(
              "hmi.local",
              wwwroot,
              CoreWebView2HostResourceAccessKind.Allow);


                // 2. Inject Native Object
                webView.CoreWebView2.AddHostObjectToScript("machine", _machineBridge);

                Pub.WebServiceURL = "http://hmi.local";



                RefreshPage();
                label1.Visible = false;
                loadok = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show($"WebView2 초기화 실패: {ex.Message}");
            }
        }

        /// <summary>
        /// 로그인 상태에 따라서 페이지를 전환한다
        /// </summary>
        public void RefreshPage()
        {
            webView.Source = new Uri($"{Pub.WebServiceURL}/index.html");
            //if (FCOMMON.info.Login.no.isEmpty())
            //webView.Source = new Uri($"{Pub.WebServiceURL}/login.html");
           // else
             //   webView.Source = new Uri($"{Pub.WebServiceURL}/DashBoard/index.html");
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            EnsureVisibleAndUsableSize();
        }
        private void label1_Click(object sender, EventArgs e)
        {

        }
    }
}
