1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- //! tray icon
- use dioxus_core::{
- prelude::{provide_context, try_consume_context},
- use_hook,
- };
- #[cfg(not(any(target_os = "ios", target_os = "android")))]
- pub use tray_icon::*;
- /// tray icon menu type trait
- #[cfg(not(any(target_os = "ios", target_os = "android")))]
- pub type DioxusTrayMenu = tray_icon::menu::Menu;
- #[cfg(any(target_os = "ios", target_os = "android"))]
- pub type DioxusTrayMenu = ();
- /// tray icon icon type trait
- #[cfg(not(any(target_os = "ios", target_os = "android")))]
- pub type DioxusTrayIcon = tray_icon::Icon;
- #[cfg(any(target_os = "ios", target_os = "android"))]
- pub type DioxusTrayIcon = ();
- /// tray icon type trait
- #[cfg(not(any(target_os = "ios", target_os = "android")))]
- pub type DioxusTray = tray_icon::TrayIcon;
- #[cfg(any(target_os = "ios", target_os = "android"))]
- pub type DioxusTray = ();
- /// initializes a tray icon
- #[allow(unused)]
- pub fn init_tray_icon(menu: DioxusTrayMenu, icon: Option<DioxusTrayIcon>) -> DioxusTray {
- #[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))]
- {
- let builder = tray_icon::TrayIconBuilder::new()
- .with_menu(Box::new(menu))
- .with_menu_on_left_click(false)
- .with_icon(match icon {
- Some(value) => value,
- None => tray_icon::Icon::from_rgba(
- include_bytes!("./assets/default_icon.bin").to_vec(),
- 460,
- 460,
- )
- .expect("image parse failed"),
- });
- provide_context(builder.build().expect("tray icon builder failed"))
- }
- }
- /// Returns a default tray icon menu
- pub fn default_tray_icon() -> DioxusTrayMenu {
- #[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))]
- {
- use tray_icon::menu::{Menu, PredefinedMenuItem};
- let tray_menu = Menu::new();
- tray_menu
- .append_items(&[&PredefinedMenuItem::quit(None)])
- .unwrap();
- tray_menu
- }
- }
- /// Provides a hook to the tray icon
- #[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))]
- pub fn use_tray_icon() -> Option<tray_icon::TrayIcon> {
- use_hook(try_consume_context)
- }
|