SPARK-1520 (#246)

This commit is contained in:
Speedy
2016-10-28 11:33:12 -05:00
committed by wroot
parent b68154439b
commit 8c1e41b718

View File

@ -49,6 +49,7 @@ import org.jivesoftware.smackx.chatstates.ChatState;
import org.jivesoftware.spark.ChatManager;
import org.jivesoftware.spark.NativeHandler;
import org.jivesoftware.spark.SparkManager;
import org.jivesoftware.spark.Workspace;
import org.jivesoftware.spark.plugin.Plugin;
import org.jivesoftware.spark.ui.status.CustomStatusItem;
import org.jivesoftware.spark.ui.status.StatusBar;
@ -59,6 +60,7 @@ import org.jivesoftware.sparkimpl.settings.local.SettingsManager;
import org.jivesoftware.smack.chat.ChatManagerListener;
import org.jivesoftware.smackx.chatstates.ChatStateListener;
public class SysTrayPlugin implements Plugin, NativeHandler, ChatManagerListener, ChatStateListener {
private JPopupMenu popupMenu = new JPopupMenu();
@ -74,6 +76,7 @@ public class SysTrayPlugin implements Plugin, NativeHandler, ChatManagerListener
private ImageIcon typingIcon;
private TrayIcon trayIcon;
private boolean newMessage = false;
private Presence presence;
ChatMessageHandlerImpl chatMessageHandler = new ChatMessageHandlerImpl();
@Override
@ -474,7 +477,17 @@ public class SysTrayPlugin implements Plugin, NativeHandler, ChatManagerListener
@Override
public void flashWindowStopWhenFocused(Window window) {
presence = Workspace.getInstance().getStatusBar().getPresence();
if (presence.getMode() == Presence.Mode.available) {
trayIcon.setImage(availableIcon.getImage());
} else if (presence.getMode() == Presence.Mode.away
|| presence.getMode() == Presence.Mode.xa) {
trayIcon.setImage(awayIcon.getImage());
} else if (presence.getMode() == Presence.Mode.dnd) {
trayIcon.setImage(dndIcon.getImage());
} else {
trayIcon.setImage(availableIcon.getImage());
}
newMessage = false;
chatMessageHandler.clearUnreadMessages();
}
@ -486,7 +499,17 @@ public class SysTrayPlugin implements Plugin, NativeHandler, ChatManagerListener
@Override
public void stopFlashing(Window window) {
presence = Workspace.getInstance().getStatusBar().getPresence();
if (presence.getMode() == Presence.Mode.available) {
trayIcon.setImage(availableIcon.getImage());
} else if (presence.getMode() == Presence.Mode.away
|| presence.getMode() == Presence.Mode.xa) {
trayIcon.setImage(awayIcon.getImage());
} else if (presence.getMode() == Presence.Mode.dnd) {
trayIcon.setImage(dndIcon.getImage());
} else {
trayIcon.setImage(availableIcon.getImage());
}
newMessage = false;
chatMessageHandler.clearUnreadMessages();
}
@ -500,16 +523,24 @@ public class SysTrayPlugin implements Plugin, NativeHandler, ChatManagerListener
@Override
public void stateChanged(Chat chat, ChatState state) {
presence = Workspace.getInstance().getStatusBar().getPresence();
if (ChatState.composing.equals(state)) {
changeSysTrayIcon();
} else {
if (!newMessage)
if (!newMessage) {
if (presence.getMode() == Presence.Mode.available) {
trayIcon.setImage(availableIcon.getImage());
else {
} else if (presence.getMode() == Presence.Mode.away
|| presence.getMode() == Presence.Mode.xa) {
trayIcon.setImage(awayIcon.getImage());
} else if (presence.getMode() == Presence.Mode.dnd) {
trayIcon.setImage(dndIcon.getImage());
} else {
trayIcon.setImage(newMessageIcon.getImage());
}
}
}
}
@Override
public void chatCreated(Chat chat, boolean isLocal) {