Search in sources :

Example 96 with Presence

use of org.jivesoftware.smack.packet.Presence in project xabber-android by redsolution.

the class ContactVcardViewerFragment method fillResourceList.

private void fillResourceList(String account, String bareAddress, List<View> resourcesList) {
    final List<Presence> allPresences = RosterManager.getInstance().getPresences(account, bareAddress);
    for (Presence presence : allPresences) {
        String user = presence.getFrom();
        ClientInfo clientInfo = CapabilitiesManager.getInstance().getClientInfo(account, user);
        String client = "";
        if (clientInfo == null) {
            CapabilitiesManager.getInstance().request(account, user);
            client = getString(R.string.please_wait);
        } else if (clientInfo == CapabilitiesManager.INVALID_CLIENT_INFO) {
            client = getString(R.string.unknown);
        } else {
            String name = clientInfo.getName();
            if (name != null) {
                client = name;
            }
            String type = clientInfo.getType();
            if (type != null) {
                if (client.isEmpty()) {
                    client = type;
                } else {
                    client = client + "/" + type;
                }
            }
        }
        int priorityValue = presence.getPriority();
        String priorityString;
        if (priorityValue == Integer.MIN_VALUE) {
            priorityString = getString(R.string.account_priority) + ": " + getString(R.string.unknown);
        } else {
            priorityString = getString(R.string.account_priority) + ": " + priorityValue;
        }
        String label = "";
        if (!client.isEmpty()) {
            label = getString(R.string.contact_viewer_client) + ": " + client + ", ";
        }
        label += priorityString;
        String resource = getString(R.string.account_resource) + ": " + Jid.getResource(user);
        final StatusMode statusMode = StatusMode.createStatusMode(presence);
        String status = presence.getStatus();
        if (TextUtils.isEmpty(status)) {
            status = getString(statusMode.getStringID());
        }
        LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        View resourceView = inflater.inflate(R.layout.contact_info_item, xmppItems, false);
        ((TextView) resourceView.findViewById(R.id.contact_info_item_secondary)).setText(label);
        ((TextView) resourceView.findViewById(R.id.contact_info_item_main)).setText(status);
        ((TextView) resourceView.findViewById(R.id.contact_info_item_secondary_second_line)).setText(resource);
        resourceView.findViewById(R.id.contact_info_item_secondary_second_line).setVisibility(View.VISIBLE);
        ImageView statusIcon = (ImageView) resourceView.findViewById(R.id.contact_info_right_icon);
        statusIcon.setVisibility(View.VISIBLE);
        statusIcon.setImageDrawable(getResources().getDrawable(R.drawable.ic_status));
        statusIcon.setImageLevel(statusMode.getStatusLevel());
        resourcesList.add(resourceView);
    }
}
Also used : StatusMode(com.xabber.android.data.account.StatusMode) LayoutInflater(android.view.LayoutInflater) Presence(org.jivesoftware.smack.packet.Presence) TextView(android.widget.TextView) ClientInfo(com.xabber.android.data.extension.capability.ClientInfo) ImageView(android.widget.ImageView) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView)

Example 97 with Presence

use of org.jivesoftware.smack.packet.Presence in project intellij-plugins by JetBrains.

the class JabberTransport method _getUserPresence.

private UserPresence _getUserPresence(User user) {
    Presence presence = _getPresence(user);
    if (presence != null && presence.getType() == Presence.Type.available) {
        Presence.Mode mode = presence.getMode();
        final PresenceMode presenceMode;
        //noinspection IfStatementWithTooManyBranches
        if (mode == Presence.Mode.away) {
            presenceMode = PresenceMode.AWAY;
        } else if (mode == Presence.Mode.dnd) {
            presenceMode = PresenceMode.DND;
        } else if (mode == Presence.Mode.xa) {
            presenceMode = PresenceMode.EXTENDED_AWAY;
        } else {
            presenceMode = PresenceMode.AVAILABLE;
        }
        return new UserPresence(presenceMode);
    }
    return new UserPresence(false);
}
Also used : Presence(org.jivesoftware.smack.packet.Presence)

Example 98 with Presence

use of org.jivesoftware.smack.packet.Presence in project intellij-plugins by JetBrains.

the class JabberTransport_ConnectionTest method testSubscriptionConfirmation.

public void testSubscriptionConfirmation() throws Throwable {
    // In this test user bob will try to add me to his contact list.
    // This action will require our confirmation
    addEventListener();
    // Create bob
    String userName = "bob" + System.currentTimeMillis();
    final XMPPConnection bob = createLocalConnectionWithJabberUser(userName, null);
    // Set our account to require manual subscription and disconnect:
    myFacade.getConnection().getRoster().setSubscriptionMode(Roster.SubscriptionMode.manual);
    myFacade.getMyAccount().setRememberPassword(true);
    myFacade.saveSettings();
    myFacade.getConnection().close();
    // Bob tries to add me to his contact list
    myEvents.clear();
    final String selfName = myUser + "@" + getUser(bob).substring(userName.length() + 1);
    bob.getRoster().createEntry(selfName, "me", new String[] { "DDD" });
    // Now we connect. Bob should get us in his presence - auto confirmation of the subscription expected.
    // See JabberTransport:mySubscribeListener
    myFacade.connect();
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return null != bob.getRoster().getPresence(selfName);
        }
    };
    assertTrue("Sanity check", myFacade.isConnectedAndAuthenticated());
    Presence presence = bob.getRoster().getPresence(selfName);
    assertNotNull(presence);
    assertEquals("Should return good presence", Presence.Type.available, presence.getType());
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return myEvents.size() > 1;
        }
    };
    final String bobUserName = getUser(bob);
    assertEquals("We should get bob in our contact list as well", 1, myUserModel.getAllUsers().length);
    assertEquals("We should get bob in our contact list as well", bobUserName, myUserModel.getAllUsers()[0].getName());
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return getBobEntry(bobUserName) != null && getBobEntry(bobUserName).getType() == RosterPacket.ItemType.BOTH;
        }
    };
    assertEquals("Should add bob as a contact too", RosterPacket.ItemType.BOTH, getBobEntry(bobUserName).getType());
}
Also used : WaitFor(jetbrains.communicator.util.WaitFor) Presence(org.jivesoftware.smack.packet.Presence) UserPresence(jetbrains.communicator.core.users.UserPresence)

Example 99 with Presence

use of org.jivesoftware.smack.packet.Presence in project intellij-plugins by JetBrains.

the class JabberTransport_ConnectionTest method testSetOwnPresence_Status.

public void testSetOwnPresence_Status() throws Exception {
    String bobName = "bob" + System.currentTimeMillis();
    final XMPPConnection bob = createLocalConnectionWithJabberUser(bobName, null);
    final String user = selfJabberId();
    bob.getRoster().createEntry(user, user, new String[0]);
    myFacade.addUsers("grp", Arrays.asList(getUser(bob)));
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return null != bob.getRoster().getPresence(user);
        }
    };
    assert null != bob.getRoster().getPresence(user);
    // First, change own presence and check it's changed from bob's point of view
    UserPresence presence = new UserPresence(PresenceMode.AWAY);
    assert presence.isOnline();
    myTransport.setOwnPresence(presence);
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return Presence.Mode.away == bob.getRoster().getPresence(user).getMode();
        }
    };
    Presence p = bob.getRoster().getPresence(user);
    assertSame("Own presence should be away", Presence.Mode.away, p.getMode());
    assertEquals("", p.getStatus());
    // Now, change bob's presence
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return myEvents.size() > 2;
        }
    };
    myEvents.clear();
    bob.sendPacket(new Presence(Presence.Type.available, "", 0, Presence.Mode.dnd));
    final User bobUser = myUserModel.findUser(getUser(bob), myTransport.getName());
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return PresenceMode.DND == bobUser.getPresence().getPresenceMode();
        }
    };
    assertSame("Should take bob's presence", PresenceMode.DND, bobUser.getPresence().getPresenceMode());
    UserEvent.Updated event = (UserEvent.Updated) checkEvent(true);
    assertEquals(bobUser, event.getUser());
    assertEquals("presence", event.getPropertyName());
    assertEquals(PresenceMode.DND, event.getNewValue());
    assertEquals(PresenceMode.AVAILABLE, event.getOldValue());
    // Now, change bob's presence + set time
    bob.sendPacket(new Presence(Presence.Type.available, "some status", 0, Presence.Mode.xa));
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return PresenceMode.EXTENDED_AWAY == bobUser.getPresence().getPresenceMode();
        }
    };
    assertSame("Should take bob's presence", PresenceMode.EXTENDED_AWAY, bobUser.getPresence().getPresenceMode());
}
Also used : User(jetbrains.communicator.core.users.User) WaitFor(jetbrains.communicator.util.WaitFor) Presence(org.jivesoftware.smack.packet.Presence) UserPresence(jetbrains.communicator.core.users.UserPresence) UserPresence(jetbrains.communicator.core.users.UserPresence) UserEvent(jetbrains.communicator.core.users.UserEvent)

Example 100 with Presence

use of org.jivesoftware.smack.packet.Presence in project intellij-plugins by JetBrains.

the class JabberTransport_ConnectionTest method testUserOnlineOffline.

public void testUserOnlineOffline() throws Throwable {
    addEventListener();
    String userName = "bob" + System.currentTimeMillis();
    XMPPConnection contact = createLocalConnectionWithJabberUser(userName, null);
    Roster roster = myTransport.getFacade().getConnection().getRoster();
    String jabberUser = getUser(contact);
    final User bob = UserImpl.create(jabberUser, myTransport.getName());
    myEvents.clear();
    roster.createEntry(jabberUser, "Bob", new String[0]);
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return myEvents.size() == 2;
        }
    };
    assertTrue("Bob should be online", bob.isOnline());
    assertEquals("/ideTalk/jabber.png", myTransport.getIcon(bob.getPresence()));
    assertEquals("One user in UserModel expected:" + Arrays.asList(myUserModel.getAllUsers()), 1, myUserModel.getAllUsers().length);
    UserEvent.Online online = ((UserEvent.Online) myEvents.get(1));
    assertEquals("Online event expected", bob, online.getUser());
    myEvents.clear();
    Presence presence = new Presence(Presence.Type.unavailable);
    contact.sendPacket(presence);
    new WaitFor(TIMEOUT) {

        @Override
        protected boolean condition() {
            return myEvents.size() == 1;
        }
    };
    assertFalse("Should become offline", bob.isOnline());
    assertEquals("/ideTalk/offline.png", myTransport.getIcon(myTransport.getUserPresence(bob)));
    assertEquals("Bob should go offline", bob, ((UserEvent.Offline) checkEvent(true)).getUser());
}
Also used : User(jetbrains.communicator.core.users.User) WaitFor(jetbrains.communicator.util.WaitFor) Presence(org.jivesoftware.smack.packet.Presence) UserPresence(jetbrains.communicator.core.users.UserPresence) UserEvent(jetbrains.communicator.core.users.UserEvent)

Aggregations

Presence (org.jivesoftware.smack.packet.Presence)103 Message (org.jivesoftware.smack.packet.Message)21 Resourcepart (org.jxmpp.jid.parts.Resourcepart)12 Jid (org.jxmpp.jid.Jid)11 MessageTypeFilter (org.jivesoftware.smack.filter.MessageTypeFilter)10 AccountItem (com.xabber.android.data.account.AccountItem)9 UserJid (com.xabber.android.data.entity.UserJid)9 AccountJid (com.xabber.android.data.entity.AccountJid)7 StanzaCollector (org.jivesoftware.smack.StanzaCollector)7 AndFilter (org.jivesoftware.smack.filter.AndFilter)7 UserPresence (jetbrains.communicator.core.users.UserPresence)6 MUCUser (org.jivesoftware.smackx.muc.packet.MUCUser)6 BareJid (org.jxmpp.jid.BareJid)6 ClientInfo (com.xabber.android.data.extension.capability.ClientInfo)5 ArrayList (java.util.ArrayList)5 Date (java.util.Date)5 StanzaTypeFilter (org.jivesoftware.smack.filter.StanzaTypeFilter)5 MUCInitialPresence (org.jivesoftware.smackx.muc.packet.MUCInitialPresence)5 Test (org.junit.Test)5 EntityFullJid (org.jxmpp.jid.EntityFullJid)5