feat: add show menu

This commit is contained in:
椰子 2024-11-01 20:00:29 +08:00
parent 82496dee31
commit 690f2272b9

View File

@ -1,22 +1,27 @@
use tauri::{ use tauri::{
menu::{Menu, MenuItem}, menu::{MenuBuilder, MenuEvent, MenuItem},
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
App, Manager, App, AppHandle, Manager,
}; };
pub fn tray(app: &mut App) { fn menu_event_handle(app: &AppHandle, event: MenuEvent) {
let quit_i = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>).unwrap(); match event.id.as_ref() {
let menu = Menu::with_items(app, &[&quit_i]).unwrap(); "quit" => {
let _tray: tauri::tray::TrayIcon = TrayIconBuilder::new() println!("quit menu item was clicked");
.tooltip("Realtime Voice Changer") app.exit(0);
.icon(app.default_window_icon().unwrap().clone()) }
.on_tray_icon_event(|icon: &tauri::tray::TrayIcon, event| match event { "show" => {
TrayIconEvent::Click { println!("show menu item was clicked");
button: MouseButton::Left, show_window(app.app_handle());
button_state: MouseButtonState::Up, }
.. _ => {
} => { println!("menu item {:?} not handled", event.id);
let window = icon.app_handle().get_window("main").unwrap(); }
}
}
fn show_window(app_handle: &AppHandle) {
let window = app_handle.get_window("main").unwrap();
if !window.is_visible().unwrap() { if !window.is_visible().unwrap() {
window.show().unwrap(); window.show().unwrap();
} }
@ -26,21 +31,36 @@ pub fn tray(app: &mut App) {
if !window.is_focused().unwrap() { if !window.is_focused().unwrap() {
window.set_focus().unwrap(); window.set_focus().unwrap();
} }
}
pub fn tray(app: &mut App) {
let quit_i = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>).unwrap();
let show_i = MenuItem::with_id(app, "show", "Show", true, None::<&str>).unwrap();
let menu = MenuBuilder::new(app)
.item(&show_i)
.separator()
.item(&quit_i)
.build()
.unwrap();
let _tray: tauri::tray::TrayIcon = TrayIconBuilder::new()
.tooltip("Realtime Voice Changer")
.icon(app.default_window_icon().unwrap().clone())
.on_tray_icon_event(|icon: &tauri::tray::TrayIcon, event| match event {
TrayIconEvent::Click {
button: MouseButton::Left,
button_state: MouseButtonState::Up,
..
} => {
show_window(icon.app_handle());
println!("Tray icon clicked"); println!("Tray icon clicked");
} }
_ => {} _ => {}
}) })
.menu(&menu) .menu(&menu)
.menu_on_left_click(false) .menu_on_left_click(false)
.on_menu_event(|app, event| match event.id.as_ref() { .on_menu_event(menu_event_handle)
"quit" => {
println!("quit menu item was clicked");
app.exit(0);
}
_ => {
println!("menu item {:?} not handled", event.id);
}
})
.build(app) .build(app)
.unwrap(); .unwrap();
} }