From 99a732d5f448270181b48edcae7960854052939b Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Thu, 12 Jul 2012 15:05:58 +0000 Subject: [PATCH] Change global status behaviour, count provider without presence only for available status, otherwise skip them. --- .../presence/GlobalStatusSelectorBox.java | 23 ++++++++----------- .../impl/osdependent/jdic/StatusSubMenu.java | 23 ++++++++----------- 2 files changed, 18 insertions(+), 28 deletions(-) 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 01c25306a..563221781 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,12 +95,6 @@ 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. * @@ -120,13 +114,6 @@ 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) @@ -419,6 +406,7 @@ private void updateGlobalStatus() Iterator pProviders = mainFrame.getProtocolProviders(); + boolean hasAvailableProvider = false; while (pProviders.hasNext()) { @@ -439,8 +427,11 @@ private void updateGlobalStatus() OperationSetPresence presence = protocolProvider.getOperationSet(OperationSetPresence.class); - if(presence == null && ignoreNonPresenceOpSetProtocols) + if(presence == null) + { + hasAvailableProvider = true; continue; + } int presenceStatus = (presence == null) @@ -451,6 +442,10 @@ private void updateGlobalStatus() status = presenceStatus; } + // if we have at least one online provider + if(status == 0 && hasAvailableProvider) + status = PresenceStatus.AVAILABLE_THRESHOLD; + JCheckBoxMenuItem item = getItemFromStatus(status); item.setSelected(true); 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 da3596dc7..bdbc626b3 100644 --- a/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSubMenu.java +++ b/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSubMenu.java @@ -59,12 +59,6 @@ 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. * @@ -113,13 +107,6 @@ 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) @@ -389,6 +376,7 @@ public void registrationStateChanged(RegistrationStateChangeEvent evt) private void updateGlobalStatus() { int status = 0; + boolean hasAvailableProvider = false; for(ProtocolProviderService protocolProvider : getProtocolProviders()) { @@ -407,8 +395,11 @@ private void updateGlobalStatus() OperationSetPresence presence = protocolProvider.getOperationSet(OperationSetPresence.class); - if(presence == null && ignoreNonPresenceOpSetProtocols) + if(presence == null) + { + hasAvailableProvider = true; continue; + } int presenceStatus = (presence == null) @@ -419,6 +410,10 @@ private void updateGlobalStatus() status = presenceStatus; } + // if we have at least one online provider + if(status == 0 && hasAvailableProvider) + status = PresenceStatus.AVAILABLE_THRESHOLD; + selectItemFromStatus(status); }