feat: 实现命令面板、颜色取色、JSON格式化和系统信息功能
- 重构项目架构,采用四层架构模式 (Command → Service → Platform → Utils) - 实现命令面板功能,支持快捷搜索和特征分类 - 添加颜色取色功能,支持屏幕像素颜色获取 - 添加JSON格式化功能,支持JSON格式化和压缩 - 添加系统信息功能,显示操作系统和硬件信息 - 移除旧的状态文档和无用配置文件
This commit is contained in:
81
src-tauri/src/services/window_service.rs
Normal file
81
src-tauri/src/services/window_service.rs
Normal file
@@ -0,0 +1,81 @@
|
||||
//! 窗口服务
|
||||
//!
|
||||
//! 提供窗口管理相关的业务逻辑
|
||||
|
||||
use tauri::Window;
|
||||
use crate::error::{AppError, AppResult};
|
||||
|
||||
/// 窗口服务
|
||||
///
|
||||
/// 提供窗口显示、隐藏和切换等管理功能
|
||||
pub struct WindowService;
|
||||
|
||||
impl WindowService {
|
||||
/// 切换窗口显示/隐藏
|
||||
///
|
||||
/// 根据窗口当前状态切换显示或隐藏
|
||||
///
|
||||
/// # 参数
|
||||
///
|
||||
/// * `window` - Tauri 窗口引用
|
||||
///
|
||||
/// # 行为
|
||||
///
|
||||
/// - 如果窗口当前可见,则隐藏窗口
|
||||
/// - 如果窗口当前隐藏,则显示窗口并聚焦
|
||||
///
|
||||
/// # 错误
|
||||
///
|
||||
/// 窗口操作失败时返回 `AppError::WindowOperationFailed`
|
||||
pub fn toggle_window(window: &Window) -> AppResult<()> {
|
||||
let is_visible = window.is_visible()
|
||||
.map_err(|e| AppError::WindowOperationFailed(e.to_string()))?;
|
||||
|
||||
if is_visible {
|
||||
Self::hide_window(window)?;
|
||||
} else {
|
||||
Self::show_window(window)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// 隐藏窗口
|
||||
///
|
||||
/// 将窗口隐藏,使其不再可见
|
||||
///
|
||||
/// # 参数
|
||||
///
|
||||
/// * `window` - Tauri 窗口引用
|
||||
///
|
||||
/// # 错误
|
||||
///
|
||||
/// 窗口操作失败时返回 `AppError::WindowOperationFailed`
|
||||
pub fn hide_window(window: &Window) -> AppResult<()> {
|
||||
window.hide()
|
||||
.map_err(|e| AppError::WindowOperationFailed(e.to_string()))
|
||||
}
|
||||
|
||||
/// 显示窗口并聚焦
|
||||
///
|
||||
/// 显示窗口并将其设置为焦点窗口
|
||||
///
|
||||
/// # 参数
|
||||
///
|
||||
/// * `window` - Tauri 窗口引用
|
||||
///
|
||||
/// # 行为
|
||||
///
|
||||
/// - 显示窗口
|
||||
/// - 将窗口设置为焦点窗口,用户可以直接与之交互
|
||||
///
|
||||
/// # 错误
|
||||
///
|
||||
/// 窗口操作失败时返回 `AppError::WindowOperationFailed`
|
||||
pub fn show_window(window: &Window) -> AppResult<()> {
|
||||
window.show()
|
||||
.and_then(|_| window.set_focus())
|
||||
.map_err(|e| AppError::WindowOperationFailed(e.to_string()))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user