完善桌面端交互体验与发布检查

This commit is contained in:
Cheng Zhou
2026-06-30 22:26:34 +08:00
parent 628ff8828b
commit c923f887a0
30 changed files with 2507 additions and 141 deletions
+123 -1
View File
@@ -1,10 +1,132 @@
mod credentials;
mod updates;
use tauri::Manager;
use tauri::menu::{Menu, MenuItem, PredefinedMenuItem, Submenu};
use tauri::{Emitter, Manager, Runtime};
const DESKTOP_MENU_COMMAND_EVENT: &str = "ctms:desktop-menu-command";
fn desktop_menu<R: Runtime>(handle: &tauri::AppHandle<R>) -> tauri::Result<Menu<R>> {
Menu::with_items(
handle,
&[
&Submenu::with_items(
handle,
"文件",
true,
&[
&MenuItem::with_id(
handle,
"ctms.desktop.commandPalette",
"打开命令面板",
true,
Some("CmdOrCtrl+K"),
)?,
&MenuItem::with_id(
handle,
"ctms.desktop.serverSettings",
"服务器设置",
true,
None::<&str>,
)?,
&PredefinedMenuItem::separator(handle)?,
&PredefinedMenuItem::close_window(handle, None)?,
&PredefinedMenuItem::quit(handle, None)?,
],
)?,
&Submenu::with_items(
handle,
"编辑",
true,
&[
&PredefinedMenuItem::undo(handle, None)?,
&PredefinedMenuItem::redo(handle, None)?,
&PredefinedMenuItem::separator(handle)?,
&PredefinedMenuItem::cut(handle, None)?,
&PredefinedMenuItem::copy(handle, None)?,
&PredefinedMenuItem::paste(handle, None)?,
&PredefinedMenuItem::select_all(handle, None)?,
],
)?,
&Submenu::with_items(
handle,
"视图",
true,
&[
&MenuItem::with_id(
handle,
"ctms.desktop.refresh",
"刷新当前视图",
true,
Some("CmdOrCtrl+R"),
)?,
&PredefinedMenuItem::fullscreen(handle, None)?,
],
)?,
&Submenu::with_items(
handle,
"导航",
true,
&[
&MenuItem::with_id(
handle,
"ctms.desktop.back",
"返回",
true,
Some("CmdOrCtrl+["),
)?,
&MenuItem::with_id(
handle,
"ctms.desktop.forward",
"前进",
true,
Some("CmdOrCtrl+]"),
)?,
],
)?,
&Submenu::with_items(
handle,
"窗口",
true,
&[
&PredefinedMenuItem::minimize(handle, None)?,
&PredefinedMenuItem::maximize(handle, None)?,
&PredefinedMenuItem::close_window(handle, None)?,
],
)?,
&Submenu::with_items(
handle,
"帮助",
true,
&[
&MenuItem::with_id(
handle,
"ctms.desktop.preferences",
"桌面偏好",
true,
Some("CmdOrCtrl+,"),
)?,
],
)?,
],
)
}
fn emit_menu_command<R: Runtime>(app: &tauri::AppHandle<R>, command: &str) {
if let Some(window) = app.get_webview_window("main") {
let _ = window.emit(DESKTOP_MENU_COMMAND_EVENT, command);
}
}
pub fn run() {
tauri::Builder::default()
.menu(desktop_menu)
.on_menu_event(|app, event| {
let command = event.id().as_ref();
if command.starts_with("ctms.desktop.") {
emit_menu_command(app, command);
}
})
.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| {
if let Some(window) = app.get_webview_window("main") {
let _ = window.unminimize();