2024-09-20 10:14:36 +08:00
|
|
|
use tauri::{
|
|
|
|
|
menu::{Menu, MenuItem},
|
|
|
|
|
tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
|
|
|
|
|
Manager, Runtime,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
|
2025-03-26 03:00:18 +08:00
|
|
|
// 托盘菜单项目
|
|
|
|
|
let show_i = MenuItem::with_id(app, "show", "显示主界面", true, None::<&str>)?;
|
|
|
|
|
let quit_i = MenuItem::with_id(app, "quit", "退出", true, None::<&str>)?;
|
|
|
|
|
|
|
|
|
|
// 创建托盘菜单
|
|
|
|
|
let menu = Menu::with_items(app, &[&show_i, &quit_i])?;
|
2024-09-20 10:14:36 +08:00
|
|
|
|
|
|
|
|
let _ = TrayIconBuilder::with_id("tray")
|
|
|
|
|
.icon(app.default_window_icon().unwrap().clone())
|
|
|
|
|
.menu(&menu)
|
2025-03-13 02:34:59 +08:00
|
|
|
.show_menu_on_left_click(false)
|
2024-09-20 10:14:36 +08:00
|
|
|
.on_menu_event(move |app, event| match event.id.as_ref() {
|
|
|
|
|
"quit" => {
|
|
|
|
|
app.exit(0);
|
|
|
|
|
}
|
2025-03-26 03:00:18 +08:00
|
|
|
"show" => {
|
|
|
|
|
if let Some(window) = app.get_webview_window("main") {
|
|
|
|
|
let _ = window.show();
|
|
|
|
|
let _ = window.set_focus();
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-09-20 10:14:36 +08:00
|
|
|
// Add more events here
|
|
|
|
|
_ => {}
|
|
|
|
|
})
|
|
|
|
|
.on_tray_icon_event(|tray, event| {
|
|
|
|
|
if let TrayIconEvent::Click {
|
|
|
|
|
button: MouseButton::Left,
|
|
|
|
|
button_state: MouseButtonState::Up,
|
|
|
|
|
..
|
|
|
|
|
} = event
|
|
|
|
|
{
|
|
|
|
|
let app = tray.app_handle();
|
|
|
|
|
if let Some(window) = app.get_webview_window("main") {
|
|
|
|
|
let _ = window.show();
|
|
|
|
|
let _ = window.set_focus();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
.build(app);
|
|
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Tray Menu
|
|
|
|
|
// let quit = CustomMenuItem::new("quit".to_string(), "Quit");
|
|
|
|
|
// let hide = CustomMenuItem::new("hide".to_string(), "Hide");
|
|
|
|
|
// let tray_menu = SystemTrayMenu::new() // insert the menu items here
|
|
|
|
|
// .add_item(hide)
|
|
|
|
|
// .add_item(quit);
|
|
|
|
|
// .add_native_item(SystemTrayMenuItem::Separator)
|
|
|
|
|
// let toggle = MenuItemBuilder::with_id("toggle", "Toggle").build(app)?;
|
|
|
|
|
// let menu = MenuBuilder::new(app).items(&[&toggle]).build()?;
|
|
|
|
|
|
|
|
|
|
// Setup Tray
|
|
|
|
|
// let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?;
|
|
|
|
|
// let _ = TrayIconBuilder::new()
|
|
|
|
|
// .menu(&menu)
|
|
|
|
|
// .on_menu_event(move |_, event| {
|
|
|
|
|
// match event.id().as_ref() {
|
|
|
|
|
// "toggle" => {
|
|
|
|
|
// println!("toggle clicked");
|
|
|
|
|
// }
|
|
|
|
|
// _ => (),
|
|
|
|
|
// }
|
|
|
|
|
// // match event {
|
|
|
|
|
// // SystemTrayEvent::LeftClick { position: _, size: _, .. } => {
|
|
|
|
|
// // let window = app.get_window("main").unwrap();
|
|
|
|
|
// // window.show().unwrap();
|
|
|
|
|
// // window.set_focus().unwrap();
|
|
|
|
|
|
|
|
|
|
// // // thread::sleep(Duration::from_millis(100));
|
|
|
|
|
// // // window.set_always_on_top(false).unwrap();
|
|
|
|
|
// // println!("system tray received a left click");
|
|
|
|
|
// // }
|
|
|
|
|
// // SystemTrayEvent::RightClick { position: _, size: _, .. } => {
|
|
|
|
|
// // // let window = app.get_window("main").unwrap();
|
|
|
|
|
// // // window.hide().unwrap();
|
|
|
|
|
// // println!("system tray received a right click");
|
|
|
|
|
// // }
|
|
|
|
|
// // SystemTrayEvent::DoubleClick { position: _, size: _, .. } => {
|
|
|
|
|
// // println!("system tray received a double click");
|
|
|
|
|
// // }
|
|
|
|
|
// // SystemTrayEvent::MenuItemClick { id, .. } =>
|
|
|
|
|
// // match id.as_str() {
|
|
|
|
|
// // "quit" => {
|
|
|
|
|
// // std::process::exit(0);
|
|
|
|
|
// // }
|
|
|
|
|
// // "hide" => {
|
|
|
|
|
// // let window = app.get_window("main").unwrap();
|
|
|
|
|
// // window.hide().unwrap();
|
|
|
|
|
// // }
|
|
|
|
|
// // _ => {}
|
|
|
|
|
// // }
|
|
|
|
|
// // _ => {}
|
|
|
|
|
// // }
|
|
|
|
|
// })
|
|
|
|
|
// .on_tray_icon_event(|tray, event| {
|
|
|
|
|
// if event.click_type == ClickType::Left {
|
|
|
|
|
// let app = tray.app_handle();
|
|
|
|
|
// if let Some(webview_window) = app.get_webview_window("main") {
|
|
|
|
|
// let _ = webview_window.show();
|
|
|
|
|
// let _ = webview_window.set_focus();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// })
|
|
|
|
|
// .build(app)
|
2024-09-26 16:58:40 +08:00
|
|
|
// .unwrap();
|