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);
}
}
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);
}
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());
}
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());
}
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());
}
Aggregations