refactor:规范代码格式和注释

This commit is contained in:
ShaoHua
2026-04-06 22:59:16 +08:00
parent 758f6772c6
commit d00a907da0
34 changed files with 1095 additions and 200 deletions
+43 -13
View File
@@ -4,14 +4,20 @@ using Hua.Todo.Maui.Services;
namespace Hua.Todo.Maui.Views
{
/// <summary>
/// 应用程序主页面。
/// 该页面承载 WebView(前端 UI),并通过 JavaScript 注入与事件机制实现与 MAUI 的通讯。
/// </summary>
public partial class MainPage : ContentPage
{
private readonly AppSettings _appSettings;
private readonly IEmbeddedWebServerService? _webServer;
#if WINDOWS
private Platforms.Windows.WindowsKeyboardHandler? _keyboardHandler;
#endif
/// <summary>
/// 创建 <see cref="MainPage"/>。
/// </summary>
/// <param name="appSettings">应用配置。</param>
/// <param name="webServer">嵌入式 Web 服务器服务(在不同平台可能为不同实现)。</param>
public MainPage(AppSettings appSettings, IEmbeddedWebServerService webServer)
{
InitializeComponent();
@@ -23,7 +29,10 @@ namespace Hua.Todo.Maui.Views
SetupKeyboardHandler();
}
/// <summary>
/// 设置 WebView 数据源。
/// 当启用嵌入式服务器且使用静态文件时,直接指向本地服务器;否则使用配置的前端 URL。
/// </summary>
private void SetupWebViewSource()
{
if (_appSettings.WebServer.IsUsingStatic)
@@ -38,27 +47,32 @@ namespace Hua.Todo.Maui.Views
MainWebView.Source = NormalizeUrl(_appSettings.WebServer.ForEndUrl);
}
/// <summary>
/// 设置键盘处理器(平台差异通过分部类实现)。
/// </summary>
private void SetupKeyboardHandler()
{
#if WINDOWS
_keyboardHandler = new Platforms.Windows.WindowsKeyboardHandler();
_keyboardHandler.EscKeyPressed += OnEscKeyPressed;
_keyboardHandler.Start();
#endif
PlatformSetupKeyboardHandler();
}
/// <summary>
/// 当 Esc 键按下时的回调
/// </summary>
private void OnEscKeyPressed(object? sender, EventArgs e)
{
var window = Microsoft.Maui.Controls.Application.Current?.Windows.FirstOrDefault();
if (window != null)
{
#if WINDOWS
var windowService = new Platforms.Windows.WindowsWindowService();
windowService.MinimizeWindow(window);
#endif
PlatformOnEscKeyPressed(window);
}
}
/// <summary>
/// 设置 WebView 通讯逻辑。
/// 约定:
/// - 通过 window.__API_BASE_URL__ 注入后端 API 基地址(仅在嵌入式服务器运行时)
/// - 通过自定义事件在 Web 与 MAUI 间传递热键配置等数据
/// </summary>
private void SetupWebViewCommunication()
{
MainWebView.Navigated += async (s, e) =>
@@ -76,6 +90,7 @@ namespace Hua.Todo.Maui.Views
await MainWebView.EvaluateJavaScriptAsync($"window.__API_BASE_URL__ = '{apiBase}';");
}
// 注入前端与 MAUI 的通讯桥(事件名/字段名属于协议的一部分,修改需同步前端)。
await MainWebView.EvaluateJavaScriptAsync(@"
window.mauiInterop = {
onHotKeyConfigUpdated: null,
@@ -100,6 +115,10 @@ namespace Hua.Todo.Maui.Views
};
}
/// <summary>
/// 规格化 URL(针对 Android 模拟器处理 localhost)。
/// Android 模拟器中 localhost 指向模拟器自身,需要替换为 10.0.2.2 才能访问宿主机服务。
/// </summary>
private static string NormalizeUrl(string url)
{
if (string.IsNullOrWhiteSpace(url)) return url;
@@ -116,5 +135,16 @@ namespace Hua.Todo.Maui.Views
return url;
}
// 平台特定分部方法声明(实现位于 Platforms/* 目录)
/// <summary>
/// 平台特定的键盘处理器初始化。
/// </summary>
partial void PlatformSetupKeyboardHandler();
/// <summary>
/// 平台特定的 Esc 键处理逻辑。
/// </summary>
/// <param name="window">当前窗口。</param>
partial void PlatformOnEscKeyPressed(Window window);
}
}