diff options
Diffstat (limited to 'src/net/java/sip/communicator/impl/googlecontacts')
5 files changed, 68 insertions, 13 deletions
diff --git a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsActivator.java b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsActivator.java index 6e2a0e0..243b9f0 100644 --- a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsActivator.java +++ b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsActivator.java @@ -288,7 +288,9 @@ public class GoogleContactsActivator implements BundleActivator { enableContactSource( provider.getAccountID().getAccountAddress(), - password); + password, + provider.getProtocolDisplayName().equals( + "Google Talk")); } } }).start(); @@ -348,15 +350,19 @@ public class GoogleContactsActivator implements BundleActivator * * @param login login * @param password password + * @param googleTalk if the provider service is GoogleTalk * @return a <tt>GoogleContactsSourceService</tt> instance */ public static GoogleContactsSourceService enableContactSource( - String login, String password) + String login, String password, + boolean googleTalk) { GoogleContactsSourceService css = new GoogleContactsSourceService( login, password); ServiceRegistration cssServiceRegistration = null; + css.setGoogleTalk(googleTalk); + try { cssServiceRegistration @@ -386,14 +392,19 @@ public class GoogleContactsActivator implements BundleActivator * <tt>GoogleContactsConnection</tt>. * * @param cnx <tt>GoogleContactsConnection</tt> + * @param googleTalk if the contact source has been created as GoogleTalk + * account or via external Google Contacts * @return a <tt>GoogleContactsSourceService</tt> instance */ public static GoogleContactsSourceService enableContactSource( - GoogleContactsConnection cnx) + GoogleContactsConnection cnx, + boolean googleTalk) { GoogleContactsSourceService css = new GoogleContactsSourceService(cnx); ServiceRegistration cssServiceRegistration = null; + css.setGoogleTalk(googleTalk); + try { cssServiceRegistration diff --git a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsServiceImpl.java b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsServiceImpl.java index 6861fbf..0b1c98d 100644 --- a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsServiceImpl.java +++ b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsServiceImpl.java @@ -157,7 +157,7 @@ public class GoogleContactsServiceImpl /* register contact source */ if(cnx.isEnabled()) { - addContactSource(cnx); + addContactSource(cnx, true); } } } @@ -430,14 +430,17 @@ public class GoogleContactsServiceImpl } /** - * Add a contact source service with the specified. - * + * Add a contact source service with the specified * <tt>GoogleContactsConnection</tt>. + * * @param cnx <tt>GoogleContactsConnection</tt>. + * @param googleTalk if the contact source has been created as GoogleTalk + * account or via external Google Contacts */ - public void addContactSource(GoogleContactsConnection cnx) + public void addContactSource(GoogleContactsConnection cnx, + boolean googleTalk) { - GoogleContactsActivator.enableContactSource(cnx); + GoogleContactsActivator.enableContactSource(cnx, googleTalk); } /** @@ -449,7 +452,7 @@ public class GoogleContactsServiceImpl */ public void addContactSource(String login, String password) { - GoogleContactsActivator.enableContactSource(login, password); + GoogleContactsActivator.enableContactSource(login, password, false); } /** diff --git a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java index 1a71e82..518d5e2 100644 --- a/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java +++ b/src/net/java/sip/communicator/impl/googlecontacts/GoogleContactsSourceService.java @@ -60,6 +60,12 @@ public class GoogleContactsSourceService private AccountSettingsForm settings = null; /** + * If the account has been created using GoogleTalk wizard or via + * external Google Contacts. + */ + private boolean googleTalk = false; + + /** * Constructor. * * @param login login @@ -97,6 +103,29 @@ public class GoogleContactsSourceService } /** + * Set whether or not the account has been created via GoogleTalk wizard or + * external Google contacts. + * + * @param googleTalk value to set + */ + public void setGoogleTalk(boolean googleTalk) + { + this.googleTalk = googleTalk; + } + + /** + * Returns whether or not the account has been created via GoogleTalk + * wizard or via external Google Contacts. + * + * @return true if account has been created via GoogleTalk wizard or via + * external Google Contacts. + */ + public boolean isGoogleTalk() + { + return googleTalk; + } + + /** * Queries this search source for the given <tt>searchPattern</tt>. * * @param queryPattern the pattern to search for @@ -174,6 +203,12 @@ public class GoogleContactsSourceService return null; } + // To detect that account is a google ones, we try the following: + // - lookup in SRV and see if it is google.com; + // - if the account has been created with GoogleTalk form; + // - if it is an "external" google contact. + + // SRV checks for(SRVRecord srv : srvRecords) { if(srv.getTarget().endsWith("google.com") || @@ -184,6 +219,12 @@ public class GoogleContactsSourceService } } + // GoogleTalk based account or external Google Contacts ? + if(!isGoogleAppsOrGmail) + { + isGoogleAppsOrGmail = googleTalk; + } + if(isGoogleAppsOrGmail) { if(cnx == null) diff --git a/src/net/java/sip/communicator/impl/googlecontacts/configform/GoogleContactsConfigForm.java b/src/net/java/sip/communicator/impl/googlecontacts/configform/GoogleContactsConfigForm.java index 033456b..d170faf 100644 --- a/src/net/java/sip/communicator/impl/googlecontacts/configform/GoogleContactsConfigForm.java +++ b/src/net/java/sip/communicator/impl/googlecontacts/configform/GoogleContactsConfigForm.java @@ -225,8 +225,8 @@ public class GoogleContactsConfigForm if(ret == 1) { - GoogleContactsConnectionImpl cnx - = (GoogleContactsConnectionImpl) settingsForm.getConnection(); + GoogleContactsConnectionImpl cnx = + (GoogleContactsConnectionImpl) settingsForm.getConnection(); tableModel.addAccount(cnx, true, cnx.getPrefix()); new RefreshContactSourceThread(null, cnx).start(); GoogleContactsActivator.getGoogleContactsService().saveConfig( @@ -351,7 +351,7 @@ public class GoogleContactsConfigForm if(newCnx != null) { GoogleContactsActivator.getGoogleContactsService(). - addContactSource(newCnx); + addContactSource(newCnx, true); } } } diff --git a/src/net/java/sip/communicator/impl/googlecontacts/configform/GoogleContactsTableModel.java b/src/net/java/sip/communicator/impl/googlecontacts/configform/GoogleContactsTableModel.java index 3347f4d..5f1bdb1 100644 --- a/src/net/java/sip/communicator/impl/googlecontacts/configform/GoogleContactsTableModel.java +++ b/src/net/java/sip/communicator/impl/googlecontacts/configform/GoogleContactsTableModel.java @@ -204,7 +204,7 @@ public class GoogleContactsTableModel */ public void setValueAt(Object aValue, int rowIndex, int columnIndex) { - if(columnIndex != 0 || columnIndex != 2) + if(columnIndex != 0 && columnIndex != 2) throw new IllegalArgumentException("non editable column!"); GoogleContactsConfigForm.RefreshContactSourceThread th = null; |