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 b888c7729e
commit 3963c60fc1
No known key found for this signature in database
GPG Key ID: D4364EE4851DC302

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,113 +345,71 @@ fn create_tray_menu(
) )
.unwrap(); .unwrap();
let menu = tauri::menu::MenuBuilder::new(app_handle) let more = &Submenu::with_id_and_items(
.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, app_handle,
"more", "more",
t!("More", "更多", use_zh), t!("More", "更多", use_zh),
true, true,
&[restart_clash, restart_app, app_version], &[restart_clash, restart_app, app_version],
) )
.unwrap(), .unwrap();
)
.item(&PredefinedMenuItem::separator(app_handle).unwrap()) let quit = &MenuItem::with_id(
.item(
&MenuItem::with_id(
app_handle, app_handle,
"quit", "quit",
t!("Quit", "退出", use_zh), t!("Quit", "退出", use_zh),
true, true,
Some("CmdOrControl+Q"), Some("CmdOrControl+Q"),
) )
.unwrap(),
)
.build()
.unwrap(); .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) Ok(menu)
} }