public override void SetPresenceStatus(PresenceStatus status,
string message)
{
Trace.Call(status, message);
if (!IsConnected) {
return;
}
switch (status) {
case PresenceStatus.Online:
JabberClient.Show = ShowType.NONE;
JabberClient.Priority = Server.Priorities[status];
JabberClient.Status = message;
break;
case PresenceStatus.Away:
JabberClient.Priority = Server.Priorities[status];
JabberClient.Show = ShowType.away;
JabberClient.Status = message;
break;
}
JabberClient.SendMyPresence();
// send presence update to all MUCs, see XEP-0045:
// http://xmpp.org/extensions/xep-0045.html#changepres
foreach (var chat in Chats) {
if (!(chat is XmppGroupChatModel)) {
continue;
}
var muc = (XmppGroupChatModel) chat;
var to = new Jid(muc.ID) {
Resource = muc.OwnNickname
};
var presence = new Presence() {
Show = JabberClient.Show,
Status = JabberClient.Status,
From = JabberClient.MyJID,
To = to
};
if (JabberClient.EnableCapabilities) {
presence.AddChild(JabberClient.Capabilities);
}
JabberClient.Send(presence);
}
base.SetPresenceStatus(status, message);
}