Merge pull request #397 from GZep/development

XEP-0172
This commit is contained in:
Daniel Gultsch 2014-09-04 10:28:13 +02:00
commit 1d6c09e8ff
2 changed files with 12 additions and 2 deletions

View File

@ -32,6 +32,7 @@ public class Contact implements ListItem {
protected String accountUuid; protected String accountUuid;
protected String systemName; protected String systemName;
protected String serverName; protected String serverName;
protected String presenceName;
protected String jid; protected String jid;
protected int subscription = 0; protected int subscription = 0;
protected String systemAccount; protected String systemAccount;
@ -76,6 +77,8 @@ public class Contact implements ListItem {
return this.systemName; return this.systemName;
} else if (this.serverName != null) { } else if (this.serverName != null) {
return this.serverName; return this.serverName;
} else if (this.presenceName != null) {
return this.presenceName;
} else { } else {
return this.jid.split("@")[0]; return this.jid.split("@")[0];
} }
@ -175,6 +178,10 @@ public class Contact implements ListItem {
this.systemName = systemName; this.systemName = systemName;
} }
public void setPresenceName(String presenceName) {
this.presenceName = presenceName;
}
public String getSystemAccount() { public String getSystemAccount() {
return systemAccount; return systemAccount;
} }

View File

@ -49,7 +49,7 @@ public class PresenceParser extends AbstractParser implements
if (packet.getFrom() == null) { if (packet.getFrom() == null) {
return; return;
} }
String[] fromParts = packet.getFrom().split("/"); String[] fromParts = packet.getFrom().split("/", 2);
String type = packet.getAttribute("type"); String type = packet.getAttribute("type");
if (fromParts[0].equals(account.getJid())) { if (fromParts[0].equals(account.getJid())) {
if (fromParts.length == 2) { if (fromParts.length == 2) {
@ -60,7 +60,6 @@ public class PresenceParser extends AbstractParser implements
account.removePresence(fromParts[1]); account.removePresence(fromParts[1]);
} }
} }
} else { } else {
Contact contact = account.getRoster().getContact(packet.getFrom()); Contact contact = account.getRoster().getContact(packet.getFrom());
if (type == null) { if (type == null) {
@ -108,6 +107,10 @@ public class PresenceParser extends AbstractParser implements
contact.setOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST); contact.setOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST);
} }
} }
Element nick = packet.findChild("nick", "http://jabber.org/protocol/nick");
if (nick != null) {
contact.setPresenceName(nick.getContent());
}
} }
mXmppConnectionService.updateRosterUi(); mXmppConnectionService.updateRosterUi();
} }