feat: tray window

This commit is contained in:
lencx
2022-12-10 22:25:29 +08:00
parent 8339dc281c
commit 9478211397
11 changed files with 59 additions and 15 deletions

View File

@@ -3,6 +3,7 @@ use tauri::{
utils::assets::EmbeddedAssets, AboutMetadata, AppHandle, Context, CustomMenuItem, Manager,
Menu, MenuItem, Submenu, SystemTray, SystemTrayEvent, SystemTrayMenu, WindowMenuEvent,
};
use tauri_plugin_positioner::{on_tray_event, Position, WindowExt};
// --- Menu
pub fn init(chat_conf: &conf::ChatConfJson, context: &Context<EmbeddedAssets>) -> Menu {
@@ -159,16 +160,19 @@ pub fn tray_menu() -> SystemTray {
}
// --- SystemTray Event
pub fn tray_handler(app: &AppHandle, event: SystemTrayEvent) {
let win = app.get_window("core").unwrap();
pub fn tray_handler(handle: &AppHandle, event: SystemTrayEvent) {
let core_win = handle.get_window("core").unwrap();
on_tray_event(handle, &event);
if let SystemTrayEvent::LeftClick { .. } = event {
// TODO: tray window
if win.is_visible().unwrap() {
win.hide().unwrap();
core_win.minimize().unwrap();
let mini_win = handle.get_window("mini").unwrap();
mini_win.move_window(Position::TrayCenter).unwrap();
if mini_win.is_visible().unwrap() {
mini_win.hide().unwrap();
} else {
win.show().unwrap();
win.set_focus().unwrap();
mini_win.show().unwrap();
}
}
}

View File

@@ -1,3 +1,4 @@
pub mod cmd;
pub mod menu;
pub mod setup;
pub mod window;

View File

@@ -1,5 +1,5 @@
use crate::{conf, utils};
use tauri::{utils::config::WindowUrl, window::WindowBuilder, App};
use crate::{app::window, conf, utils};
use tauri::{utils::config::WindowUrl, window::WindowBuilder, App, Manager};
#[cfg(target_os = "macos")]
use tauri::TitleBarStyle;
@@ -10,6 +10,7 @@ pub fn init(
) -> std::result::Result<(), Box<dyn std::error::Error>> {
let conf = utils::get_tauri_conf().unwrap();
let url = conf.build.dev_path.to_string();
window::mini_window(&app.app_handle());
#[cfg(target_os = "macos")]
WindowBuilder::new(app, "core", WindowUrl::App(url.into()))

View File

@@ -0,0 +1,25 @@
use crate::{conf, utils};
use tauri::{utils::config::WindowUrl, window::WindowBuilder};
pub fn mini_window(handle: &tauri::AppHandle) {
let conf = utils::get_tauri_conf().unwrap();
let url = conf.build.dev_path.to_string();
WindowBuilder::new(handle, "mini", WindowUrl::App(url.into()))
.resizable(false)
.fullscreen(false)
.inner_size(360.0, 540.0)
.decorations(false)
.always_on_top(true)
.initialization_script(&utils::user_script())
.initialization_script(include_str!("../assets/html2canvas.js"))
.initialization_script(include_str!("../assets/jspdf.js"))
.initialization_script(include_str!("../assets/core.js"))
.initialization_script(include_str!("../assets/export.js"))
.user_agent(conf::PHONE_USER_AGENT)
.menu(tauri::Menu::new())
.build()
.unwrap()
.hide()
.unwrap();
}