Search in sources :

Example 1 with RtpCapability

use of eu.siacs.conversations.xmpp.jingle.RtpCapability in project Conversations by siacs.

the class ConversationFragment method onCreateOptionsMenu.

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflater) {
    menuInflater.inflate(R.menu.fragment_conversation, menu);
    final MenuItem menuMucDetails = menu.findItem(R.id.action_muc_details);
    final MenuItem menuContactDetails = menu.findItem(R.id.action_contact_details);
    final MenuItem menuInviteContact = menu.findItem(R.id.action_invite);
    final MenuItem menuMute = menu.findItem(R.id.action_mute);
    final MenuItem menuUnmute = menu.findItem(R.id.action_unmute);
    final MenuItem menuCall = menu.findItem(R.id.action_call);
    final MenuItem menuOngoingCall = menu.findItem(R.id.action_ongoing_call);
    final MenuItem menuVideoCall = menu.findItem(R.id.action_video_call);
    final MenuItem menuTogglePinned = menu.findItem(R.id.action_toggle_pinned);
    if (conversation != null) {
        if (conversation.getMode() == Conversation.MODE_MULTI) {
            menuContactDetails.setVisible(false);
            menuInviteContact.setVisible(conversation.getMucOptions().canInvite());
            menuMucDetails.setTitle(conversation.getMucOptions().isPrivateAndNonAnonymous() ? R.string.action_muc_details : R.string.channel_details);
            menuCall.setVisible(false);
            menuOngoingCall.setVisible(false);
        } else {
            final XmppConnectionService service = activity == null ? null : activity.xmppConnectionService;
            final Optional<OngoingRtpSession> ongoingRtpSession = service == null ? Optional.absent() : service.getJingleConnectionManager().getOngoingRtpConnection(conversation.getContact());
            if (ongoingRtpSession.isPresent()) {
                menuOngoingCall.setVisible(true);
                menuCall.setVisible(false);
            } else {
                menuOngoingCall.setVisible(false);
                final RtpCapability.Capability rtpCapability = RtpCapability.check(conversation.getContact());
                final boolean cameraAvailable = activity != null && activity.isCameraFeatureAvailable();
                menuCall.setVisible(rtpCapability != RtpCapability.Capability.NONE);
                menuVideoCall.setVisible(rtpCapability == RtpCapability.Capability.VIDEO && cameraAvailable);
            }
            menuContactDetails.setVisible(!this.conversation.withSelf());
            menuMucDetails.setVisible(false);
            menuInviteContact.setVisible(service != null && service.findConferenceServer(conversation.getAccount()) != null);
        }
        if (conversation.isMuted()) {
            menuMute.setVisible(false);
        } else {
            menuUnmute.setVisible(false);
        }
        ConversationMenuConfigurator.configureAttachmentMenu(conversation, menu);
        ConversationMenuConfigurator.configureEncryptionMenu(conversation, menu);
        if (conversation.getBooleanAttribute(Conversation.ATTRIBUTE_PINNED_ON_TOP, false)) {
            menuTogglePinned.setTitle(R.string.remove_from_favorites);
        } else {
            menuTogglePinned.setTitle(R.string.add_to_favorites);
        }
    }
    super.onCreateOptionsMenu(menu, menuInflater);
}
Also used : XmppConnectionService(eu.siacs.conversations.services.XmppConnectionService) OngoingRtpSession(eu.siacs.conversations.xmpp.jingle.OngoingRtpSession) RtpCapability(eu.siacs.conversations.xmpp.jingle.RtpCapability) MenuItem(android.view.MenuItem)

Aggregations

MenuItem (android.view.MenuItem)1 XmppConnectionService (eu.siacs.conversations.services.XmppConnectionService)1 OngoingRtpSession (eu.siacs.conversations.xmpp.jingle.OngoingRtpSession)1 RtpCapability (eu.siacs.conversations.xmpp.jingle.RtpCapability)1