本文档解释了 Shadowsocks Windows 的主要用户界面元素,重点关注系统托盘图标和上下文菜单。这些组件是用户与应用程序交互的主要界面。有关服务器配置 UI 的信息,请参阅服务器配置 UI,有关日志记录功能,请参阅日志记录和流量监控。
Shadowsocks Windows 主要作为一个系统托盘应用程序运行。启动后,应用程序会在 Windows 系统托盘中显示一个图标,提供状态信息和功能访问。
系统托盘图标使用不同的颜色和叠加层来向用户传达应用程序的状态
图标大小会根据屏幕 DPI 设置自动调整,以保持适当的可见性和比例。
来源:shadowsocks-csharp/View/MenuViewController.cs125-226 shadowsocks-csharp/View/MenuViewController.cs313-337
托盘图标还显示包含信息的工具提示文本
托盘图标是根据应用程序状态动态生成的
来源:shadowsocks-csharp/View/MenuViewController.cs125-241
上下文菜单提供对所有应用程序功能的访问。它在应用程序启动时动态构建,并在配置更改时更新。
上下文菜单组织成几个逻辑部分
来源:shadowsocks-csharp/View/MenuViewController.cs257-309
每个菜单项都关联有事件处理程序,当被点击时会执行相应的操作
系统代理菜单:控制系统代理的配置方式
服务器菜单:管理服务器配置
PAC 菜单:控制代理自动配置设置
系统集成选项:
帮助与支持:
菜单项使用处理本地化的辅助方法创建
CreateMenuItem(string text, EventHandler click)
CreateMenuGroup(string text, MenuItem[] items)
菜单状态会在配置更改时更新,项目会被勾选/取消勾选以反映当前设置。
来源:shadowsocks-csharp/View/MenuViewController.cs246-256 shadowsocks-csharp/View/MenuViewController.cs350-366
系统托盘菜单提供对多个对话框窗口的访问,用于管理应用程序的各个方面
主要对话框窗口包括
配置表单:用于编辑服务器配置
日志表单:用于查看应用程序日志
WPF 窗口:用于各种配置任务
来源:shadowsocks-csharp/View/MenuViewController.cs368-423 shadowsocks-csharp/View/MenuViewController.cs484-535 shadowsocks-csharp/View/MenuViewController.cs749-770
MenuViewController 通过事件与 ShadowsocksController 通信。这种事件驱动的架构确保了 UI 和核心功能之间的清晰分离。
UI 监听的来自控制器的关键事件
状态更改事件:
EnableStatusChanged:代理启用/禁用时EnableGlobalChanged:切换全局/PAC 模式时ShareOverLANStatusChanged:局域网共享设置更改时ConfigChanged:配置修改时UI 更新事件:
TrafficChanged:发生网络流量时(更新流量指示器)VerboseLoggingStatusChanged:日志级别更改时ShowPluginOutputChanged:插件输出设置更改时文件操作事件:
PACFileReadyToOpen:PAC 文件准备好打开时UserRuleFileReadyToOpen:用户规则文件准备好打开时更新事件:
UpdatePACFromGeositeCompleted:PAC 更新完成时UpdatePACFromGeositeError:PAC 更新遇到错误时来源:shadowsocks-csharp/View/MenuViewController.cs77-106 shadowsocks-csharp/Controller/ShadowsocksController.cs70-89
来源:shadowsocks-csharp/View/MenuViewController.cs444-458
代理模式切换工作流程处理代理状态的变化
来源:shadowsocks-csharp/View/MenuViewController.cs599-647 shadowsocks-csharp/Controller/ShadowsocksController.cs312-329
托盘图标颜色根据当前应用程序状态和 Windows 主题设置确定
| 代理状态 | Windows 主题 | 图标颜色 |
|---|---|---|
| 全局模式 | 任意 | 蓝光 |
| PAC 模式 | 细体 | 黑色/深色 |
| PAC 模式 | 深色 | 白色 |
| 已禁用 | 细体 | 深灰色 |
| 已禁用 | 深色 | 浅灰色 |
应用程序检测 Windows 10 主题设置,以提供在浅色和深色任务栏主题中都可见的适当图标颜色。
来源:shadowsocks-csharp/View/MenuViewController.cs193-226
托盘图标使用叠加系统显示实时流量指示器
TrafficChanged 事件当代理正在积极传输数据时,这会为用户提供视觉反馈。
来源:shadowsocks-csharp/View/MenuViewController.cs313-337 shadowsocks-csharp/Controller/ShadowsocksController.cs620-659
服务器菜单是根据当前配置动态生成的
这允许在服务器和策略之间快速切换。
来源:shadowsocks-csharp/View/MenuViewController.cs653-722
应用程序使用系统托盘中的气球提示(Toast 通知)来传达重要信息
气球提示是非侵入性的,用户可以轻松将其关闭。
来源: shadowsocks-csharp/View/MenuViewController.cs428-442 shadowsocks-csharp/View/MenuViewController.cs908-919
UI 元素通过 I18N 系统支持本地化
I18N.GetString() 方法传递有关国际化的更多信息,请参阅 国际化 页面。