diff options
author | Yana Stamcheva <yana@jitsi.org> | 2011-10-17 15:23:30 +0000 |
---|---|---|
committer | Yana Stamcheva <yana@jitsi.org> | 2011-10-17 15:23:30 +0000 |
commit | 55dab4039c7fe0a8d4cbb519d2ea15194f11a648 (patch) | |
tree | 6833159b98d10a6b26ee1f554e70367f566c11d0 /src | |
parent | 0bd7217084627db3b8b338ad718490370437c939 (diff) | |
download | jitsi-55dab4039c7fe0a8d4cbb519d2ea15194f11a648.zip jitsi-55dab4039c7fe0a8d4cbb519d2ea15194f11a648.tar.gz jitsi-55dab4039c7fe0a8d4cbb519d2ea15194f11a648.tar.bz2 |
Tries to pre-select the preferred account in the add contact dialog if such exists.
Diffstat (limited to 'src')
-rw-r--r-- | src/net/java/sip/communicator/impl/gui/GuiActivator.java | 61 | ||||
-rw-r--r-- | src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java | 7 |
2 files changed, 68 insertions, 0 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/GuiActivator.java b/src/net/java/sip/communicator/impl/gui/GuiActivator.java index 6a11490..3b9ebc7 100644 --- a/src/net/java/sip/communicator/impl/gui/GuiActivator.java +++ b/src/net/java/sip/communicator/impl/gui/GuiActivator.java @@ -913,4 +913,65 @@ public class GuiActivator implements BundleActivator return accounts.toArray(); } + + /** + * Returns the preferred account if there's one. + * + * @return the <tt>ProtocolProviderService</tt> corresponding to the + * preferred account + */ + public static ProtocolProviderService getPreferredAccount() + { + // check for preferred wizard + String prefWName = GuiActivator.getResources(). + getSettingsString("impl.gui.PREFERRED_ACCOUNT_WIZARD"); + if(prefWName == null || prefWName.length() <= 0) + return null; + + ServiceReference[] accountWizardRefs = null; + try + { + accountWizardRefs = GuiActivator.bundleContext + .getServiceReferences( + AccountRegistrationWizard.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 null; + } + + // in case we found any, add them in this container. + if (accountWizardRefs != null) + { + if (logger.isDebugEnabled()) + logger.debug("Found " + + accountWizardRefs.length + + " already installed providers."); + + for (int i = 0; i < accountWizardRefs.length; i++) + { + AccountRegistrationWizard wizard + = (AccountRegistrationWizard) GuiActivator.bundleContext + .getService(accountWizardRefs[i]); + + // is it the preferred protocol ? + if(wizard.getClass().getName().equals(prefWName)) + { + ArrayList<AccountID> registeredAccounts + = getProtocolProviderFactory(wizard.getProtocolName()) + .getRegisteredAccounts(); + + if (registeredAccounts.size() > 0) + return getRegisteredProviderForAccount( + registeredAccounts.get(0)); + } + } + } + return null; + } } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java index 921fe26..adc9b95 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java @@ -649,6 +649,13 @@ public class MetaContactRightButtonMenu AddContactDialog dialog = new AddContactDialog(mainFrame, metaContact); + // Try to select the preferred protocol provider. + ProtocolProviderService protocolProvider + = GuiActivator.getPreferredAccount(); + + if (protocolProvider != null) + dialog.setSelectedAccount(protocolProvider); + dialog.setVisible(true); } else if (itemName.equalsIgnoreCase("sendMessage")) |