fix: 托盘初始化时与主界面状态同步

This commit is contained in:
octopus_yan 2024-09-19 12:25:22 +08:00
parent 329c484f4c
commit 654b13e150

View File

@ -76,7 +76,7 @@ public class SystemTrayManager {
return;
}
initTrayIcon();
initTrayIcon(AListManager.isRunning());
try {
if (!isShowing())
@ -95,11 +95,12 @@ public class SystemTrayManager {
//========================================={ private }===========================================
private static void initTrayIcon() {
private static void initTrayIcon(boolean running) {
if (trayIcon != null) return;
// 系统托盘图标
Image image = Toolkit.getDefaultToolkit().getImage(WindowsUtil.class.getResource("/assets/logo-disabled.png"));
URL resource = WindowsUtil.class.getResource(STR."/assets/logo\{running ? "" : "-disabled"}.png");
Image image = Toolkit.getDefaultToolkit().getImage(resource);
trayIcon = new TrayIcon(image);
// 设置图标尺寸自动适应
@ -129,7 +130,7 @@ public class SystemTrayManager {
if (event.isPopupTrigger()) {
// 弹出菜单
Platform.runLater(() -> {
initPopupMenu();
initPopupMenu(running);
popupMenu.show(event);
});
} else if (event.getButton() == MouseEvent.BUTTON1) {
@ -143,12 +144,15 @@ public class SystemTrayManager {
/**
* 构建托盘菜单
*/
private static void initPopupMenu() {
private static void initPopupMenu(boolean running) {
if (popupMenu != null) return;
MenuItem start = PopupMenu.menuItem(getString("main.control.start"), _ -> AListManager.openScheme());
MenuItem start = PopupMenu.menuItem(
getString(STR."main.control.\{running ? "stop" : "start"}"),
_ -> AListManager.openScheme()
);
MenuItem browser = PopupMenu.menuItem(getString("main.more.browser"), _ -> AListManager.openScheme());
browser.setDisable(true);
browser.setDisable(!running);
AListManager.runningProperty().addListener((_, _, newValue) -> {
start.setText(getString(STR."main.control.\{newValue ? "stop" : "start"}"));
@ -183,4 +187,4 @@ public class SystemTrayManager {
private static Stage stage() {
return WindowsUtil.getStage();
}
}
}