/// <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 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);
 }
Пример #5
0
        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();
        }
Пример #6
0
 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);
     }
 }
Пример #7
0
        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");
            }
        }
Пример #8
0
        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");
            }
        }
 /// <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 SessionTabItem FindIMSession(ContactSession session)
 {
     foreach (SessionTabItem item in this.sessionTabItems)
     {
         if (item.ContactSession == session)
         {
             return item;
         }
     }
     return null;
 }