diff --git a/src/java/davmail/imap/ImapConnection.java b/src/java/davmail/imap/ImapConnection.java index d6507dcb..87cc36fa 100644 --- a/src/java/davmail/imap/ImapConnection.java +++ b/src/java/davmail/imap/ImapConnection.java @@ -230,6 +230,7 @@ public class ImapConnection extends AbstractConnection { sendClient(commandId + " NO No message found"); } else { while (uidRangeIterator.hasNext()) { + DavGatewayTray.switchIcon(); ExchangeSession.Message message = uidRangeIterator.next(); handleFetch(message, uidRangeIterator.currentIndex, parameters); } @@ -287,6 +288,7 @@ public class ImapConnection extends AbstractConnection { String action = tokens.nextToken(); String flags = tokens.nextToken(); while (uidRangeIterator.hasNext()) { + DavGatewayTray.switchIcon(); ExchangeSession.Message message = uidRangeIterator.next(); updateFlags(message, action, flags); sendClient("* " + (uidRangeIterator.currentIndex) + " FETCH (UID " + message.getImapUid() + " FLAGS (" + (message.getImapFlags()) + "))"); @@ -297,6 +299,7 @@ public class ImapConnection extends AbstractConnection { UIDRangeIterator uidRangeIterator = new UIDRangeIterator(tokens.nextToken()); String targetName = BASE64MailboxDecoder.decode(tokens.nextToken()); while (uidRangeIterator.hasNext()) { + DavGatewayTray.switchIcon(); ExchangeSession.Message message = uidRangeIterator.next(); session.copyMessage(message, targetName); } @@ -318,6 +321,7 @@ public class ImapConnection extends AbstractConnection { parameters = tokens.nextToken(); } while (rangeIterator.hasNext()) { + DavGatewayTray.switchIcon(); ExchangeSession.Message message = rangeIterator.next(); handleFetch(message, rangeIterator.currentIndex, parameters); } diff --git a/src/java/davmail/ui/tray/DavGatewayTray.java b/src/java/davmail/ui/tray/DavGatewayTray.java index 07b691c2..e0f40fba 100644 --- a/src/java/davmail/ui/tray/DavGatewayTray.java +++ b/src/java/davmail/ui/tray/DavGatewayTray.java @@ -34,7 +34,9 @@ import java.net.URL; * Tray icon handler */ public final class DavGatewayTray { - protected static final Logger LOGGER = Logger.getLogger("davmail"); + private static final Logger LOGGER = Logger.getLogger("davmail"); + private static final long ICON_SWITCH_MINIMUM_DELAY = 250; + private static long lastIconSwitch; private DavGatewayTray() { } @@ -59,7 +61,10 @@ public final class DavGatewayTray { */ public static void switchIcon() { if (davGatewayTray != null) { - davGatewayTray.switchIcon(); + if (System.currentTimeMillis() - lastIconSwitch > ICON_SWITCH_MINIMUM_DELAY) { + davGatewayTray.switchIcon(); + lastIconSwitch = System.currentTimeMillis(); + } } } @@ -87,7 +92,7 @@ public final class DavGatewayTray { * @param message text message * @param level log level */ - protected static void displayMessage(BundleMessage message, Level level) { + private static void displayMessage(BundleMessage message, Level level) { LOGGER.log(level, message.formatLog()); if (davGatewayTray != null) { davGatewayTray.displayMessage(message.format(), level); @@ -101,7 +106,7 @@ public final class DavGatewayTray { * @param e exception * @param level log level */ - protected static void displayMessage(BundleMessage message, Exception e, Level level) { + private static void displayMessage(BundleMessage message, Exception e, Level level) { if (e instanceof NetworkDownException) { LOGGER.log(level, BundleMessage.getExceptionLogMessage(message, e)); } else { @@ -263,7 +268,7 @@ public final class DavGatewayTray { * * @return true on Mac OS X */ - protected static boolean isOSX() { + private static boolean isOSX() { return System.getProperty("os.name").toLowerCase().startsWith("mac os x"); }