开启Linux/Windows下的菜单栏,增加托盘按钮控制菜单栏开启

This commit is contained in:
Tlntin
2022-12-28 11:00:42 +08:00
parent 7c183d0a3c
commit 60f8da8e83
2 changed files with 32 additions and 19 deletions

View File

@@ -179,13 +179,17 @@ pub fn get_pake_config() -> (PakeConfig, Config) {
} }
pub fn get_system_tray() -> SystemTray { pub fn get_system_tray() -> SystemTray {
let hide = CustomMenuItem::new("hide".to_string(), "Hide"); let hide_app = CustomMenuItem::new("hide_app".to_string(), "Hide App");
let show = CustomMenuItem::new("show".to_string(), "Show"); let show_app = CustomMenuItem::new("show_app".to_string(), "Show App");
let hide_menu = CustomMenuItem::new("hide_menu".to_string(), "Hide Menu");
let show_menu = CustomMenuItem::new("show_menu".to_string(), "Show Menu");
let quit = CustomMenuItem::new("quit".to_string(), "Quit"); let quit = CustomMenuItem::new("quit".to_string(), "Quit");
let about = CustomMenuItem::new("about".to_string(), "About"); let about = CustomMenuItem::new("about".to_string(), "About");
let tray_menu = SystemTrayMenu::new() let tray_menu = SystemTrayMenu::new()
.add_item(hide) .add_item(hide_app)
.add_item(show) .add_item(show_app)
.add_item(hide_menu)
.add_item(show_menu)
.add_item(quit) .add_item(quit)
.add_item(about); .add_item(about);
SystemTray::new().with_menu(tray_menu) SystemTray::new().with_menu(tray_menu)
@@ -194,12 +198,26 @@ pub fn get_system_tray() -> SystemTray {
pub fn system_tray_handle(app: &tauri::AppHandle, event: tauri::SystemTrayEvent) { pub fn system_tray_handle(app: &tauri::AppHandle, event: tauri::SystemTrayEvent) {
if let SystemTrayEvent::MenuItemClick { tray_id: _, id, .. } = event { if let SystemTrayEvent::MenuItemClick { tray_id: _, id, .. } = event {
match id.as_str() { match id.as_str() {
"hide" => { "hide_app" => {
app.get_window("pake").unwrap().hide().unwrap(); app.get_window("pake").unwrap().hide().unwrap();
} }
"show" => { "show_app" => {
app.get_window("pake").unwrap().show().unwrap(); app.get_window("pake").unwrap().show().unwrap();
} }
"hide_menu" => {
app.get_window("pake")
.unwrap()
.menu_handle()
.hide()
.unwrap();
}
"show_menu" => {
app.get_window("pake")
.unwrap()
.menu_handle()
.show()
.unwrap();
}
"quit" => { "quit" => {
std::process::exit(0); std::process::exit(0);
} }

View File

@@ -3,24 +3,19 @@
windows_subsystem = "windows" windows_subsystem = "windows"
)] )]
use app::{get_data_dir, get_pake_config, get_system_tray, get_window, system_tray_handle}; use app::{
#[cfg(target_os = "macos")] get_data_dir, get_menu, get_pake_config, get_system_tray, get_window, menu_event_handle,
use app::{get_menu, menu_event_handle}; system_tray_handle,
};
pub fn run_app() { pub fn run_app() {
let system_tray = get_system_tray(); let system_tray = get_system_tray();
let (pake_config, tauri_config) = get_pake_config(); let (pake_config, tauri_config) = get_pake_config();
let data_dir = get_data_dir(tauri_config); let data_dir = get_data_dir(tauri_config);
#[cfg(target_os = "macos")] let menu = get_menu();
let tauri_app = { tauri::Builder::default()
let menu = get_menu(); .menu(menu)
tauri::Builder::default() .on_menu_event(menu_event_handle)
.menu(menu)
.on_menu_event(menu_event_handle)
};
#[cfg(any(target_os = "linux", target_os = "windows"))]
let tauri_app = tauri::Builder::default();
tauri_app
.system_tray(system_tray) .system_tray(system_tray)
.on_system_tray_event(system_tray_handle) .on_system_tray_event(system_tray_handle)
.plugin(tauri_plugin_window_state::Builder::default().build()) .plugin(tauri_plugin_window_state::Builder::default().build())