From 46bcbd306ed8e17d602bdb9a99bba21e907e72b6 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Tue, 5 Mar 2013 22:03:43 +0000 Subject: [PATCH] Dispatches video contact details. Uses voice as default number detail, if no type is available. Use position index in MetaContactRightButtonMenu. --- lib/installer-exclude/smackx.jar | Bin 650426 -> 650552 bytes resources/languages/resources.properties | 1 + .../impl/gui/main/call/CallManager.java | 14 ++-- .../ContactListTreeCellRenderer.java | 13 ++-- .../MetaContactRightButtonMenu.java | 40 ++++++++--- .../contactsource/MetaUIContact.java | 16 +++-- .../impl/protocol/jabber/InfoRetreiver.java | 64 +++++++++--------- .../PhoneNumberContactQuery.java | 7 ++ .../service/protocol/ServerStoredDetails.java | 12 ++++ 9 files changed, 108 insertions(+), 59 deletions(-) diff --git a/lib/installer-exclude/smackx.jar b/lib/installer-exclude/smackx.jar index d597c4115c3e946d37e2d0ded76a1b5345c1e1aa..aa7c266a7ec7dd1a35e058fac67299c2a4fc3184 100644 GIT binary patch delta 6534 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 diff --git a/resources/languages/resources.properties b/resources/languages/resources.properties index 0e584500f..bd62523b3 100644 --- a/resources/languages/resources.properties +++ b/resources/languages/resources.properties @@ -548,6 +548,7 @@ service.gui.SILENT_MEMBER=silent member service.gui.NON_SECURE_CONNECTION=No secure connection can be made for account {0}. If you want to connect to non-secure server, please check \"Allow non-secure connections\" in your account configuration service.gui.UPDATE=Update service.gui.MOBILE_PHONE=Mobile +service.gui.VIDEO_PHONE=Video service.gui.WORK_PHONE=Work service.gui.PHONE=Phone service.gui.PHONES=Phones diff --git a/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java b/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java index ab651e4db..7f5cfd14d 100644 --- a/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java +++ b/src/net/java/sip/communicator/impl/gui/main/call/CallManager.java @@ -22,12 +22,7 @@ import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.protocol.*; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.FaxDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenericDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.MobilePhoneDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.PagerDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.PhoneNumberDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.WorkPhoneDetail; +import net.java.sip.communicator.service.protocol.ServerStoredDetails.*; import net.java.sip.communicator.service.protocol.event.*; import net.java.sip.communicator.service.protocol.media.*; import net.java.sip.communicator.util.*; @@ -1649,6 +1644,13 @@ else if(d instanceof MobilePhoneDetail) getI18NString( "service.gui.MOBILE_PHONE"); } + else if(d instanceof VideoDetail) + { + localizedType = + GuiActivator.getResources(). + getI18NString( + "service.gui.VIDEO_PHONE"); + } else { localizedType = diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java index ce8aed475..fa6f92ab5 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListTreeCellRenderer.java @@ -25,10 +25,7 @@ import net.java.sip.communicator.service.contactsource.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.protocol.*; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.FaxDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenericDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.PagerDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.PhoneNumberDetail; +import net.java.sip.communicator.service.protocol.ServerStoredDetails.*; import net.java.sip.communicator.util.*; import net.java.sip.communicator.util.account.*; import net.java.sip.communicator.util.skin.*; @@ -771,6 +768,7 @@ private void initButtonsPanel(UIContact uiContact) // Check if contact has additional phone numbers, if yes show the // call button boolean hasPhone = false; + boolean hasVideoPhone = false; // check for phone stored in contact info only // if telephony contact is missing @@ -814,6 +812,10 @@ private void initButtonsPanel(UIContact uiContact) pnd.getNumber().length() > 0) { hasPhone = true; + + if(d instanceof VideoDetail) + hasVideoPhone = true; + break; } } @@ -848,7 +850,8 @@ private void initButtonsPanel(UIContact uiContact) && AccountUtils.getOpSetRegisteredProviders( OperationSetVideoTelephony.class, null, - null).size() > 0)) + null).size() > 0) + || hasVideoPhone) { x += addButton(callVideoButton, ++gridX, x, false); } 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 eec6fec2c..671a2d071 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 @@ -29,13 +29,8 @@ import net.java.sip.communicator.service.gui.Container; import net.java.sip.communicator.service.gui.event.*; import net.java.sip.communicator.service.protocol.*; -import net.java.sip.communicator.service.protocol.OperationSetExtendedAuthorizations.SubscriptionStatus; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.FaxDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenericDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.MobilePhoneDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.PagerDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.PhoneNumberDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.WorkPhoneDetail; +import net.java.sip.communicator.service.protocol.OperationSetExtendedAuthorizations.*; +import net.java.sip.communicator.service.protocol.ServerStoredDetails.*; import net.java.sip.communicator.util.*; import net.java.sip.communicator.util.account.*; import net.java.sip.communicator.util.skin.*; @@ -452,6 +447,13 @@ else if(d instanceof MobilePhoneDetail) getI18NString( "service.gui.MOBILE_PHONE"); } + else if(d instanceof VideoDetail) + { + localizedType = + GuiActivator.getResources(). + getI18NString( + "service.gui.VIDEO_PHONE"); + } else { localizedType = @@ -823,7 +825,12 @@ private void initPluginComponents() if (component.getComponent() == null) continue; - this.add((Component)component.getComponent()); + if(component.getPositionIndex() != -1) + this.add((Component)component.getComponent(), + component.getPositionIndex()); + else + this.add((Component)component.getComponent()); + } } GuiActivator.getUIService().addPluginComponentListener(this); @@ -1292,10 +1299,23 @@ public void pluginComponentAdded(PluginComponentEvent event) if (c.getComponent() == null) return; + int ix = c.getPositionIndex(); + if (constraints == null) - this.add((Component) c.getComponent()); + { + if(ix != -1) + this.add((Component) c.getComponent(), ix); + else + this.add((Component) c.getComponent()); + } else - this.add((Component) c.getComponent(), constraints); + { + if(ix != -1) + this.add((Component) c.getComponent(), constraints, ix); + else + this.add((Component) c.getComponent(), constraints); + } + c.setCurrentContact(metaContact); diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java index 01189e663..fd4173db4 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/MetaUIContact.java @@ -18,13 +18,8 @@ import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.protocol.*; -import net.java.sip.communicator.service.protocol.OperationSetExtendedAuthorizations.SubscriptionStatus; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.FaxDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenericDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.MobilePhoneDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.PagerDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.PhoneNumberDetail; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.WorkPhoneDetail; +import net.java.sip.communicator.service.protocol.OperationSetExtendedAuthorizations.*; +import net.java.sip.communicator.service.protocol.ServerStoredDetails.*; import net.java.sip.communicator.util.*; /** @@ -544,6 +539,13 @@ else if(d instanceof MobilePhoneDetail) getI18NString( "service.gui.MOBILE_PHONE"); } + else if(d instanceof VideoDetail) + { + localizedType = + GuiActivator.getResources(). + getI18NString( + "service.gui.VIDEO_PHONE"); + } else { localizedType = diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/InfoRetreiver.java b/src/net/java/sip/communicator/impl/protocol/jabber/InfoRetreiver.java index 2f6009d63..9928c2a28 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/InfoRetreiver.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/InfoRetreiver.java @@ -9,8 +9,7 @@ import java.lang.reflect.*; import java.util.*; -import net.java.sip.communicator.service.protocol.*; -import net.java.sip.communicator.service.protocol.ServerStoredDetails.GenericDetail; +import net.java.sip.communicator.service.protocol.ServerStoredDetails.*; import net.java.sip.communicator.util.*; import org.jivesoftware.smack.*; @@ -157,23 +156,23 @@ protected List retrieveDetails(String contactAddress) tmp = checkForFullName(card); if(tmp != null) - result.add(new ServerStoredDetails.DisplayNameDetail(tmp)); + result.add(new DisplayNameDetail(tmp)); tmp = card.getFirstName(); if(tmp != null) - result.add(new ServerStoredDetails.FirstNameDetail(tmp)); + result.add(new FirstNameDetail(tmp)); tmp = card.getMiddleName(); if(tmp != null) - result.add(new ServerStoredDetails.MiddleNameDetail(tmp)); + result.add(new MiddleNameDetail(tmp)); tmp = card.getLastName(); if(tmp != null) - result.add(new ServerStoredDetails.LastNameDetail(tmp)); + result.add(new LastNameDetail(tmp)); tmp = card.getNickName(); if(tmp != null) - result.add(new ServerStoredDetails.NicknameDetail(tmp)); + result.add(new NicknameDetail(tmp)); // Home Details // addrField one of @@ -181,46 +180,50 @@ protected List retrieveDetails(String contactAddress) // LOCALITY, REGION, PCODE, CTRY tmp = card.getAddressFieldHome("STREET"); if(tmp != null) - result.add(new ServerStoredDetails.AddressDetail(tmp)); + result.add(new AddressDetail(tmp)); tmp = card.getAddressFieldHome("LOCALITY"); if(tmp != null) - result.add(new ServerStoredDetails.CityDetail(tmp)); + result.add(new CityDetail(tmp)); tmp = card.getAddressFieldHome("REGION"); if(tmp != null) - result.add(new ServerStoredDetails.ProvinceDetail(tmp)); + result.add(new ProvinceDetail(tmp)); tmp = card.getAddressFieldHome("PCODE"); if(tmp != null) - result.add(new ServerStoredDetails.PostalCodeDetail(tmp)); + result.add(new PostalCodeDetail(tmp)); // tmp = card.getAddressFieldHome("CTRY"); // if(tmp != null) -// result.add(new ServerStoredDetails.CountryDetail(tmp); +// result.add(new CountryDetail(tmp); // phoneType one of //VOICE, FAX, PAGER, MSG, CELL, VIDEO, BBS, MODEM, ISDN, PCS, PREF tmp = card.getPhoneHome("VOICE"); if(tmp != null) - result.add(new ServerStoredDetails.PhoneNumberDetail(tmp)); + result.add(new PhoneNumberDetail(tmp)); + + tmp = card.getPhoneHome("VIDEO"); + if(tmp != null) + result.add(new VideoDetail(tmp)); tmp = card.getPhoneHome("FAX"); if(tmp != null) - result.add(new ServerStoredDetails.FaxDetail(tmp)); + result.add(new FaxDetail(tmp)); tmp = card.getPhoneHome("PAGER"); if(tmp != null) - result.add(new ServerStoredDetails.PagerDetail(tmp)); + result.add(new PagerDetail(tmp)); tmp = card.getPhoneHome("CELL"); if(tmp != null) - result.add(new ServerStoredDetails.MobilePhoneDetail(tmp)); + result.add(new MobilePhoneDetail(tmp)); tmp = card.getEmailHome(); if(tmp != null) - result.add(new ServerStoredDetails.EmailAddressDetail(tmp)); + result.add(new EmailAddressDetail(tmp)); // Work Details // addrField one of @@ -228,30 +231,30 @@ protected List retrieveDetails(String contactAddress) // LOCALITY, REGION, PCODE, CTRY tmp = card.getAddressFieldWork("STREET"); if(tmp != null) - result.add(new ServerStoredDetails.WorkAddressDetail(tmp)); + result.add(new WorkAddressDetail(tmp)); tmp = card.getAddressFieldWork("LOCALITY"); if(tmp != null) - result.add(new ServerStoredDetails.WorkCityDetail(tmp)); + result.add(new WorkCityDetail(tmp)); tmp = card.getAddressFieldWork("REGION"); if(tmp != null) - result.add(new ServerStoredDetails.WorkProvinceDetail(tmp)); + result.add(new WorkProvinceDetail(tmp)); tmp = card.getAddressFieldWork("PCODE"); if(tmp != null) - result.add(new ServerStoredDetails.WorkPostalCodeDetail(tmp)); + result.add(new WorkPostalCodeDetail(tmp)); // tmp = card.getAddressFieldWork("CTRY"); // if(tmp != null) -// result.add(new ServerStoredDetails.WorkCountryDetail(tmp); +// result.add(new WorkCountryDetail(tmp); // phoneType one of //VOICE, FAX, PAGER, MSG, CELL, VIDEO, BBS, MODEM, ISDN, PCS, PREF tmp = card.getPhoneWork("VOICE"); if(tmp != null) - result.add(new ServerStoredDetails.WorkPhoneDetail(tmp)); + result.add(new WorkPhoneDetail(tmp)); tmp = card.getPhoneWork("FAX"); if(tmp != null) @@ -263,16 +266,16 @@ protected List retrieveDetails(String contactAddress) tmp = card.getPhoneWork("CELL"); if(tmp != null) - result.add(new ServerStoredDetails.WorkMobilePhoneDetail(tmp)); + result.add(new WorkMobilePhoneDetail(tmp)); tmp = card.getEmailWork(); if(tmp != null) - result.add(new ServerStoredDetails.EmailAddressDetail(tmp)); + result.add(new EmailAddressDetail(tmp)); tmp = card.getOrganization(); if(tmp != null) - result.add(new ServerStoredDetails.WorkOrganizationNameDetail(tmp)); + result.add(new WorkOrganizationNameDetail(tmp)); tmp = card.getOrganizationUnit(); if(tmp != null) @@ -280,8 +283,7 @@ protected List retrieveDetails(String contactAddress) byte[] imageBytes = card.getAvatar(); if(imageBytes != null && imageBytes.length > 0) - result.add(new ServerStoredDetails.ImageDetail( - "Image", imageBytes)); + result.add(new ImageDetail("Image", imageBytes)); } catch (Throwable exc) { @@ -405,7 +407,7 @@ public void load(VCard vcard, * Work department */ public static class WorkDepartmentNameDetail - extends ServerStoredDetails.NameDetail + extends NameDetail { /** * Constructor. @@ -422,7 +424,7 @@ public WorkDepartmentNameDetail(String workDepartmentName) * Fax at work */ public static class WorkFaxDetail - extends ServerStoredDetails.FaxDetail + extends FaxDetail { /** * Constructor. @@ -440,7 +442,7 @@ public WorkFaxDetail(String number) * Pager at work */ public static class WorkPagerDetail - extends ServerStoredDetails.PhoneNumberDetail + extends PhoneNumberDetail { /** * Constructor. diff --git a/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactQuery.java b/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactQuery.java index 43c0ec598..c2beb27a8 100644 --- a/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactQuery.java +++ b/src/net/java/sip/communicator/plugin/phonenumbercontactsource/PhoneNumberContactQuery.java @@ -165,6 +165,13 @@ else if(d instanceof MobilePhoneDetail) PNContactSourceActivator.getResources() .getI18NString("service.gui.MOBILE_PHONE"); } + else if(d instanceof VideoDetail) + { + localizedType = + PNContactSourceActivator.getResources(). + getI18NString( + "service.gui.VIDEO_PHONE"); + } else { localizedType = diff --git a/src/net/java/sip/communicator/service/protocol/ServerStoredDetails.java b/src/net/java/sip/communicator/service/protocol/ServerStoredDetails.java index 3433923e1..3d9043bfe 100644 --- a/src/net/java/sip/communicator/service/protocol/ServerStoredDetails.java +++ b/src/net/java/sip/communicator/service/protocol/ServerStoredDetails.java @@ -389,6 +389,18 @@ public FaxDetail(String number) } } + /** + * A detail used for representing a work mobile phone number. + */ + public static class VideoDetail extends PhoneNumberDetail + { + public VideoDetail(String number) + { + super(number); + super.detailDisplayName = "Video"; + } + } + /** * A Pager number. */