66
77use tao:: event_loop:: { ControlFlow , EventLoopBuilder } ;
88use tray_icon:: {
9- menu:: { AboutMetadata , Menu , MenuEvent , MenuItem , CheckMenuItem , IconMenuItem , PredefinedMenuItem , Submenu } ,
9+ menu:: {
10+ AboutMetadata , CheckMenuItem , IconMenuItem , Menu , MenuEvent , MenuItem , PredefinedMenuItem ,
11+ Submenu ,
12+ } ,
1013 TrayIconBuilder , TrayIconEvent ,
1114} ;
1215
@@ -17,7 +20,12 @@ fn main() {
1720
1821 let tray_menu = Menu :: new ( ) ;
1922
20- let icon_i = IconMenuItem :: new ( "Icon" , true , Some ( menu_icon ( std:: path:: Path :: new ( path) ) ) , None ) ;
23+ let icon_i = IconMenuItem :: new (
24+ "Icon" ,
25+ true ,
26+ Some ( load_menu_icon ( std:: path:: Path :: new ( path) ) ) ,
27+ None ,
28+ ) ;
2129 let check_i = CheckMenuItem :: new ( "Check" , true , false , None ) ;
2230 let subitem_i = MenuItem :: new ( "Subitem" , true , None ) ;
2331 let submenu_i = Submenu :: new ( "Submenu" , true ) ;
@@ -52,7 +60,7 @@ fn main() {
5260 std:: thread:: sleep ( std:: time:: Duration :: from_millis ( 16 ) ) ;
5361
5462 if let tao:: event:: Event :: NewEvents ( tao:: event:: StartCause :: Init ) = event {
55- let icon = load_icon ( std:: path:: Path :: new ( path) ) ;
63+ let icon = load_try_icon ( std:: path:: Path :: new ( path) ) ;
5664
5765 // We create the icon once the event loop is actually running
5866 // to prevent issues like https://github.com/tauri-apps/tray-icon/issues/90
@@ -90,26 +98,21 @@ fn main() {
9098 } )
9199}
92100
93- fn load_icon ( path : & std:: path:: Path ) -> tray_icon:: Icon {
94- let ( icon_rgba, icon_width, icon_height) = {
95- let image = image:: open ( path)
96- . expect ( "Failed to open icon path" )
97- . into_rgba8 ( ) ;
98- let ( width, height) = image. dimensions ( ) ;
99- let rgba = image. into_raw ( ) ;
100- ( rgba, width, height)
101- } ;
101+ fn load_icon ( path : & std:: path:: Path ) -> ( Vec < u8 > , u32 , u32 ) {
102+ let image = image:: open ( path)
103+ . expect ( "Failed to open icon path" )
104+ . into_rgba8 ( ) ;
105+ let ( width, height) = image. dimensions ( ) ;
106+ let rgba = image. into_raw ( ) ;
107+ ( rgba, width, height)
108+ }
109+
110+ fn load_try_icon ( path : & std:: path:: Path ) -> tray_icon:: Icon {
111+ let ( icon_rgba, icon_width, icon_height) = load_icon ( path) ;
102112 tray_icon:: Icon :: from_rgba ( icon_rgba, icon_width, icon_height) . expect ( "Failed to open icon" )
103113}
104114
105- fn menu_icon ( path : & std:: path:: Path ) -> muda:: Icon {
106- let ( icon_rgba, icon_width, icon_height) = {
107- let image = image:: open ( path)
108- . expect ( "Failed to open icon path" )
109- . into_rgba8 ( ) ;
110- let ( width, height) = image. dimensions ( ) ;
111- let rgba = image. into_raw ( ) ;
112- ( rgba, width, height)
113- } ;
115+ fn load_menu_icon ( path : & std:: path:: Path ) -> muda:: Icon {
116+ let ( icon_rgba, icon_width, icon_height) = load_icon ( path) ;
114117 muda:: Icon :: from_rgba ( icon_rgba, icon_width, icon_height) . expect ( "Failed to open icon" )
115118}
0 commit comments