From 7a697acf7d2089becc5ba01ff4aad47b65c5e852 Mon Sep 17 00:00:00 2001 From: hiddify-com <114227601+hiddify-com@users.noreply.github.com> Date: Sun, 4 Aug 2024 16:46:00 +0200 Subject: [PATCH] new: colorized tray icon --- assets/images/convert_icon.sh | 3 + assets/images/tray_icon.png | Bin 1131 -> 3552 bytes assets/images/tray_icon_connected.png | Bin 0 -> 2094 bytes assets/images/tray_icon_dark.ico | Bin 67646 -> 41318 bytes assets/images/tray_icon_dark.png | Bin 1516 -> 3882 bytes assets/images/tray_icon_disconnected.png | Bin 0 -> 2143 bytes .../notifier/system_tray_notifier.dart | 147 +++++++++++------- pubspec.yaml | 2 + 8 files changed, 99 insertions(+), 53 deletions(-) create mode 100644 assets/images/convert_icon.sh create mode 100644 assets/images/tray_icon_connected.png create mode 100644 assets/images/tray_icon_disconnected.png diff --git a/assets/images/convert_icon.sh b/assets/images/convert_icon.sh new file mode 100644 index 00000000..63e54110 --- /dev/null +++ b/assets/images/convert_icon.sh @@ -0,0 +1,3 @@ +in=$1 +out=$2 +convert -define icon:auto-resize=128,64,48,32,16 -gravity center $in $out \ No newline at end of file diff --git a/assets/images/tray_icon.png b/assets/images/tray_icon.png index 3b317c991900ea05b9a5db417fab0030bf1e12da..bd81783a0f4c1a2784e965f07382bf90c9ce2825 100644 GIT binary patch literal 3552 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 fyncJ7Go)=|W0L{ literal 0 HcmV?d00001 diff --git a/assets/images/tray_icon_dark.ico b/assets/images/tray_icon_dark.ico index a3484c58340d32383a395a595b8b5462dc6a5899..48121a44336c9a49f75455b9b59db9039b6997cd 100644 GIT binary patch literal 41318 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 E0v2~2761SM literal 1516 zcmb7E`#Y2g6h7ZK7&9_Exm7|#kxNM#qszva8OaP8W1e_w42>|($BBpd6`Hnu`dbn6C>N+YPvP2JR?U>J-eV9aE+{Z zKN$J8yk$)bX@|el#nUeaq9^E(&t-rP`ze*_k+uqhC`m@=*=1y6?Q~E3;W?mHJ9W(~ z+br0?l(U~cC?RzlVAsHT+1U?9cuDmO3TA!q>(^-(_6qcoK{HGMs*nC&pmlgx>lc8g z%uH&FTihByqH2R20`~XSW?R{lZ&`qdOSIh_DHOY`+)KrB9DRIiU2oeO5xLS5ZlThVN= z6*olrA;Q4r{4+MduZv^a#a|w=pJgd$v|jKR7sFLOF6X4rOr89}f*q_7o3IDg>M;Im!^%XHKyO(t`Po z@D3>$JvI7?f)}KPGIv$D0y>n}OyLJ_R!+YSL=di=RBvQ;nY7G-tG8PGOi1ttShY|}+P_fu3ui47O44VQElCpexj}OSH7&G@4iu>G1 z+3$7tlO^tf99uUL0&!?liCuAiVCmi!UG27PSac=~cIP>f*Xx%%Bb1x@hD*uENaATX zVI?99c$NK6B8<}TnjsRjImeeBshhekM{x%T9Xzu(WJ#DRdl4H}>Qu#-GF6JZYc_LB zAwh@T#oE4S&if}PnAQHU5*XWp{SbO?`u^)X%ra$rZkm8A!syVn)H*^Li5@YD;8)ZBhs1acKP0c#W zu{r^pW4VT_Kw?ZvNXjvL^7^{d7L4kqL@evCmz&v~oge4n>m*lcF4~_C#QvQS)D^}` z_4Y0#@ot+ApE{a-pK>LYwsf4^?`Vn8!yW|s+%s%ugpYp?K1abscY;^Qq3#U5rk4&i zMGfCc5TUO%zs4H)4q>;O(5mB{B0d+2L~X}+>auMQ+7}-J`_b}%jc^vqoa<<-xDl}ntvJ7y5!$IxfDgzn2JSus(rC#jzm zJBqYY-^BF2ZI^XNq&0G+mWpCldXFlis84wEaGojKj9EMWFkvLcex!<$_SsM^Q}dsH z+M9xY9v(;Xf7S~<4-(mi)XT!?mg;=JOfq zrb>{aT2`NX2XaU@HeFy!hl0Gw!e+QAyuWi6qHantt2Y1xQ_EZbU(g!pX|Enj> diff --git a/assets/images/tray_icon_disconnected.png b/assets/images/tray_icon_disconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5371e5270299318754906b8bfd1e774d12eb17 GIT binary patch literal 2143 zcmbVO2~ZPP7+$IQIp*y1d=V0paG#Y91#Yrif(o{A(CW6b}@%#U=S3m zR&)@p2Wk~T#S=Rqh&o^$@xF`22r6PxyhfZ_Bhn2=Mq68_?#$cw-oEdB|NYM{i;kQz zzs zaZ#L95?r&+z@PyjFvx5`v1Eb$U?h?F*^x6iKYz* z1er`Gu1UZpjcSM|7K1{pzNMvZ~ikb2O;h$_icTEb>j z?Xp2WOAJj#sbBdtokcEsH-46L6nu@g;2uMLtWU3J(LKZS=j&oRJK&BfB zlqQX_B&qF*RCJHZAYaJ!2PejB^f+mveBZf1$WWS)u$id&abOV#7R2&Ih%f*V1Wbnc z2n=^Y zMlhqDpi>LE90}J`G^)plaG8Y7*v!>va0FIj{sNv7=I~K}KMtYt<8efU0OP1IJV1qs zlwzgOzvsS;#8MrR?YWQt&-+nE4O3dE_LF%W1?NZ!Buqmw!LoE$#7rWkd!^NYomqgO zm?OI-Y|If>0%v!B)_k%Dx@b*F1Vj2C;qHP_q>477Mj}|vcIDqQ^wZ95me z4Xi6>9jF}|VilfH*iWr2yOX1mX52Ykc+ope)v_0DZFE^8*KI!^G0R%^!*lhHvm4jF z9ktVEVC}TIGj~LIXAuvM7FX76zq+_radOV;w@0X^!C+Rz&9{nrm2#8km<;(8*XHK( zs|$uuQ$4L!_JNCj|FW+2*^fi3ecD6s$q`RQ(c(wQ6MpN-OP0n_(Y_Pa#yu~;-M4$t z#QV<^KLM`8s& zx~Q+4jayZ!_FcZbm^CME?A6D|O5_JOPXOEO*RBW#-gzkTK2Yo1{@KxEK0v+SwE0!G zohQRe9*M6Dliu82BM%78Ef^LU#7$Hv-C)ab?Tw0)qWXl{Gm}$?zfQ}0@!R<4t8=m% zpDs(WU$`{3|JLBgip^Jq_38BNy=TRt)$4uJ6Fg>Teg@_5+C@b4pOk(3+_~+U!8NuA zEn`PY{llUjjNCuG#Z{LNfK9htMJvdnn105%s`#R|n&>yh+TM+M`+zZpujT@E$(2p* zKcAl$GzO^K`^$*sEIj^Dl;;;GWTkZ6Gas*#gbH&mV7GWoU6@;KcYQVR)##ke_|IP~ zb%9fsu1<4pSf%opjr+Y&8FID_>(p)vHx+wq3g+Xg_U+f=e g>qw7W< build() async { if (!PlatformUtils.isDesktop) return; - - await trayManager.setIcon( - _trayIconPath, - isTemplate: Platform.isMacOS, - ); - if (!Platform.isLinux) await trayManager.setToolTip(Constants.appName); + ref.watch(activeProxyNotifierProvider).whenData((activeProxy) => setDelay(activeProxy.urlTestDelay)); ConnectionStatus connection; try { @@ -36,8 +32,12 @@ class SystemTrayNotifier extends _$SystemTrayNotifier with AppLogger { loggy.warning("error getting connection status", e); connection = const ConnectionStatus.disconnected(); } - final serviceMode = ref.watch(ConfigOptions.serviceMode); + if (connection == Disconnected()) { + setIcon(connection); + } + + if (!Platform.isLinux) await trayManager.setToolTip(Constants.appName); final t = ref.watch(translationsProvider); final destinations = <(String label, String location)>[ @@ -66,51 +66,49 @@ class SystemTrayNotifier extends _$SystemTrayNotifier with AppLogger { Connected() => t.tray.status.disconnect, Disconnecting() => t.tray.status.disconnecting, }, - checked: connection.isConnected, + // checked: connection.isConnected, + checked: false, disabled: connection.isSwitching, onClick: (_) async { - await ref - .read(connectionNotifierProvider.notifier) - .toggleConnection(); + await ref.read(connectionNotifierProvider.notifier).toggleConnection(); }, ), - MenuItem.submenu( + MenuItem.separator(), + MenuItem( label: t.config.serviceMode, - submenu: Menu( - items: [ - ...ServiceMode.values.map( - (e) => MenuItem.checkbox( - checked: e == serviceMode, - key: e.name, - label: e.present(t), - onClick: (menuItem) async { - final newMode = ServiceMode.values.byName(menuItem.key!); - loggy.debug("switching service mode: [$newMode]"); - await ref - .read(ConfigOptions.serviceMode.notifier) - .update(newMode); - }, - ), - ), - ], - ), - ), - MenuItem.submenu( - label: t.tray.open, - submenu: Menu( - items: [ - ...destinations.map( - (e) => MenuItem( - label: e.$1, - onClick: (_) async { - await ref.read(windowNotifierProvider.notifier).open(); - ref.read(routerProvider).go(e.$2); - }, - ), - ), - ], + icon: Assets.images.trayIconIco, + disabled: true, + ), + + ...ServiceMode.values.map( + (e) => MenuItem.checkbox( + checked: e == serviceMode, + key: e.name, + label: e.present(t), + onClick: (menuItem) async { + final newMode = ServiceMode.values.byName(menuItem.key!); + loggy.debug("switching service mode: [$newMode]"); + await ref.read(ConfigOptions.serviceMode.notifier).update(newMode); + }, ), ), + + // MenuItem.submenu( + // label: t.tray.open, + // submenu: Menu( + // items: [ + // ...destinations.map( + // (e) => MenuItem( + // label: e.$1, + // onClick: (_) async { + // await ref.read(windowNotifierProvider.notifier).open(); + // ref.read(routerProvider).go(e.$2); + // }, + // ), + // ), + // ], + // ), + // ), MenuItem.separator(), MenuItem( label: t.tray.quit, @@ -124,17 +122,60 @@ class SystemTrayNotifier extends _$SystemTrayNotifier with AppLogger { await trayManager.setContextMenu(menu); } - static String get _trayIconPath { + static void setDelay(int delay) { + if (delay > 65000 || delay == 0) { + setIcon(const Disconnecting()); + // else if (delay>1000) + // SystemTrayNotifier.setIcon(timeout ? Disconnecting() : Connecting()); + } else { + setIcon(const Connected()); + } + } + + static void setIcon(ConnectionStatus status) { + if (!PlatformUtils.isDesktop) return; + trayManager + .setIcon( + _trayIconPath(status), + isTemplate: Platform.isMacOS, + ) + .asStream(); + } + + static String _trayIconPath(ConnectionStatus status) { if (Platform.isWindows) { final Brightness brightness = WidgetsBinding.instance.platformDispatcher.platformBrightness; - bool isDarkMode = brightness == Brightness.dark; - if (isDarkMode) { - return Assets.images.trayIconIco; - } else { - return Assets.images.trayIconDarkIco; + final isDarkMode = brightness == Brightness.dark; + switch (status) { + case Connected(): + return Assets.images.trayIconConnectedIco; + case Connecting(): + return Assets.images.trayIconDisconnectedIco; + case Disconnecting(): + return Assets.images.trayIconDisconnectedIco; + case Disconnected(): + if (isDarkMode) { + return Assets.images.trayIconIco; + } else { + return Assets.images.trayIconDarkIco; + } } } - - return Assets.images.trayIconPng.path; + final isDarkMode = false; + switch (status) { + case Connected(): + return Assets.images.trayIconConnectedPng.path; + case Connecting(): + return Assets.images.trayIconDisconnectedPng.path; + case Disconnecting(): + return Assets.images.trayIconDisconnectedPng.path; + case Disconnected(): + if (isDarkMode) { + return Assets.images.trayIconDarkPng.path; + } else { + return Assets.images.trayIconPng.path; + } + } + // return Assets.images.trayIconPng.path; } } diff --git a/pubspec.yaml b/pubspec.yaml index a19e5819..f53a8813 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -127,7 +127,9 @@ flutter: - assets/images/tray_icon_dark.ico - assets/images/tray_icon_dark.png - assets/images/tray_icon_connected.ico + - assets/images/tray_icon_connected.png - assets/images/tray_icon_disconnected.ico + - assets/images/tray_icon_disconnected.png - assets/images/connect_norouz.PNG - assets/images/disconnect_norouz.PNG