blob: 17f9d6bc093113f220037639da416f02839311fe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
/*
* Copyright (c) 2010-2015, Isode Limited, London, England.
* All rights reserved.
*/
package com.isode.stroke.client;
import com.isode.stroke.elements.VCard;
import com.isode.stroke.jid.JID;
import com.isode.stroke.signals.SignalConnection;
import com.isode.stroke.signals.Slot2;
import com.isode.stroke.vcards.VCardManager;
public class NickManagerImpl extends NickManager {
private JID ownJID = new JID();
private String ownNick = "";
private SignalConnection vCardChangedSignal;
NickManagerImpl(final JID ownJID, VCardManager vcardManager) {
this.ownJID = ownJID;
vCardChangedSignal = vcardManager.onVCardChanged.connect(new Slot2<JID, VCard>() {
@Override
public void call(JID p1, VCard p2) {
handleVCardReceived(p1, p2);
}
});
updateOwnNickFromVCard(vcardManager.getVCard(ownJID.toBare()));
}
public void delete() {
vCardChangedSignal.disconnect();
}
@Override
public String getOwnNick() {
return ownNick;
}
@Override
public void setOwnNick(final String nick) {
}
void handleVCardReceived(final JID jid, VCard vcard) {
if (jid.compare(ownJID, JID.CompareType.WithoutResource) != 0) {
return;
}
updateOwnNickFromVCard(vcard);
}
void updateOwnNickFromVCard(VCard vcard) {
String nick = null;
if (vcard != null && !vcard.getNickname().isEmpty()) {
nick = vcard.getNickname();
}
if (ownNick != nick && nick != null && !nick.equals(ownNick)) {
ownNick = nick;
onOwnNickChanged.emit(ownNick);
}
}
}
|