mirror of
https://github.com/igniterealtime/Spark.git
synced 2025-12-01 12:27:58 +00:00
SPARK-1520 (#246)
This commit is contained in:
@ -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,10 +477,20 @@ public class SysTrayPlugin implements Plugin, NativeHandler, ChatManagerListener
|
||||
|
||||
@Override
|
||||
public void flashWindowStopWhenFocused(Window window) {
|
||||
trayIcon.setImage(availableIcon.getImage());
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleNotification() {
|
||||
@ -486,7 +499,17 @@ public class SysTrayPlugin implements Plugin, NativeHandler, ChatManagerListener
|
||||
|
||||
@Override
|
||||
public void stopFlashing(Window window) {
|
||||
trayIcon.setImage(availableIcon.getImage());
|
||||
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();
|
||||
}
|
||||
@ -496,19 +519,27 @@ public class SysTrayPlugin implements Plugin, NativeHandler, ChatManagerListener
|
||||
public void processMessage(Chat arg0, Message arg1) {
|
||||
// Do nothing - stateChanged is in charge
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stateChanged(Chat chat, ChatState state) {
|
||||
if (ChatState.composing.equals(state)) {
|
||||
changeSysTrayIcon();
|
||||
} else {
|
||||
if (!newMessage)
|
||||
trayIcon.setImage(availableIcon.getImage());
|
||||
else {
|
||||
trayIcon.setImage(newMessageIcon.getImage());
|
||||
}
|
||||
}
|
||||
public void stateChanged(Chat chat, ChatState state) {
|
||||
presence = Workspace.getInstance().getStatusBar().getPresence();
|
||||
if (ChatState.composing.equals(state)) {
|
||||
changeSysTrayIcon();
|
||||
} else {
|
||||
if (!newMessage) {
|
||||
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(newMessageIcon.getImage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user