private void SendPresenceIfChanged(XmppPresenceStatus status, string message) { if (UserSetting.PresenceMessage != message || UserSetting.PresenceStatus != status) { SendPresence(status, message); } }
/////////////////////////////////////////////////////////////////////////////// public void SetPresence(XmppPresenceStatus newStatus, string customMessage, string photoHash) { if (newStatus == XmppPresenceStatus.Unavailable) { sendStream("<presence type=\"unavailable\"></presence>"); } else { StringBuilder stream = new StringBuilder(); if (!string.IsNullOrEmpty(customMessage)) { customMessage = string.Format("<status>{0}</status>", customMessage); } stream.Append("<presence><priority>1</priority>"); stream.Append(Caps.ToStream()); stream.Append(customMessage); stream.AppendFormat("<show>{0}</show>", XmppIq.PresenceToStr(newStatus)); stream.AppendFormat("<x xmlns=\"vcard-temp:x:update\">"); if (!string.IsNullOrWhiteSpace(photoHash)) { stream.AppendFormat("<photo>{0}</photo>", photoHash); } stream.AppendFormat("</x>"); stream.Append("</presence>"); sendStream(stream.ToString()); } statePresence = newStatus; }
public static string Presence2Str(XmppPresenceStatus p) { if (p == XmppPresenceStatus.Away) { return("(Away)"); } if (p == XmppPresenceStatus.Busy) { return("(Busy)"); } return(string.Empty); }
public static Brush Presence2Brush(XmppPresenceStatus p) { if (p == XmppPresenceStatus.Online) { return(UiEnhancer.GreenBrush); } if (p == XmppPresenceStatus.Away) { return(UiEnhancer.YellowBrush); } if (p == XmppPresenceStatus.Busy) { return(UiEnhancer.RedBrush); } return(UiEnhancer.LightGrayBrush); }
public static ImageSource Presence2Ico(XmppPresenceStatus p) { if (p == XmppPresenceStatus.Online) { return(Icons.UserOnlineSource); } if (p == XmppPresenceStatus.Away) { return(Icons.UserAwaySource); } if (p == XmppPresenceStatus.Busy) { return(Icons.UserBusySource); } return(Icons.UserUnavailableSource); }
public static string PresenceToStr(XmppPresenceStatus prs) { switch (prs) { case XmppPresenceStatus.Busy: return("dnd"); case XmppPresenceStatus.Away: return("away"); case XmppPresenceStatus.Online: case XmppPresenceStatus.Unavailable: default: return(string.Empty); } }
private void cmbSetPresence(ComboBox cmb, XmppPresenceStatus status) { for (int i = 0; i < cmb.Items.Count; i++) { ComboBoxItem cmbItem = cmb.Items[i] as ComboBoxItem; if (cmbItem == null || cmbItem.Tag == null || cmbItem.Tag.GetType() != typeof(XmppPresenceStatus)) { return; } if ((XmppPresenceStatus)cmbItem.Tag == status) { cmb.SelectedIndex = i; return; } } }
private void SendPresence(XmppPresenceStatus status, string message) { if (client == null || !client.IsConnected) { return; } const int MaxMessageLength = 200; if (message.Length > MaxMessageLength) { message = message.Remove(MaxMessageLength); } message = System.Text.RegularExpressions.Regex.Replace(message, @"[\f\n\r\t\v<>&]", ""); cmbSetPresence(cmbRosterPresence, status); txtPresenceMessage.Text = message; UserSetting.PresenceMessage = message; UserSetting.PresenceStatus = status; client.SetPresence(UserSetting.PresenceStatus, UserSetting.PresenceMessage, UserSetting.VCardPhotoHash); // const int MaxResultToSave = 6; if (UserSetting.PastPresenceMessages == null) { UserSetting.PastPresenceMessages = new List <string>(); } if (!string.IsNullOrWhiteSpace(UserSetting.PresenceMessage) && !UserSetting.PastPresenceMessages.Contains(UserSetting.PresenceMessage)) { UserSetting.PastPresenceMessages.Add(UserSetting.PresenceMessage); while (UserSetting.PastPresenceMessages.Count > MaxResultToSave) { UserSetting.PastPresenceMessages.RemoveAt(0); } } // save user presence setting UserSettingProvider.Save(UserSetting); // this.GotParentFocus(txtPresenceMessage); Log(string.Format("you're {1} {2}", client.Jid.Bare, UserSetting.PresenceStatus.ToString().ToLower(), UserSetting.PresenceMessage)); }
private ComboBoxItem cmbPresenceItem(XmppPresenceStatus status, string text, BitmapImage icon) { Image ico = new Image() { Source = icon, Margin = new Thickness(4, 0, 4, 0) }; TextBlock label = new TextBlock() { Text = text }; StackPanel sp = new StackPanel() { Orientation = Orientation.Horizontal, Tag = status }; sp.Children.Add(ico); sp.Children.Add(label); return(new ComboBoxItem() { Tag = status, Content = sp }); }