fix: when the service is not installed, the tray hides the Tun mode

This commit is contained in:
huzibaca 2024-09-13 04:12:25 +08:00
parent 1b2509d5bc
commit 772e01ad40

View File

@ -220,6 +220,69 @@ fn create_tray_menu(
"Tun 模式" "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( let open_app_dir = &MenuItem::with_id(
app_handle, app_handle,
"open_app_dir", "open_app_dir",
@ -246,6 +309,14 @@ fn create_tray_menu(
None::<&str>, None::<&str>,
) )
.unwrap(); .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( let restart_clash = &MenuItem::with_id(
app_handle, app_handle,
@ -274,112 +345,70 @@ fn create_tray_menu(
) )
.unwrap(); .unwrap();
let menu = tauri::menu::MenuBuilder::new(app_handle) let more = &Submenu::with_id_and_items(
.item( app_handle,
&MenuItem::with_id( "more",
app_handle, t!("More", "更多", use_zh),
"open_window", true,
t!("Dashboard", "打开面板", use_zh), &[restart_clash, restart_app, app_version],
true, )
None::<&str>, .unwrap();
)
.unwrap(), let quit = &MenuItem::with_id(
) app_handle,
.item(&PredefinedMenuItem::separator(app_handle).unwrap()) "quit",
.item( t!("Quit", "退出", use_zh),
&MenuItem::with_id( true,
app_handle, Some("CmdOrControl+Q"),
"rule_mode", )
t!("Rule Mode", rule_mode_text, use_zh), .unwrap();
true,
None::<&str>, let separator = &PredefinedMenuItem::separator(app_handle).unwrap();
) let enable = {
.unwrap(), Config::verge()
) .latest()
.item( .enable_service_mode
&MenuItem::with_id( .unwrap_or(false)
app_handle, };
"global_mode",
t!("Global Mode", global_mode_text, use_zh), let menu = if enable {
true, tauri::menu::MenuBuilder::new(app_handle)
None::<&str>, .items(&[
) open_window,
.unwrap(), separator,
) rule_mode,
.item( global_mode,
&MenuItem::with_id( direct_mode,
app_handle, separator,
"direct_mode", system_proxy,
t!("Direct Mode", direct_mode_text, use_zh), tun_mode,
true, copy_env,
None::<&str>, open_dir,
) more,
.unwrap(), separator,
) quit,
.item(&PredefinedMenuItem::separator(app_handle).unwrap()) ])
.item( .build()
&MenuItem::with_id( .unwrap()
app_handle, } else {
"system_proxy", tauri::menu::MenuBuilder::new(app_handle)
t!("System Proxy", system_proxy_text, use_zh), .items(&[
true, open_window,
None::<&str>, separator,
) rule_mode,
.unwrap(), global_mode,
) direct_mode,
.item( separator,
&MenuItem::with_id( system_proxy,
app_handle, copy_env,
"tun_mode", open_dir,
t!("TUN Mode", tun_mode_text, use_zh), more,
true, separator,
None::<&str>, quit,
) ])
.unwrap(), .build()
) .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();
Ok(menu) Ok(menu)
} }