diff options
author | Damian Minkov <damencho@jitsi.org> | 2013-03-14 12:35:41 +0000 |
---|---|---|
committer | Damian Minkov <damencho@jitsi.org> | 2013-03-14 12:35:41 +0000 |
commit | 76fa7184994d0755ebacf4a88a8f8773466b8670 (patch) | |
tree | 387e56cf772e1f1371d6bb6a63e8b4783d94f62a /src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java | |
parent | 069ffa44a8030188db1427593c4b2352c8760393 (diff) | |
download | jitsi-76fa7184994d0755ebacf4a88a8f8773466b8670.zip jitsi-76fa7184994d0755ebacf4a88a8f8773466b8670.tar.gz jitsi-76fa7184994d0755ebacf4a88a8f8773466b8670.tar.bz2 |
Does not show video details if it is the same as voice. When obtaining additional phone numbers do not show a number twice. Fixes enabling video buttons in contact list on found VideoDetail.
Diffstat (limited to 'src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java')
-rw-r--r-- | src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java | 77 |
1 files changed, 69 insertions, 8 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java b/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java index 7601847..c52180c 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java @@ -28,10 +28,7 @@ import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.gui.Container; 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.*; @@ -401,6 +398,64 @@ public class MainToolBar } /** + * Checks for <tt>VideoDetail</tt> in the + * <tt>OperationSetServerStoredContactInfo</tt>. + * + * @param transports list of <tt>ChatTransport</tt> + * @return <tt>true</tt> if <tt>VideoDetail</tt> exists in the transports, + * <tt>true</tt> otherwise. + */ + private boolean hasVideoDetail( + List<ChatTransport> transports) + { + boolean hasVideo = false; + for(ChatTransport transport : transports) + { + ProtocolProviderService protocolProvider + = transport.getProtocolProvider(); + + OperationSetServerStoredContactInfo infoOpSet = + protocolProvider.getOperationSet( + OperationSetServerStoredContactInfo.class); + Iterator<GenericDetail> details; + + if(infoOpSet != null + && transport.getDescriptor() instanceof Contact) + { + details = infoOpSet.requestAllDetailsForContact( + (Contact)transport.getDescriptor(), + new DetailsListener( + this.chatSession, callButton)); + + if(details != null) + { + while(details.hasNext()) + { + GenericDetail d = details.next(); + if(d instanceof PhoneNumberDetail && + !(d instanceof PagerDetail) && + !(d instanceof FaxDetail)) + { + PhoneNumberDetail pnd = (PhoneNumberDetail)d; + if(pnd.getNumber() != null && + pnd.getNumber().length() > 0) + { + if(pnd instanceof VideoDetail) + { + hasVideo = true; + break; + } + } + } + } + } + } + } + + return hasVideo; + } + + /** * Implements * ChatSessionChangeListener#currentChatTransportChanged(ChatSession). * @param chatSession the <tt>ChatSession</tt>, which transport has changed @@ -719,7 +774,12 @@ public class MainToolBar pnd.getNumber().length() > 0) { callButton.setEnabled(true); - return; + + if(pnd instanceof VideoDetail) + { + callVideoButton.setEnabled(true); + desktopSharingButton.setEnabled(true); + } } } } @@ -908,9 +968,10 @@ public class MainToolBar throws Exception { - return getOperationSetForCapabilities( + return (!getOperationSetForCapabilities( chatTransports, - OperationSetDesktopSharingServer.class).isEmpty(); + OperationSetDesktopSharingServer.class).isEmpty()) + || hasVideoDetail(chatTransports); } /** @@ -919,7 +980,7 @@ public class MainToolBar */ protected void finished() { - desktopSharingButton.setEnabled(!((Boolean)get())); + desktopSharingButton.setEnabled((Boolean)get()); } } |