/// <summary> /// 接收消息 /// </summary> /// <param name="session"></param> /// <param name="message"></param> public void ReceiveMessage(ContactSession session, Message message) { try { if (message.Type == InstanceAnswerPro.Core.MessageType.ContactMessage) { ContactMessage message2 = message as ContactMessage; Buddy sender = ComponentManager.GetBuddyListBuilder().FindOrCreateBuddy(message2.Uin, true); SessionTabItem item = this.FindIMSession(session); if ((sender != null) && (item != null)) { item.AddMsg(sender, message2.Time, message2.MessagePack); } } else if (message.Type == InstanceAnswerPro.Core.MessageType.InfoMessage) { InfoMessage message3 = message as InfoMessage; SessionTabItem item2 = this.FindIMSession(session); if (item2 != null) { item2.AddMsg(null, message3.Time, message3.MessagePack); } } } catch (Exception) { } }
public ContactSessionWindow(ContactSession session, MessagePack messagePack, bool openFromDesktopBuddy) : this(new SessionTabItem(session)) { if (messagePack != null) { Buddy sender = ComponentManager.GetBuddyListBuilder().FindOrCreateBuddy(session.Uin, true); this.CurrentIMSession.AddMsg(sender, messagePack.Header.Time, messagePack); } }
public SessionTabItem FindIMSession(ContactSession session) { foreach (SessionTabItem item in this.sessionTabItems) { if (item.ContactSession == session) { return(item); } } return(null); }
private void CreateContactSessionWindow(uint uin, object parameter) { //DesktopBuddy buddy = null; //object obj2 = CoreMessenger.Instance.WindowManager.FireEvent("DesktopBuddy", WindowEvent.FindWindow, uin, null); Util_Buddy.BuddySessionParameter parameter2 = parameter as Util_Buddy.BuddySessionParameter; //if (obj2 is DesktopBuddy) //{ // buddy = (DesktopBuddy) obj2; // if (parameter2 == null) // { // parameter2 = new Util_Buddy.BuddySessionParameter { // ContactSessionWindowStatus = Util_Buddy.ContactSessionWindowStatus.Dialog // }; // } // parameter2.OpenFromDesktopBuddy = true; // parameter2.WindowPosition = new Point(buddy.Left, buddy.Top); // buddy.DestroySession(); // buddy.Close(); //} ContactSession contactSession = this._contactSessionManager.GetContactSession(uin, true); ContactSessionWindow window = new ContactSessionWindow(contactSession, null, (parameter2 != null) ? parameter2.OpenFromDesktopBuddy : false); foreach (InstanceAnswerPro.Core.Message message in this._messageCenter.PopMessages(delegate(InstanceAnswerPro.Core.Message message) { if (message.Type == InstanceAnswerPro.Core.MessageType.ContactMessage) { ContactMessage message2 = message as ContactMessage; if (message2.Uin == uin) { return(true); } } else if (message.Type == InstanceAnswerPro.Core.MessageType.InfoMessage) { InfoMessage message3 = message as InfoMessage; if (!message3.IsCommunityMsg && (message3.Uin == uin)) { return(true); } } return(false); }, true)) { window.ReceiveMessage(contactSession, message); } if (parameter2 != null) { FrameworkElement content = window.Content as FrameworkElement; window.Left = parameter2.WindowPosition.X - content.Margin.Left; window.Top = parameter2.WindowPosition.Y - content.Margin.Top; } window.Show(); }
public void OnMessagePushed(InstanceAnswerPro.Core.Message message) { if (message.Type == InstanceAnswerPro.Core.MessageType.InfoMessage) { InfoMessage infoMessage = (InfoMessage)message; if (!infoMessage.IsCommunityMsg) { ContactSession contactSession = this._contactSessionManager.GetContactSession(infoMessage.Uin, false); if (contactSession != null) { contactSession.OnMessageReceived(infoMessage); this._messageCenter.PopMessage(infoMessage); } } else { CommunitySession communitySession = this._communitySessionManager.GetCommunitySession(infoMessage.Uin, false); if (communitySession != null) { communitySession.OnMessageReceived(infoMessage); this._messageCenter.PopMessage(infoMessage); } } } else if (message.Type == InstanceAnswerPro.Core.MessageType.ContactMessage) { ContactMessage message3 = (ContactMessage)message; this._messageCenter.NotifyMessage(new UICommandMessage("AddRecentContact", InstanceAnswerPro.Core.MessageType.ContactMessage, message3.Uin)); } else if (message.Type == InstanceAnswerPro.Core.MessageType.CommunityMessage) { CommunityMessage message4 = (CommunityMessage)message; this._messageCenter.NotifyMessage(new UICommandMessage("AddRecentContact", InstanceAnswerPro.Core.MessageType.CommunityMessage, message4.CommunityID)); this.CalculateUnreadCommunityMessageCount(message4); } }
public void ParseContact(string jsontext, ContactCallback mcb, ErrorCallback ecb) { bool success = true; var json = Json.JsonDecode(jsontext, ref success); if (success && json is Dictionary<string, object>) { var data = json as Dictionary<string, object>; var contact = new Contact(); contact.Email = data["jid"] as string; if (data.ContainsKey("name")) contact.Name = data["name"] as string; if (data.ContainsKey("photo")) contact.PhotoHash = data["photo"] as string; var sessions = data["sessions"] as Dictionary<string, object>; if (sessions != null) { foreach (var element in sessions) { var session = new ContactSession { JID = element.Key }; var s = element.Value as Dictionary<string, object>; if (s != null) { if (s.ContainsKey("show")) session.Show = s["show"] as string; if (s.ContainsKey("status")) session.Status = s["status"] as string; if (s.ContainsKey("caps")) { var caps = s["caps"] as List<object>; if(caps != null) { foreach(var o in caps) { session.Capabilities.Add(o.ToString()); } } } contact.AddSession(session); } } } mcb(contact); } else { ecb("Invalid JSON"); } }
public void ParseContact(string cipher, bool ciphered, ContactCallback mcb, ErrorCallback ecb) { bool success = true; var json = Json.JsonDecode(ciphered ? aes.Decipher(cipher) : cipher, ref success); if (success && json is Dictionary <string, object> ) { var data = json as Dictionary <string, object>; var contact = new Contact(); contact.Email = data["jid"] as string; if (data.ContainsKey("name")) { contact.Name = data["name"] as string; } if (data.ContainsKey("photo")) { contact.PhotoHash = data["photo"] as string; } var sessions = data["sessions"] as Dictionary <string, object>; if (sessions != null) { foreach (var element in sessions) { var session = new ContactSession { JID = element.Key }; var s = element.Value as Dictionary <string, object>; if (s != null) { if (s.ContainsKey("show")) { session.Show = s["show"] as string; } if (s.ContainsKey("status")) { session.Status = s["status"] as string; } if (s.ContainsKey("caps")) { var caps = s["caps"] as List <object>; if (caps != null) { foreach (var o in caps) { session.Capabilities.Add(o.ToString()); } } } contact.AddSession(session); } } } mcb(contact); } else { ecb("Invalid JSON"); } }
public SessionTabItem FindIMSession(ContactSession session) { foreach (SessionTabItem item in this.sessionTabItems) { if (item.ContactSession == session) { return item; } } return null; }