diff --git a/AIProofread/Bridge.cs b/AIProofread/Bridge.cs index 4db9e1e..edcea8f 100644 --- a/AIProofread/Bridge.cs +++ b/AIProofread/Bridge.cs @@ -1,10 +1,16 @@ using Microsoft.Web.WebView2.Core; using Microsoft.Web.WebView2.WinForms; +using System; using System.Collections.Generic; using System.Runtime.InteropServices; namespace AIProofread { + public enum BridgeEvent + { + LoginSuccess + } + public delegate void BridgeEventHandler(object sender, EventArgs e); [ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] public class Bridge @@ -13,12 +19,49 @@ namespace AIProofread private static readonly Dictionary webViewDict = new Dictionary(); + private static readonly Dictionary> eventHandlers = new Dictionary>(); public void showDialog(string message) { System.Windows.Forms.MessageBox.Show(message); } + /// + /// 添加事件 + /// + /// + /// + public static void AddEventHandler(BridgeEvent eventName, BridgeEventHandler handler) + { + if (!eventHandlers.ContainsKey(eventName)) + { + eventHandlers.Add(eventName, new List()); + } + eventHandlers[eventName].Add(handler); + } + public static void RemoveEventHandler(BridgeEvent eventName, BridgeEventHandler handler) + { + if (eventHandlers.ContainsKey(eventName)) + { + eventHandlers[eventName].Remove(handler); + } + } + + /// + /// 登录成功后通知后端 + /// + public void loginSuccess(string loginToken) + { + showDialog(string.Format("登录成功,token:{0}", loginToken)); + if (eventHandlers.ContainsKey(BridgeEvent.LoginSuccess)) + { + foreach (var eventHandler in eventHandlers[BridgeEvent.LoginSuccess]) + { + eventHandler(null, null); + } + } + } + // 获取文档所有文本数据 public string getAllText() { diff --git a/AIProofread/Controls/FormLogin.cs b/AIProofread/Controls/FormLogin.cs index 22764ce..16e5039 100644 --- a/AIProofread/Controls/FormLogin.cs +++ b/AIProofread/Controls/FormLogin.cs @@ -5,15 +5,25 @@ namespace AIProofread.Controls { public partial class FormLogin : Form { + + public event EventHandler OnLoginCompleted; public FormLogin() { InitializeComponent(); Bridge.InitWebEnvAsync("login", web); + Bridge.AddEventHandler(BridgeEvent.LoginSuccess, OnLoginSuccess); + } + + private void OnLoginSuccess(object sender, EventArgs e) + { + OnLoginCompleted?.Invoke(this, e); } private void FormLogin_Load(object sender, EventArgs e) { this.web.Source = new Uri(Config.WebPath("#login")); } + + } } diff --git a/AIProofread/Properties/Resources.Designer.cs b/AIProofread/Properties/Resources.Designer.cs index 5c62c1f..38bf5df 100644 --- a/AIProofread/Properties/Resources.Designer.cs +++ b/AIProofread/Properties/Resources.Designer.cs @@ -39,7 +39,7 @@ namespace AIProofread.Properties { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WordAddInTest2024.Properties.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AIProofread.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/AIProofread/Ribbon1.cs b/AIProofread/Ribbon1.cs index f0edb66..c1e4587 100644 --- a/AIProofread/Ribbon1.cs +++ b/AIProofread/Ribbon1.cs @@ -14,29 +14,41 @@ namespace AIProofread private FormLogin formLogin; private void Ribbon1_Load(object sender, RibbonUIEventArgs e) { - formLogin = new FormLogin(); btnLogin.Label = "用户\n登录"; btnLogout.Label = "退出\n登录"; } + + // 处理是否登录的展示 private void ToggleLogin() { - if(!IS_LOGIN) - { - if(formLogin == null || formLogin.IsDisposed) { formLogin = new FormLogin(); } - formLogin.Show(); - } - IS_LOGIN = !IS_LOGIN; gpLogin.Visible = !IS_LOGIN; gpLogout.Visible = IS_LOGIN; } - private void btnLogin_Click(object sender, RibbonControlEventArgs e) + // 当登录成功后的回调处理 + private void FormLogin_OnLoginCompleted(object sender, EventArgs e) { + IS_LOGIN = true; ToggleLogin(); + formLogin.Close(); + formLogin = null; } + // 弹出登录窗口 + private void btnLogin_Click(object sender, RibbonControlEventArgs e) + { + if (formLogin == null || formLogin.IsDisposed) + { + formLogin = new FormLogin(); + formLogin.OnLoginCompleted += FormLogin_OnLoginCompleted; + } + formLogin.ShowDialog(); + } + + // 注销登录 private void btnLogout_Click(object sender, RibbonControlEventArgs e) { + IS_LOGIN = false; ToggleLogin(); } diff --git a/AIProofread/obj/Debug/AIProofread.csproj.AssemblyReference.cache b/AIProofread/obj/Debug/AIProofread.csproj.AssemblyReference.cache index 3a9088c..cf6de54 100644 Binary files a/AIProofread/obj/Debug/AIProofread.csproj.AssemblyReference.cache and b/AIProofread/obj/Debug/AIProofread.csproj.AssemblyReference.cache differ diff --git a/AIProofread/obj/Debug/AIProofread.csproj.GenerateResource.cache b/AIProofread/obj/Debug/AIProofread.csproj.GenerateResource.cache index 5ffc4ba..73e0d7e 100644 Binary files a/AIProofread/obj/Debug/AIProofread.csproj.GenerateResource.cache and b/AIProofread/obj/Debug/AIProofread.csproj.GenerateResource.cache differ diff --git a/AIProofread/obj/Debug/AIProofread.dll b/AIProofread/obj/Debug/AIProofread.dll index 3e53911..b3a4efe 100644 Binary files a/AIProofread/obj/Debug/AIProofread.dll and b/AIProofread/obj/Debug/AIProofread.dll differ diff --git a/AIProofread/obj/Debug/AIProofread.pdb b/AIProofread/obj/Debug/AIProofread.pdb index dd26e3f..54fee31 100644 Binary files a/AIProofread/obj/Debug/AIProofread.pdb and b/AIProofread/obj/Debug/AIProofread.pdb differ diff --git a/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..2e2934c Binary files /dev/null and b/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index d6fd921..c593ad4 100644 Binary files a/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/AIProofread/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/AIProofread/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/AIProofread/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll index 87be4eb..f292693 100644 Binary files a/AIProofread/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll and b/AIProofread/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ