aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYana Stamcheva <yana@jitsi.org>2011-10-17 15:23:30 +0000
committerYana Stamcheva <yana@jitsi.org>2011-10-17 15:23:30 +0000
commit55dab4039c7fe0a8d4cbb519d2ea15194f11a648 (patch)
tree6833159b98d10a6b26ee1f554e70367f566c11d0 /src
parent0bd7217084627db3b8b338ad718490370437c939 (diff)
downloadjitsi-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.java61
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/MetaContactRightButtonMenu.java7
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"))