From 4033f64fdca98b0fdfedff279e2d0d1fe67534d3 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Thu, 12 Jul 2012 14:06:22 +0000 Subject: [PATCH] Adds property for skipping providers that have only Online/Offline status, when changing global status. --- .../main/presence/GlobalStatusSelectorBox.java | 17 +++++++++++++++++ .../impl/osdependent/jdic/StatusSubMenu.java | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/net/java/sip/communicator/impl/gui/main/presence/GlobalStatusSelectorBox.java b/src/net/java/sip/communicator/impl/gui/main/presence/GlobalStatusSelectorBox.java index 43e41b1d9..01c25306a 100644 --- a/src/net/java/sip/communicator/impl/gui/main/presence/GlobalStatusSelectorBox.java +++ b/src/net/java/sip/communicator/impl/gui/main/presence/GlobalStatusSelectorBox.java @@ -95,6 +95,12 @@ public class GlobalStatusSelectorBox */ private ButtonGroup group = new ButtonGroup(); + /** + * Ignore protocols that don't have presence operation sets + * when looking for global status. + */ + private static boolean ignoreNonPresenceOpSetProtocols = false; + /** * Creates an instance of SimpleStatusSelectorBox. * @@ -114,6 +120,13 @@ public GlobalStatusSelectorBox(MainFrame mainFrame) this.add(titleLabel); this.addSeparator(); + String ignoreStrValue + = GuiActivator.getResources().getSettingsString( + "net.java.sip.communicator.service.protocol.globalstatus" + + ".IGNORE_NONPRESENCEOPSET_PROTOCOLS"); + if(ignoreStrValue != null) + ignoreNonPresenceOpSetProtocols = Boolean.valueOf(ignoreStrValue); + PresenceStatus offlineStatus = null; // creates menu item entry for every global status for(GlobalStatusEnum status : GlobalStatusEnum.globalStatusSet) @@ -425,6 +438,10 @@ private void updateGlobalStatus() OperationSetPresence presence = protocolProvider.getOperationSet(OperationSetPresence.class); + + if(presence == null && ignoreNonPresenceOpSetProtocols) + continue; + int presenceStatus = (presence == null) ? PresenceStatus.AVAILABLE_THRESHOLD diff --git a/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSubMenu.java b/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSubMenu.java index 5abd291e1..da3596dc7 100644 --- a/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSubMenu.java +++ b/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSubMenu.java @@ -59,6 +59,12 @@ public class StatusSubMenu */ private static boolean hideAccountStatusSelectors = false; + /** + * Ignore protocols that don't have presence operation sets + * when looking for global status. + */ + private static boolean ignoreNonPresenceOpSetProtocols = false; + /** * Creates an instance of StatusSubMenu. * @@ -107,6 +113,13 @@ public StatusSubMenu(SystrayServiceJdicImpl tray, boolean swing) hideAccountStatusSelectors); } + String ignoreStrValue + = OsDependentActivator.getResources().getSettingsString( + "net.java.sip.communicator.service.protocol.globalstatus" + + ".IGNORE_NONPRESENCEOPSET_PROTOCOLS"); + if(ignoreStrValue != null) + ignoreNonPresenceOpSetProtocols = Boolean.valueOf(ignoreStrValue); + PresenceStatus offlineStatus = null; // creates menu item entry for every global status for(GlobalStatusEnum status : GlobalStatusEnum.globalStatusSet) @@ -393,6 +406,10 @@ private void updateGlobalStatus() OperationSetPresence presence = protocolProvider.getOperationSet(OperationSetPresence.class); + + if(presence == null && ignoreNonPresenceOpSetProtocols) + continue; + int presenceStatus = (presence == null) ? PresenceStatus.AVAILABLE_THRESHOLD