From 772e01ad40e6023792bb741eb91114559d477ca1 Mon Sep 17 00:00:00 2001 From: huzibaca Date: Fri, 13 Sep 2024 04:12:25 +0800 Subject: [PATCH] fix: when the service is not installed, the tray hides the Tun mode --- src-tauri/src/core/tray.rs | 241 +++++++++++++++++++++---------------- 1 file changed, 135 insertions(+), 106 deletions(-) diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index 7c2174cd..dbd25115 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -220,6 +220,69 @@ fn create_tray_menu( "Tun 模式" }; + let open_window = &MenuItem::with_id( + app_handle, + "open_window", + t!("Dashboard", "打开面板", use_zh), + true, + None::<&str>, + ) + .unwrap(); + + let rule_mode = &MenuItem::with_id( + app_handle, + "rule_mode", + t!("Rule Mode", rule_mode_text, use_zh), + true, + None::<&str>, + ) + .unwrap(); + + let global_mode = &MenuItem::with_id( + app_handle, + "global_mode", + t!("Global Mode", global_mode_text, use_zh), + true, + None::<&str>, + ) + .unwrap(); + + let direct_mode = &MenuItem::with_id( + app_handle, + "direct_mode", + t!("Direct Mode", direct_mode_text, use_zh), + true, + None::<&str>, + ) + .unwrap(); + + let system_proxy = &MenuItem::with_id( + app_handle, + "system_proxy", + t!("System Proxy", system_proxy_text, use_zh), + true, + None::<&str>, + ) + .unwrap(); + + let tun_mode = &MenuItem::with_id( + app_handle, + "tun_mode", + t!("TUN Mode", tun_mode_text, use_zh), + true, + None::<&str>, + ) + .unwrap(); + + let copy_env = &MenuItem::with_id( + app_handle, + "copy_env", + t!("Copy Env", "复制环境变量", use_zh), + true, + None::<&str>, + ) + .unwrap(); + let open_app_dir = &MenuItem::with_id( app_handle, "open_app_dir", @@ -246,6 +309,14 @@ fn create_tray_menu( None::<&str>, ) .unwrap(); + let open_dir = &Submenu::with_id_and_items( + app_handle, + "open_dir", + t!("Open Dir", "打开目录", use_zh), + true, + &[open_app_dir, open_core_dir, open_logs_dir], + ) + .unwrap(); let restart_clash = &MenuItem::with_id( app_handle, @@ -274,112 +345,70 @@ fn create_tray_menu( ) .unwrap(); - let menu = tauri::menu::MenuBuilder::new(app_handle) - .item( - &MenuItem::with_id( - app_handle, - "open_window", - t!("Dashboard", "打开面板", use_zh), - true, - None::<&str>, - ) - .unwrap(), - ) - .item(&PredefinedMenuItem::separator(app_handle).unwrap()) - .item( - &MenuItem::with_id( - app_handle, - "rule_mode", - t!("Rule Mode", rule_mode_text, use_zh), - true, - None::<&str>, - ) - .unwrap(), - ) - .item( - &MenuItem::with_id( - app_handle, - "global_mode", - t!("Global Mode", global_mode_text, use_zh), - true, - None::<&str>, - ) - .unwrap(), - ) - .item( - &MenuItem::with_id( - app_handle, - "direct_mode", - t!("Direct Mode", direct_mode_text, use_zh), - true, - None::<&str>, - ) - .unwrap(), - ) - .item(&PredefinedMenuItem::separator(app_handle).unwrap()) - .item( - &MenuItem::with_id( - app_handle, - "system_proxy", - t!("System Proxy", system_proxy_text, use_zh), - true, - None::<&str>, - ) - .unwrap(), - ) - .item( - &MenuItem::with_id( - app_handle, - "tun_mode", - t!("TUN Mode", tun_mode_text, use_zh), - true, - None::<&str>, - ) - .unwrap(), - ) - .item( - &MenuItem::with_id( - app_handle, - "copy_env", - t!("Copy Env", "复制环境变量", use_zh), - true, - None::<&str>, - ) - .unwrap(), - ) - .item( - &Submenu::with_id_and_items( - app_handle, - "open_dir", - t!("Open Dir", "打开目录", use_zh), - true, - &[open_app_dir, open_core_dir, open_logs_dir], - ) - .unwrap(), - ) - .item( - &Submenu::with_id_and_items( - app_handle, - "more", - t!("More", "更多", use_zh), - true, - &[restart_clash, restart_app, app_version], - ) - .unwrap(), - ) - .item(&PredefinedMenuItem::separator(app_handle).unwrap()) - .item( - &MenuItem::with_id( - app_handle, - "quit", - t!("Quit", "退出", use_zh), - true, - Some("CmdOrControl+Q"), - ) - .unwrap(), - ) - .build() - .unwrap(); + let more = &Submenu::with_id_and_items( + app_handle, + "more", + t!("More", "更多", use_zh), + true, + &[restart_clash, restart_app, app_version], + ) + .unwrap(); + + let quit = &MenuItem::with_id( + app_handle, + "quit", + t!("Quit", "退出", use_zh), + true, + Some("CmdOrControl+Q"), + ) + .unwrap(); + + let separator = &PredefinedMenuItem::separator(app_handle).unwrap(); + let enable = { + Config::verge() + .latest() + .enable_service_mode + .unwrap_or(false) + }; + + let menu = if enable { + tauri::menu::MenuBuilder::new(app_handle) + .items(&[ + open_window, + separator, + rule_mode, + global_mode, + direct_mode, + separator, + system_proxy, + tun_mode, + copy_env, + open_dir, + more, + separator, + quit, + ]) + .build() + .unwrap() + } else { + tauri::menu::MenuBuilder::new(app_handle) + .items(&[ + open_window, + separator, + rule_mode, + global_mode, + direct_mode, + separator, + system_proxy, + copy_env, + open_dir, + more, + separator, + quit, + ]) + .build() + .unwrap() + }; Ok(menu) }