Files
tauri-meeting/src-tauri/src/window/commands.rs

38 lines
1.6 KiB
Rust
Raw Normal View History

use crate::window::create_float_list_window::create_float_list_window_impl;
use crate::window::create_main_window::create_main_window_impl;
use crate::window::create_popup_window::create_popup_window_impl;
use crate::window::derive::TargetLocation;
use tauri::{AppHandle, Window};
/// 创建悬浮列表窗口
#[tauri::command]
pub async fn create_float_list_window(app: AppHandle) -> Result<String, String> {
create_float_list_window_impl(std::sync::Arc::new(app)).await.map(|_| "success".to_string())
}
/// 创建弹出框窗口
#[tauri::command]
pub async fn create_popup_window(app: AppHandle, window: Window) -> Result<String, String> {
let current_position_physical = window.outer_position().map_err(|e| format!("获取窗口位置失败: {}", e))?;
let current_size_physical = window.outer_size().map_err(|e| format!("获取窗口大小失败: {}", e))?;
// 获取缩放因子
let scale_factor = window.scale_factor().map_err(|e| format!("获取缩放因子失败: {}", e))?;
// 转换为逻辑位置和大小
let current_position = current_position_physical.to_logical::<i32>(scale_factor);
let current_size = current_size_physical.to_logical::<i32>(scale_factor);
let target = TargetLocation {
x: current_position.x,
y: current_position.y,
width: current_size.width as u32,
height: current_size.height as u32,
};
create_popup_window_impl(&app, &target, "auto").await.map(|_| "success".to_string())
}
#[tauri::command]
pub async fn create_main_window(app: AppHandle) -> Result<String, String> {
create_main_window_impl(&app).await.map(|_| "success".to_string())
}