Skip to main content

zerolaunch_plugin_api/platform/
services.rs

1//! PlatformServices — 平台实现的统一集合(平台端口)。
2//!
3//! 只收纳 OS 特定、由平台 crate(platform-windows)提供实现的服务 trait 对象;
4//! 宿主级服务(model/storage/timer/parameter_resolver/app_resource/icon_cache 等)
5//! 与 OS 无关,不属于平台面,留在宿主侧。
6//!
7//! 由平台 crate 的工厂函数(如 platform-windows 的 `windows_platform_services`)
8//! 一次性构造并注入宿主;测试通过 mock 桩构造。能力集(PlatformCapabilities)
9//! 与实现集合在同一模块声明;新增平台能力时须同步扩展两者(同步链见
10//! .omp/rules/add-platform-capability.md)。
11
12use std::sync::Arc;
13
14use super::capabilities::PlatformCapabilities;
15use crate::services::app::app_enumerator::AppEnumerator;
16use crate::services::app::app_launcher::AppLauncher;
17use crate::services::autostart::AutoStartManager;
18use crate::services::clipboard::ClipboardManager;
19use crate::services::focus_monitor::FocusMonitor;
20use crate::services::hotkey::HotkeyManager;
21use crate::services::icon::icon_extractor::IconExtractor;
22use crate::services::installation_monitor::InstallationMonitor;
23use crate::services::parameter::provider::SystemParameterProvider;
24use crate::services::path::path_resolver::PathResolver;
25use crate::services::shell::lnk_resolver::LnkResolver;
26use crate::services::shell::resource_loader::ResourceLoader;
27use crate::services::shell::ShellExecutor;
28use crate::services::theme::ThemeProvider;
29use crate::services::window::{WindowManager, WindowPositioner};
30
31/// 平台实现的统一集合(平台端口)。
32/// 字段为平台服务 trait 对象;组装权归各平台 crate 的工厂,宿主按端口整体注入。
33pub struct PlatformServices {
34    /// 平台支持的能力集合(与实现集合在同一模块声明,新增能力须同步扩展)。
35    pub capabilities: PlatformCapabilities,
36    /// 图标提取器。
37    pub icon_extractor: Arc<dyn IconExtractor>,
38    /// Shell 执行器(打开/提权/执行命令)。
39    pub shell_executor: Arc<dyn ShellExecutor>,
40    /// 窗口管理器(按进程名/标题/PID 激活窗口)。
41    pub window_manager: Arc<dyn WindowManager>,
42    /// 窗口位置计算器。
43    pub window_positioner: Arc<dyn WindowPositioner>,
44    /// 路径解析器(KnownPath → 实际文件系统路径)。
45    pub path_resolver: Arc<dyn PathResolver>,
46    /// 应用枚举器(发现已安装应用)。
47    pub app_enumerator: Arc<dyn AppEnumerator>,
48    /// 应用启动器。
49    pub app_launcher: Arc<dyn AppLauncher>,
50    /// Lnk 快捷方式解析器。
51    pub lnk_resolver: Arc<dyn LnkResolver>,
52    /// 资源加载器(desktop.ini 本地化名称解析等)。
53    pub resource_loader: Arc<dyn ResourceLoader>,
54    /// 剪贴板系统参数提供者(`{clipboard}` 参数)。
55    pub clipboard_provider: Arc<dyn SystemParameterProvider>,
56    /// 窗口句柄系统参数提供者(`{hwnd}` 参数)。
57    pub window_handle_provider: Arc<dyn SystemParameterProvider>,
58    /// 选中文本系统参数提供者(`{selection}` 参数)。
59    pub selection_provider: Arc<dyn SystemParameterProvider>,
60    /// 开机自启动管理器。
61    pub autostart_manager: Arc<dyn AutoStartManager>,
62    /// 全局热键管理器。
63    pub hotkey_manager: Arc<dyn HotkeyManager>,
64    /// 安装监控器。
65    pub installation_monitor: Arc<dyn InstallationMonitor>,
66    /// 聚焦监控器。
67    pub focus_monitor: Arc<dyn FocusMonitor>,
68    /// 剪贴板管理器。
69    pub clipboard_manager: Arc<dyn ClipboardManager>,
70    /// 系统主题提供器。
71    pub theme_provider: Arc<dyn ThemeProvider>,
72}