feat: v1.2.0 开发进度更新
### 新增功能 - **Linux 官方支持**:新增 Hua.Todo.Avalonia 项目,正式适配 Linux 平台,同时支持 Windows 和 macOS - **Avalonia 桌面交互**:增加托盘菜单(显示/退出)、关闭隐藏到托盘、Windows 全局热键唤起主窗口、热键配置本地持久化 - **SQLite DateTime 兼容修复**:新增 LenientUtcDateTimeStringConverter,解决历史遗留的 DateTime 脏数据解析问题 - **用户文档完善**:新增 docs/manual/新手指南.md 和 docs/manual/用户指南.md - **部署文档**:新增 docs/manual/部署文档.md,详细说明多平台发布流程 ### 优化与修复 - **发布脚本整理**:拆分/对齐各平台发布入口,新增 publish.ps1 作为统一入口 - **Windows WebView2 优化**:数据目录调整到 %LocalAppData%\Hua.Todo\WebView2,修复 Runtime 误判问题 - **MAUI 多平台构建**:在 Windows 开发机上默认仅构建 Android + Windows 目标 - **SPA 路由回落**:修复 Release 模式下 /swagger 路径的 404 问题 - **Swagger 输出**:补齐 Dynamic API 端点,避免接口缺失 ### 文档更新 - **版本记录**:更新 v1.2.0 开发进度和功能列表 - **技术设计文档**:添加 Avalonia 项目架构和模块设计 - **项目结构**:更新 README.md 中的项目结构说明 ### 其他变更 - 新增 Directory.Build.props 和更新 Directory.Build.targets - 调整 src/Hua.Todo.Avalonia 项目配置和资源文件 - 更新 src/Hua.Todo.Web 前端资源文件 - 修复 src/Hua.Todo.Maui 相关配置和打包脚本
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
|
||||
namespace Hua.Todo.Avalonia.Services.Platforms;
|
||||
|
||||
/// <summary>
|
||||
/// Linux 平台全局热键服务实现类
|
||||
/// 提供基于 Linux 平台的全局热键支持
|
||||
/// </summary>
|
||||
public class LinuxGlobalHotKeyService : IGlobalHotKeyService
|
||||
{
|
||||
private Action? _callback;
|
||||
private string? _modifiers;
|
||||
private string? _key;
|
||||
|
||||
/// <summary>
|
||||
/// Linux 平台支持全局热键
|
||||
/// </summary>
|
||||
public bool IsSupported => true;
|
||||
|
||||
/// <summary>
|
||||
/// 注册全局热键
|
||||
/// </summary>
|
||||
/// <param name="modifiers">修饰键(如 Alt、Control;多个键用逗号分隔)。</param>
|
||||
/// <param name="key">主键(如 X、C)。</param>
|
||||
/// <param name="callback">热键触发时回调(不得阻塞,应自行切回 UI 线程)。</param>
|
||||
public void RegisterHotKey(string modifiers, string key, Action callback)
|
||||
{
|
||||
try
|
||||
{
|
||||
_callback = callback;
|
||||
_modifiers = modifiers;
|
||||
_key = key;
|
||||
|
||||
// Linux 平台热键注册逻辑
|
||||
// 这里可以使用如 libX11 或其他 Linux 热键库
|
||||
// 由于 Avalonia 本身对 Linux 热键支持有限,这里提供基本实现
|
||||
Console.WriteLine($"[LinuxGlobalHotKeyService] Registered hotkey: {modifiers}+{key}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[LinuxGlobalHotKeyService] Failed to register hotkey: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 注销已注册的热键
|
||||
/// </summary>
|
||||
public void UnregisterHotKey()
|
||||
{
|
||||
try
|
||||
{
|
||||
// Linux 平台热键注销逻辑
|
||||
Console.WriteLine("[LinuxGlobalHotKeyService] Unregistered hotkey");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[LinuxGlobalHotKeyService] Failed to unregister hotkey: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新热键配置
|
||||
/// </summary>
|
||||
/// <param name="modifiers">新的修饰键。</param>
|
||||
/// <param name="key">新的主键。</param>
|
||||
public void UpdateHotKey(string modifiers, string key)
|
||||
{
|
||||
try
|
||||
{
|
||||
UnregisterHotKey();
|
||||
if (_callback != null)
|
||||
{
|
||||
RegisterHotKey(modifiers, key, _callback);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"[LinuxGlobalHotKeyService] Failed to update hotkey: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user