diff options
author | Damian Minkov <damencho@jitsi.org> | 2012-07-03 06:27:47 +0000 |
---|---|---|
committer | Damian Minkov <damencho@jitsi.org> | 2012-07-03 06:27:47 +0000 |
commit | da8538bbf1c69230b46a24472dc236126daddcc6 (patch) | |
tree | 4eef292cdc0185af280501947c65aeaebf836bc2 /src/net/java/sip/communicator/impl/osdependent | |
parent | c35f3afd63de49862df21ba4c1265a753cd76dd0 (diff) | |
download | jitsi-da8538bbf1c69230b46a24472dc236126daddcc6.zip jitsi-da8538bbf1c69230b46a24472dc236126daddcc6.tar.gz jitsi-da8538bbf1c69230b46a24472dc236126daddcc6.tar.bz2 |
Adds global status menu to the tray menus, adding global status service.
Diffstat (limited to 'src/net/java/sip/communicator/impl/osdependent')
6 files changed, 488 insertions, 173 deletions
diff --git a/src/net/java/sip/communicator/impl/osdependent/OsDependentActivator.java b/src/net/java/sip/communicator/impl/osdependent/OsDependentActivator.java index 83c6ba8..ef80aee 100644 --- a/src/net/java/sip/communicator/impl/osdependent/OsDependentActivator.java +++ b/src/net/java/sip/communicator/impl/osdependent/OsDependentActivator.java @@ -10,11 +10,13 @@ import net.java.sip.communicator.impl.osdependent.jdic.*; import net.java.sip.communicator.impl.osdependent.macosx.*; import net.java.sip.communicator.service.desktop.*; import net.java.sip.communicator.service.gui.*; +import net.java.sip.communicator.service.protocol.globalstatus.*; import net.java.sip.communicator.service.resources.*; import net.java.sip.communicator.service.shutdown.*; import net.java.sip.communicator.service.systray.*; -import net.java.sip.communicator.util.Logger; +import net.java.sip.communicator.util.*; +import net.java.sip.communicator.util.Logger; import org.jitsi.service.configuration.*; import org.jitsi.service.resources.*; import org.jitsi.util.*; @@ -40,6 +42,8 @@ public class OsDependentActivator private static ResourceManagementService resourcesService; + private static GlobalStatusService globalStatusService; + /** * The <tt>Logger</tt> used by the <tt>OsDependentActivator</tt> class and * its instances for logging output. @@ -192,4 +196,22 @@ public class OsDependentActivator ResourceManagementServiceUtils.getService(bundleContext); return resourcesService; } + + /** + * Returns the <tt>GlobalStatusService</tt> obtained from the bundle + * context. + * @return the <tt>GlobalStatusService</tt> obtained from the bundle + * context + */ + public static GlobalStatusService getGlobalStatusService() + { + if (globalStatusService == null) + { + globalStatusService + = ServiceUtils.getService( + bundleContext, + GlobalStatusService.class); + } + return globalStatusService; + } } diff --git a/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSelector.java b/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSelector.java index ce4f56b..cb2a98b 100644 --- a/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSelector.java +++ b/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSelector.java @@ -24,7 +24,8 @@ import net.java.sip.communicator.util.*; * @author Lubomir Marinov */ public class StatusSelector - implements ActionListener + implements ActionListener, + ItemListener { /** * A reference of <tt>Systray</tt> @@ -81,17 +82,23 @@ public class StatusSelector /* the submenu itself */ + PresenceStatus offlineStatus = null; Iterator<PresenceStatus> statusIterator = this.presence.getSupportedStatusSet(); while (statusIterator.hasNext()) { PresenceStatus status = statusIterator.next(); + + // if connectivity less then 1, this is offline one + if(status.getStatus() < 1) + offlineStatus = status; + String text = status.getStatusName(); if (menu instanceof Container) { - JMenuItem item = new JMenuItem(text); + JCheckBoxMenuItem item = new JCheckBoxMenuItem(text); byte[] icBytes = status.getStatusIcon(); if(icBytes != null) @@ -103,8 +110,8 @@ public class StatusSelector } else { - MenuItem item = new MenuItem(text); - item.addActionListener(this); + CheckboxMenuItem item = new CheckboxMenuItem(text); + item.addItemListener(this); ((Menu) menu).add(item); } } @@ -113,6 +120,9 @@ public class StatusSelector StatusSubMenu.addMenuItem(menu, new StatusMessageMenu(provider, swing) .getMenu()); + + if(offlineStatus != null) + updateStatus(offlineStatus); } private void addSeparator() @@ -142,40 +152,26 @@ public class StatusSelector else menuItemText = ((MenuItem) source).getLabel(); + changeStatus(menuItemText); + } + + /** + * Searches for presence status with the supplied name and publish this + * status to the provider. + * @param statusName + */ + private void changeStatus(String statusName) + { Iterator<PresenceStatus> statusSet = presence.getSupportedStatusSet(); while (statusSet.hasNext()) { PresenceStatus status = statusSet.next(); - if (status.getStatusName().equals(menuItemText)) + if (status.getStatusName().equals(statusName)) { - RegistrationState registrationState = - provider.getRegistrationState(); - - if (registrationState == RegistrationState.REGISTERED - && !presence.getPresenceStatus().equals(status)) - { - if (status.isOnline()) - new PublishPresenceStatusThread(status).start(); - else - new ProviderUnRegistration(this.provider).start(); - } - else if (registrationState != RegistrationState.REGISTERED - && registrationState != RegistrationState.REGISTERING - && registrationState != RegistrationState.AUTHENTICATING - && status.isOnline()) - { - new ProviderRegistration(provider).start(); - } - else if (!status.isOnline() - && !(registrationState == RegistrationState.UNREGISTERING)) - { - new ProviderUnRegistration(this.provider).start(); - } - - parentSystray.saveStatusInformation(provider, status - .getStatusName()); + OsDependentActivator.getGlobalStatusService() + .publishStatus(provider, status, true); break; } @@ -192,59 +188,64 @@ public class StatusSelector if (menu instanceof AbstractButton) ((AbstractButton) menu).setIcon(new ImageIcon(presenceStatus .getStatusIcon())); - } - - /** - * This class allow to use a thread to change the presence status. - */ - private class PublishPresenceStatusThread extends Thread - { - private final PresenceStatus status; - - public PublishPresenceStatusThread(PresenceStatus status) - { - this.status = status; - } - public void run() + if(menu instanceof Menu) { - try { - presence.publishPresenceStatus(status, ""); - } - catch (IllegalArgumentException e1) + Menu theMenu = (Menu) menu; + for(int i =0; i < theMenu.getItemCount(); i++) { - logger.error("Error - changing status", e1); - } - catch (IllegalStateException e1) - { - logger.error("Error - changing status", e1); + MenuItem item = theMenu.getItem(i); + + if(item instanceof CheckboxMenuItem) + { + if(item.getLabel().equals(presenceStatus.getStatusName())) + { + ((CheckboxMenuItem)item).setState(true); + } + else + { + ((CheckboxMenuItem)item).setState(false); + } + } } - catch (OperationFailedException e1) + } + else if(menu instanceof JMenu) + { + JMenu theMenu = (JMenu) menu; + for(int i =0; i < theMenu.getItemCount(); i++) { - String msg; + JMenuItem item = theMenu.getItem(i); - switch (e1.getErrorCode()) + if(item instanceof JCheckBoxMenuItem) { - case OperationFailedException.GENERAL_ERROR: - msg - = "General error occured while " - + "publishing presence status."; - break; - case OperationFailedException.NETWORK_FAILURE: - msg - = "Network failure occured while " - + "publishing presence status."; - break; - case OperationFailedException.PROVIDER_NOT_REGISTERED: - msg - = "Protocol provider must be" - + "registered in order to change status."; - break; - default: - return; + if(item.getText().equals(presenceStatus.getStatusName())) + item.setSelected(true); + else + item.setSelected(false); } + } + } + } - logger.error(msg, e1); + /** + * Listens for changes in item state (CheckboxMenuItem)s. + * @param e the event. + */ + public void itemStateChanged(ItemEvent e) + { + Object sourceItem = e.getSource(); + if(e.getStateChange() == ItemEvent.SELECTED) + { + if(sourceItem instanceof CheckboxMenuItem) + { + changeStatus(((CheckboxMenuItem)sourceItem).getLabel()); + } + } + else if(e.getStateChange() == ItemEvent.DESELECTED) + { + if(sourceItem instanceof CheckboxMenuItem) + { + ((CheckboxMenuItem)sourceItem).setState(true); } } } diff --git a/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSimpleSelector.java b/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSimpleSelector.java index 0c720a4..10b2320 100644 --- a/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSimpleSelector.java +++ b/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSimpleSelector.java @@ -13,6 +13,7 @@ import javax.swing.*; import net.java.sip.communicator.impl.osdependent.*; import net.java.sip.communicator.service.protocol.*; +import net.java.sip.communicator.service.protocol.globalstatus.*; import net.java.sip.communicator.util.swing.*; /** @@ -23,7 +24,8 @@ import net.java.sip.communicator.util.swing.*; * @author Lubomir Marinov */ public class StatusSimpleSelector - implements ActionListener + implements ActionListener, + ItemListener { /** @@ -48,11 +50,12 @@ public class StatusSimpleSelector /* the parent item */ String text = provider.getAccountID().getDisplayName(); this.menu = swing ? new JMenu(text) : new Menu(text); - updateStatus(); /* the menu itself */ createMenuItem("service.gui.ONLINE", "online"); createMenuItem("service.gui.OFFLINE", "offline"); + + updateStatus(); } private void createMenuItem(String textKey, String name) @@ -60,16 +63,16 @@ public class StatusSimpleSelector String text = Resources.getString(textKey); if (menu instanceof JMenu) { - JMenuItem menuItem = new JMenuItem(text); + JCheckBoxMenuItem menuItem = new JCheckBoxMenuItem(text); menuItem.setName(name); menuItem.addActionListener(this); ((JMenu) menu).add(menuItem); } else { - MenuItem menuItem = new MenuItem(text); + CheckboxMenuItem menuItem = new CheckboxMenuItem(text); menuItem.setName(name); - menuItem.addActionListener(this); + menuItem.addItemListener(this); ((Menu) menu).add(menuItem); } } @@ -86,31 +89,30 @@ public class StatusSimpleSelector */ public void actionPerformed(ActionEvent evt) { - Object source = evt.getSource(); + changeStatus(evt.getSource()); + } + + /** + * Changes status corresponding the seelcted object. + * @param source the source object selected + */ + private void changeStatus(Object source) + { String itemName; if (source instanceof Component) itemName = ((Component) source).getName(); else itemName = ((MenuComponent) source).getName(); - if(itemName.equals("online")) + if(itemName.equals("online")) { - if(!this.provider.isRegistered()) - { - new ProviderRegistration(provider).start(); - } + OsDependentActivator.getGlobalStatusService() + .publishStatus(provider, GlobalStatusEnum.ONLINE, true); } else { - RegistrationState registrationState - = provider.getRegistrationState(); - - if(!RegistrationState.UNREGISTERED.equals(registrationState) - && !RegistrationState.UNREGISTERING - .equals(registrationState)) - { - new ProviderUnRegistration(this.provider).start(); - } + OsDependentActivator.getGlobalStatusService() + .publishStatus(provider, GlobalStatusEnum.OFFLINE, true); } } @@ -134,5 +136,83 @@ public class StatusSimpleSelector ((AbstractButton) menu).setIcon(icon); } } + + String onlineText = Resources.getString("service.gui.ONLINE"); + String offlineText = Resources.getString("service.gui.OFFLINE"); + if(menu instanceof Menu) + { + Menu theMenu = (Menu) menu; + for(int i =0; i < theMenu.getItemCount(); i++) + { + MenuItem item = theMenu.getItem(i); + + if(item instanceof CheckboxMenuItem) + { + if(item.getLabel().equals(onlineText)) + { + if(provider.isRegistered()) + ((CheckboxMenuItem)item).setState(true); + else + ((CheckboxMenuItem)item).setState(false); + } + else if(item.getLabel().equals(offlineText)) + { + if(provider.isRegistered()) + ((CheckboxMenuItem)item).setState(false); + else + ((CheckboxMenuItem)item).setState(true); + } + } + } + } + else if(menu instanceof JMenu) + { + JMenu theMenu = (JMenu) menu; + for(int i =0; i < theMenu.getItemCount(); i++) + { + JMenuItem item = theMenu.getItem(i); + + if(item instanceof JCheckBoxMenuItem) + { + if(item.getText().equals(onlineText)) + { + if(provider.isRegistered()) + item.setSelected(true); + else + item.setSelected(false); + } + else if(item.getText().equals(offlineText)) + { + if(provider.isRegistered()) + item.setSelected(false); + else + item.setSelected(true); + } + } + } + } + } + + /** + * Listens for changes in item state (CheckboxMenuItem)s. + * @param e the event. + */ + public void itemStateChanged(ItemEvent e) + { + Object soutceItem = e.getSource(); + if(e.getStateChange() == ItemEvent.SELECTED) + { + if(soutceItem instanceof CheckboxMenuItem) + { + changeStatus(soutceItem); + } + } + else if(e.getStateChange() == ItemEvent.DESELECTED) + { + if(soutceItem instanceof CheckboxMenuItem) + { + ((CheckboxMenuItem)soutceItem).setState(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 a6ec0e8..5abd291 100644 --- a/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSubMenu.java +++ b/src/net/java/sip/communicator/impl/osdependent/jdic/StatusSubMenu.java @@ -7,14 +7,17 @@ package net.java.sip.communicator.impl.osdependent.jdic; import java.awt.*; +import java.awt.event.*; import java.beans.*; import java.util.*; +import java.util.List; import javax.swing.*; import net.java.sip.communicator.impl.osdependent.*; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.event.*; +import net.java.sip.communicator.service.protocol.globalstatus.*; import net.java.sip.communicator.util.*; import org.osgi.framework.*; @@ -28,7 +31,9 @@ import org.osgi.framework.*; */ public class StatusSubMenu implements ProviderPresenceStatusListener, - RegistrationStateChangeListener + RegistrationStateChangeListener, + ActionListener, + ItemListener { /** * A reference of <tt>Systray</tt> @@ -50,6 +55,11 @@ public class StatusSubMenu private final Object menu; /** + * Hide accounts from accounts status list. + */ + private static boolean hideAccountStatusSelectors = false; + + /** * Creates an instance of <tt>StatusSubMenu</tt>. * * @param tray a reference of the parent <tt>Systray</tt> @@ -79,6 +89,39 @@ public class StatusSubMenu this.menu = new Menu(text); } + { + String hideAccountStatusSelectorsProperty + = "impl.gui.HIDE_ACCOUNT_STATUS_SELECTORS"; + String hideAccountsStatusDefaultValue = + OsDependentActivator.getResources() + .getSettingsString(hideAccountStatusSelectorsProperty); + + if(hideAccountsStatusDefaultValue != null) + hideAccountStatusSelectors = Boolean.parseBoolean( + hideAccountsStatusDefaultValue); + + hideAccountStatusSelectors = + OsDependentActivator.getConfigurationService() + .getBoolean( + hideAccountStatusSelectorsProperty, + hideAccountStatusSelectors); + } + + PresenceStatus offlineStatus = null; + // creates menu item entry for every global status + for(GlobalStatusEnum status : GlobalStatusEnum.globalStatusSet) + { + createMenuItem(status, swing); + + if(status.getStatus() < 1) + offlineStatus = status; + } + // initially it is offline + selectItemFromStatus(offlineStatus.getStatus()); + + if(!hideAccountStatusSelectors) + this.addSeparator(); + this.init(); } @@ -88,6 +131,52 @@ public class StatusSubMenu } /** + * Creates a menu item with the given <tt>textKey</tt>, <tt>iconID</tt> and + * <tt>name</tt>. + * @return the created <tt>JCheckBoxMenuItem</tt> + */ + private Object createMenuItem( + GlobalStatusEnum status, + boolean swing) + { + Object menuItem = null; + + if(swing) + { + JCheckBoxMenuItem mItem = new JCheckBoxMenuItem( + GlobalStatusEnum.getI18NStatusName(status), + new ImageIcon(status.getStatusIcon())); + + mItem.setName(status.getStatusName()); + mItem.addActionListener(this); + menuItem = mItem; + } + else + { + CheckboxMenuItem mItem = new CheckboxMenuItem( + GlobalStatusEnum.getI18NStatusName(status)); + mItem.setName(status.getStatusName()); + mItem.addItemListener(this); + menuItem = mItem; + } + addMenuItem(getMenu(), menuItem); + + + return menuItem; + } + + /** + * Adds separator to underlying menu implementation. + */ + private void addSeparator() + { + if (menu instanceof JMenu) + ((JMenu) menu).addSeparator(); + else + ((Menu) menu).addSeparator(); + } + + /** * Adds the account corresponding to the given protocol provider to this * menu. * @@ -108,7 +197,8 @@ public class StatusSubMenu this.accountSelectors.put(protocolProvider.getAccountID(), simpleSelector); - addMenuItem(menu, simpleSelector.getMenu()); + if(!hideAccountStatusSelectors) + addMenuItem(menu, simpleSelector.getMenu()); protocolProvider.addRegistrationStateChangeListener(this); } @@ -120,7 +210,8 @@ public class StatusSubMenu this.accountSelectors.put(protocolProvider.getAccountID(), statusSelector); - addMenuItem(menu, statusSelector.getMenu()); + if(!hideAccountStatusSelectors) + addMenuItem(menu, statusSelector.getMenu()); presence.addProviderPresenceStatusListener(this); } @@ -179,42 +270,60 @@ public class StatusSubMenu OsDependentActivator.bundleContext .addServiceListener(new ProtocolProviderServiceListener()); - ServiceReference[] protocolProviderRefs; + for(ProtocolProviderService provider : getProtocolProviders()) + { + boolean isHidden + = provider + .getAccountID() + .getAccountProperty( + ProtocolProviderFactory.IS_PROTOCOL_HIDDEN) + != null; + + if(!isHidden) + this.addAccount(provider); + } + } + + /** + * Obtains all currently registered ProtocolProviderServices. + * @return all currently registered ProtocolProviderServices. + */ + private List<ProtocolProviderService> getProtocolProviders() + { + List<ProtocolProviderService> providers + = new ArrayList<ProtocolProviderService>(); + ServiceReference[] protocolProviderRefs = null; try { protocolProviderRefs = OsDependentActivator.bundleContext.getServiceReferences( - ProtocolProviderService.class.getName(),null); + ProtocolProviderService.class.getName(), null); } catch (InvalidSyntaxException ex) { // this shouldn't happen since we're providing no parameter string // but let's log just in case. - logger .error("Error while retrieving service refs", ex); - return; + //logger .error("Error while retrieving service refs", ex); + return providers; + } + catch(IllegalStateException ise) + { + // happens sometimes on stopping felix } // in case we found any if (protocolProviderRefs != null) { - for (ServiceReference protocolProviderRef : protocolProviderRefs) { - ProtocolProviderService provider - = (ProtocolProviderService) + providers.add( + (ProtocolProviderService) OsDependentActivator - .bundleContext.getService(protocolProviderRef); - boolean isHidden - = provider - .getAccountID() - .getAccountProperty( - ProtocolProviderFactory.IS_PROTOCOL_HIDDEN) - != null; - - if(!isHidden) - this.addAccount(provider); + .bundleContext.getService(protocolProviderRef)); } } + + return providers; } /** @@ -231,6 +340,8 @@ public class StatusSubMenu if (selectorBox != null) selectorBox.updateStatus(evt.getNewStatus()); + + this.updateGlobalStatus(); } /* @@ -254,6 +365,162 @@ public class StatusSubMenu if (selectorBox != null) selectorBox.updateStatus(); + + this.updateGlobalStatus(); + } + + /** + * Updates the global status by picking the most connected protocol provider + * status. + */ + private void updateGlobalStatus() + { + int status = 0; + + for(ProtocolProviderService protocolProvider : getProtocolProviders()) + { + // We do not show hidden protocols in our status bar, so we do not + // care about their status here. + boolean isProtocolHidden = + protocolProvider.getAccountID().getAccountProperty( + ProtocolProviderFactory.IS_PROTOCOL_HIDDEN) != null; + + if (isProtocolHidden) + continue; + + if (!protocolProvider.isRegistered()) + continue; + + OperationSetPresence presence + = protocolProvider.getOperationSet(OperationSetPresence.class); + int presenceStatus + = (presence == null) + ? PresenceStatus.AVAILABLE_THRESHOLD + : presence.getPresenceStatus().getStatus(); + + if (status < presenceStatus) + status = presenceStatus; + } + + selectItemFromStatus(status); + } + + /** + * Selects the menu item corresponding to the given status. + * For status constants we use here the values defined in the + * <tt>PresenceStatus</tt>, but this is only for convenience. + * + * @param status the status to which the item should correspond + */ + private void selectItemFromStatus(int status) + { + String nameToSelect; + if(status < PresenceStatus.ONLINE_THRESHOLD) + { + nameToSelect = GlobalStatusEnum.OFFLINE_STATUS; + } + else if(status < PresenceStatus.AWAY_THRESHOLD) + { + nameToSelect = GlobalStatusEnum.DO_NOT_DISTURB_STATUS; + } + else if(status < PresenceStatus.AVAILABLE_THRESHOLD) + { + nameToSelect = GlobalStatusEnum.AWAY_STATUS; + } + else if(status < PresenceStatus.EAGER_TO_COMMUNICATE_THRESHOLD) + { + nameToSelect = GlobalStatusEnum.ONLINE_STATUS; + } + else if(status < PresenceStatus.MAX_STATUS_VALUE) + { + nameToSelect = GlobalStatusEnum.FREE_FOR_CHAT_STATUS; + } + else + { + nameToSelect = GlobalStatusEnum.OFFLINE_STATUS; + } + + if(menu instanceof Menu) + { + Menu theMenu = (Menu) menu; + for(int i =0; i < theMenu.getItemCount(); i++) + { + MenuItem item = theMenu.getItem(i); + + if(item instanceof CheckboxMenuItem) + { + if(item.getName().equals(nameToSelect)) + { + ((CheckboxMenuItem)item).setState(true); + } + else + { + ((CheckboxMenuItem)item).setState(false); + } + } + } + } + else if(menu instanceof JMenu) + { + JMenu theMenu = (JMenu) menu; + for(int i =0; i < theMenu.getItemCount(); i++) + { + JMenuItem item = theMenu.getItem(i); + + if(item instanceof JCheckBoxMenuItem) + { + if(item.getName().equals(nameToSelect)) + item.setSelected(true); + else + item.setSelected(false); + } + } + } + } + + /** + * Change the status of the protocol according to the menu item selected + * + * @param evt the event containing the menu item name + */ + public void actionPerformed(ActionEvent evt) + { + Object source = evt.getSource(); + if(source instanceof JMenuItem) + changeStatusFromName(((JMenuItem)source).getName()); + } + + /** + * Listens for changes in item state (CheckboxMenuItem)s. + * @param e the event. + */ + public void itemStateChanged(ItemEvent e) + { + Object sourceItem = e.getSource(); + if(e.getStateChange() == ItemEvent.SELECTED) + { + if(sourceItem instanceof CheckboxMenuItem) + { + changeStatusFromName(((CheckboxMenuItem)sourceItem).getName()); + } + } + else if(e.getStateChange() == ItemEvent.DESELECTED) + { + if(sourceItem instanceof CheckboxMenuItem) + { + ((CheckboxMenuItem)sourceItem).setState(true); + } + } + } + + /** + * Changes global status from selected item name. + * @param itemName the item name that was selected. + */ + private void changeStatusFromName(String itemName) + { + OsDependentActivator.getGlobalStatusService().publishStatus( + GlobalStatusEnum.getStatusByName(itemName)); } /** @@ -267,7 +534,7 @@ public class StatusSubMenu /** * When a service is registered or unregistered, we update * the provider tables and add/remove listeners (if it supports - * BasicInstantMessenging implementation) + * BasicInstantMessaging implementation) * * @param event ServiceEvent */ diff --git a/src/net/java/sip/communicator/impl/osdependent/jdic/SystrayServiceJdicImpl.java b/src/net/java/sip/communicator/impl/osdependent/jdic/SystrayServiceJdicImpl.java index 3fa31a4..c1e97d4 100644 --- a/src/net/java/sip/communicator/impl/osdependent/jdic/SystrayServiceJdicImpl.java +++ b/src/net/java/sip/communicator/impl/osdependent/jdic/SystrayServiceJdicImpl.java @@ -356,62 +356,6 @@ public class SystrayServiceJdicImpl } /** - * Saves the last status for all accounts. This information is used - * on logging. Each time user logs in he's logged with the same status - * as he was the last time before closing the application. - * - * @param protocolProvider the protocol provider for which we save the - * last selected status - * @param statusName the status name to save - */ - public void saveStatusInformation( - ProtocolProviderService protocolProvider, - String statusName) - { - if (configService != null) - { - String prefix = "net.java.sip.communicator.impl.gui.accounts"; - - List<String> accounts = configService.getPropertyNamesByPrefix( - prefix, true); - - boolean savedAccount = false; - - for (String accountRootPropName : accounts) - { - String accountUID = configService.getString(accountRootPropName); - - if (accountUID.equals(protocolProvider.getAccountID(). - getAccountUniqueID())) - { - - configService.setProperty( - accountRootPropName + ".lastAccountStatus", - statusName); - - savedAccount = true; - } - } - - if (!savedAccount) - { - String accNodeName = "acc" + Long.toString(System. - currentTimeMillis()); - - String accountPackage = - "net.java.sip.communicator.impl.gui.accounts." + accNodeName; - - configService.setProperty(accountPackage, - protocolProvider.getAccountID().getAccountUniqueID()); - - configService.setProperty( - accountPackage + ".lastAccountStatus", - statusName); - } - } - } - - /** * Implements <tt>SystraService#showPopupMessage()</tt> * * @param popupMessage the message we will show diff --git a/src/net/java/sip/communicator/impl/osdependent/osdependent.manifest.mf b/src/net/java/sip/communicator/impl/osdependent/osdependent.manifest.mf index 6f0ed5f..0ec37fb 100644 --- a/src/net/java/sip/communicator/impl/osdependent/osdependent.manifest.mf +++ b/src/net/java/sip/communicator/impl/osdependent/osdependent.manifest.mf @@ -17,6 +17,7 @@ Import-Package: org.osgi.framework, net.java.sip.communicator.service.gui,
net.java.sip.communicator.service.gui.event,
net.java.sip.communicator.service.protocol,
+ net.java.sip.communicator.service.protocol.globalstatus,
net.java.sip.communicator.service.protocol.event,
org.jitsi.service.resources, net.java.sip.communicator.service.resources,
net.java.sip.communicator.service.shutdown,
|