private void AddMsgToOutputBox(IMMessage imMessage)
        {
            Buddy  sender     = imMessage.Sender;
            string senderName = null;

            if (sender != null)
            {
                CommunityMember member = this.CurrentSessionTabItem.CommunitySession.Community.Members.FindMember(sender.Uin);
                if (member != null)
                {
                    senderName = member.CombineName;
                }
                else
                {
                    senderName = sender.CombineName;
                }
            }
            this.OutputBox.AddMsgToOutputBox(imMessage, senderName, null);
            IMMessage blockURLWarningMsg = Util_Misc.GetBlockURLWarningMsg(imMessage.MessagePack.Header, this.OutputBox.IsCommunity);

            if (blockURLWarningMsg != null)
            {
                this.OutputBox.AddMsgToOutputBox(blockURLWarningMsg, senderName, null);
            }
        }
 public void AddMsg(InstanceAnswerPro.Core.Buddy sender, DateTime time, MessagePack messagePack)
 {
     IMMessage message = new IMMessage(sender, time, messagePack);
     this.imMessageList.Add(message);
     if (this.MessageAdded != null)
     {
         this.MessageAdded(this, null);
     }
 }
Beispiel #3
0
        public void loadArchiveSelectedUserDate(string selectedUser, string search, string date)
        {
            String HTMLResult = "<p></p>";

            if (this.InvokeRequired)
            {
                BeginInvoke(new loadArchiveSelectedUserDateDelegate(loadArchiveSelectedUserDate), new object[] { selectedUser, search });
                return;
            }
            ResetHTML();

            Emoticons myEmoticons = new Emoticons(Directory.GetCurrentDirectory() + "\\Emoticons\\");

            List <Remwave.Client.Storage.StorageMessage> list = mStorage.GetMessageFromArchiveByDate(selectedUser, search, 2048, date);

            for (int i = list.Count - 1; i >= 0; i--)
            {
                JabberUser jabberUser = null;

                MessageStyle        incomingStyle = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Black, Color.Red);
                MessageStyle        outgoingStyle = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Black, Color.Blue);
                MessageTemplateType template      = MessageTemplateType.Notification;
                MessageStyle        style         = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray);

                String messageHTML = "";


                if (list[i].ContentHTML != "")
                {
                    messageHTML = list[i].ContentHTML;
                }
                else
                {
                    messageHTML = list[i].ContentText;
                }



                //Compatibility with legacy text only messages
                if (list[i].Direction == StorageItemDirection.In)
                {
                    style      = incomingStyle;
                    template   = MessageTemplateType.In;
                    jabberUser = new JabberUser(list[i].JID);
                }
                else
                {
                    style      = outgoingStyle;
                    template   = MessageTemplateType.Out;
                    jabberUser = new JabberUser(mStorage.Username);
                }
                IMMessage message = new IMMessage(jabberUser.Nick, messageHTML, list[i].GUID, list[i].Created, style, template, myEmoticons);
                HTMLResult += message.HTML;
            }
            wbConversation.Document.Body.InnerHtml += HTMLResult;
        }
Beispiel #4
0
        void fileDownload_UploadProgressChanged(object sender, EventArgs e)
        {
            SharedFile  sharedFile      = (SharedFile)sender;
            ChatSession tmplChatSession = (ChatSession)myChatSessions[sharedFile.ToJID];

            if (tmplChatSession != null)
            {
                tmplChatSession.ChatBox.SetLink(IMMessage.NormalizeGUID(sharedFile.ID), sharedFile.Size.ToString() + " " + (sharedFile.Offset / sharedFile.Size), true);
            }
        }
        public void AddMsg(InstanceAnswerPro.Core.Buddy sender, DateTime time, MessagePack messagePack)
        {
            IMMessage message = new IMMessage(sender, time, messagePack);

            this.imMessageList.Add(message);
            if (this.MessageAdded != null)
            {
                this.MessageAdded(this, null);
            }
        }
Beispiel #6
0
        void fileDownload_DownloadProgressChanged(object sender, EventArgs e)
        {
            SharedFile  sharedFile      = (SharedFile)sender;
            ChatSession tmplChatSession = (ChatSession)myChatSessions[sharedFile.FromJID];

            if (tmplChatSession != null)
            {
                tmplChatSession.ChatBox.SetLink(IMMessage.NormalizeGUID(sharedFile.ID), sharedFile.FileName.ToString() + " " + sharedFile.GetSizeFormated() + " (" + (100 * sharedFile.Offset / sharedFile.Size) + @"%)", true);
            }
        }
Beispiel #7
0
 void ShowMsg(IMMessage msg)
 {
     if (msg.messageType == MessageBodyType.TXT)
     {
         recvMsgText.text = "收到文本:" + ((TextMessage)msg).content + "\n" + recvMsgText.text;
     }
     else
     {
         recvMsgText.text = "收到语音:" + ((AudioMessage)msg).recognizedText + "\n" + recvMsgText.text;
     }
 }
        private void AddMsgToOutputBox(IMMessage imMessage)
        {
            string senderName = (imMessage.Sender != null) ? imMessage.Sender.NickName : null;

            this.OutputBox.AddMsgToOutputBox(imMessage, senderName, new InputBox.AddMsgToOutputBoxCallBackHandler(this.AddMsgToOutputBoxCallBack));
            IMMessage blockURLWarningMsg = Util_Misc.GetBlockURLWarningMsg(imMessage.MessagePack.Header, this.OutputBox.IsCommunity);

            if (blockURLWarningMsg != null)
            {
                this.OutputBox.AddMsgToOutputBox(blockURLWarningMsg, senderName, null);
            }
        }
Beispiel #9
0
        internal void IncomingMessage(String jid, String messageText, String messageHTML)
        {
            if (messageText != "" || messageHTML != "")
            {
                JabberUser jabberUser      = new JabberUser(jid);
                IMMessage  messageIncoming = new IMMessage(jabberUser.Nick, messageText, Guid.NewGuid().ToString(), "", new MessageStyle(), MessageTemplateType.Incoming, null);
                AddToConversation(jid, jid, messageIncoming.Text, messageIncoming.HTML, messageIncoming.Time, messageIncoming.ID, false, true);
                myClientForm.myStorage.AddMessageToArchive(jid, myClientForm.myStorage.StorageGUID(), messageIncoming.Text, messageIncoming.HTML, false);
                SetComposing(false, jid);

#if (TRACE)
                Console.WriteLine("IM-Message:" + "(" + jid + ")" + messageIncoming.Text);
#endif
            }
        }
 private void RefreshOutputBox()
 {
     if (this.CurrentSessionTabItem != null)
     {
         this.CurrentSessionTabItem.HasNewMessage = false;
         ArrayList iMMessageList = this.CurrentSessionTabItem.IMMessageList;
         int       count         = iMMessageList.Count;
         for (int i = this.CurrentSessionTabItem.MessageIndex; i < count; i++)
         {
             IMMessage imMessage = (IMMessage)iMMessageList[i];
             this.AddMsgToOutputBox(imMessage);
         }
         this.CurrentSessionTabItem.MessageIndex = count;
     }
     ConversationModule.FlashConversationWindow(this);
 }
Beispiel #11
0
        private void SendMessage()
        {
            ChatSession tmplChatSession = (ChatSession)myChatSessions[myChatSessionsTabControl.SelectedTab.Tag];

            if (tmplChatSession != null)
            {
                IMMessage messageOutgoing = new IMMessage(tmplChatSession.JabberUser.Nick, tmplChatSession.ChatTabMessage.Text, Guid.NewGuid().ToString(), "", tmplChatSession.OutgoingStyle, MessageTemplateType.Outgoing, null);

                if (!myClientForm.SendMessage(tmplChatSession.JabberUser, messageOutgoing.Text, messageOutgoing.HTML))
                {
                    return;
                }

                AddToConversation(tmplChatSession.JabberUser.JID, myClientForm.mUserAccount.JabberUser.JID, tmplChatSession.ChatTabMessage.Text, "", "", Guid.NewGuid().ToString(), false, false);
                tmplChatSession.ChatTabMessage.Text = "";
            }
        }
Beispiel #12
0
        private void SendMessage()
        {
            ChatSession tmplChatSession = (ChatSession)myChatSessions[myChatSessionsTabControl.SelectedTab.Tag];

            if (tmplChatSession != null)
            {
                if ((myClientForm.myBuddyPresence[tmplChatSession.JabberUser.JID] == null || (int)myClientForm.myBuddyPresence[tmplChatSession.JabberUser.JID] == 0))
                {
                    if (!tmplChatSession.OfflineMessageNotified)
                    {
                        tmplChatSession.OfflineMessageNotified = true;
                        AddNotification(
                            tmplChatSession.JabberUser.JID,
                            "INFO",
                            Properties.Localization.txtChatInfoUserOfflineMessage,
                            DateTime.Now,
                            Guid.NewGuid().ToString(),
                            false,
                            true
                            );
                    }
                }
                else
                {
                    tmplChatSession.OfflineMessageNotified = false;
                }

                IMMessage messageOutgoing = new IMMessage(tmplChatSession.JabberUser.Nick, tmplChatSession.ChatBox.ChatTabMessage.Text, Guid.NewGuid().ToString(), DateTime.Now, tmplChatSession.OutgoingStyle, MessageTemplateType.Outgoing, null);

                if (!myClientForm.SendMessage(tmplChatSession.JabberUser, messageOutgoing.Text, messageOutgoing.HTML))
                {
                    return;
                }

                AddToConversation(tmplChatSession.JabberUser.JID,
                                  myClientForm.mUserAccount.JabberUser.JID,
                                  tmplChatSession.ChatBox.ChatTabMessage.Text.Trim().Replace(@"&", @"&amp;").Replace(@"<", @"&lt;").Replace(@">", @"&gt;"),
                                  "",
                                  DateTime.Now,
                                  Guid.NewGuid().ToString(),
                                  false,
                                  false
                                  );
                tmplChatSession.ChatBox.ChatTabMessage.Text = "";
            }
        }
Beispiel #13
0
 void OnReceiveMessage(IMMessage msg)
 {
     if (msg.messageType == MessageBodyType.Voice)
     {
         var audioMsg = (AudioMessage)msg;
         ShowMsg(audioMsg);
         Log2UI("下载语音文件");
         audioMsg.Download((code, audiMsgObj) => {
             Log2UI("播放接收到的语音消息");
             audiMsgObj.Play(null);
         });
     }
     else if (msg.messageType == MessageBodyType.TXT)
     {
         ShowMsg(msg);
     }
 }
Beispiel #14
0
        private void CheckNewMsg()
        {
            string queryString = WebUtils.GetQueryString("chattype");
            int    num         = 0;

            if (queryString == "manager")
            {
                AccountInfo loginAccount = Account.GetLoginAccount();
                if (loginAccount != null)
                {
                    num = loginAccount.AutoID;
                }
            }
            else if (queryString == "user")
            {
                num = base.UserID;
            }
            base.Response.Write(IMMessage.HasNewMessage(queryString, num));
        }
    public void OnRecvMessage(MessageInfoBase message)
    {
        if (IMClient.Instance.ReceiveMessageListener != null)
        {
            IMMessage messageObj = null;
            switch (message.MessageType)
            {
            case MessageBodyType.TXT:
            {
                var txtMsg = (YIMEngine.TextMessage)message;
                var msg    = new TextMessage(message.SenderID, message.RecvID, (ChatType)message.ChatType, txtMsg.Content, true);
                msg.sendTime   = (uint)message.CreateTime;
                msg.sendStatus = SendStatus.Sended;
                messageObj     = msg;
            }
            break;

            case MessageBodyType.Voice:
            {
                var voiceMsg = (YIMEngine.VoiceMessage)message;
                var msg      = new AudioMessage(message.SenderID, voiceMsg.RecvID, (ChatType)message.ChatType, voiceMsg.Param, true);
                msg.recognizedText = voiceMsg.Text;
                msg.audioDuration  = voiceMsg.Duration;
                msg.sendTime       = (uint)message.CreateTime;
                msg.sendStatus     = SendStatus.Sended;
                messageObj         = msg;
            }
            break;

            default:
                Log.e("unknown message type:" + message.MessageType.ToString());
                break;
            }

            if (messageObj != null)
            {
                messageObj.requestID = message.RequestID;
                IMClient.Instance.ReceiveMessageListener(messageObj);
            }
        }
    }
 private void AddMsgToOutputBoxCallBack(IMMessage imMessage, object element)
 {
     if (!imMessage.AvatarProcessed)
     {
         SysFaceElement element2 = element as SysFaceElement;
         imMessage.AvatarProcessed = true;
         if ((element2.Index == 11) && (imMessage.Sender.Uin == this.CurrentIMSession.Buddy.Uin))
         {
             //this.PlayAvatar("Bama.QQ.Controls.AvatarFire");
         }
         else if (element2.Index == 0x26)
         {
             if (imMessage.Sender.Uin != this.CurrentIMSession.Buddy.Uin)
             {
                 //this.PlayAvatar("Bama.QQ.Controls.AvatarHammer");
             }
             else if (base.WindowState == WindowState.Normal)
             {
                 //base.BeginStoryboard(base.FindResource("big_hammer") as Storyboard);
                 //base.BeginStoryboard(base.FindResource("beaten") as Storyboard);
             }
         }
     }
 }
Beispiel #17
0
        public void AddNotification(String jid, String senderEvent, string messageText, string messageDateTime, string messageGUID, bool flashWindow)
        {
            if (InvokeRequired)
            {
                this.Invoke(new AddNotificationDelegate(this.AddNotification), new object[] { jid, senderEvent, messageText, messageDateTime, messageGUID, flashWindow });
                return;
            }

            //IMMessage parameters
            MessageStyle        style           = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray);
            MessageTemplateType template        = MessageTemplateType.Notification;
            ChatSession         tmplChatSession = (ChatSession)myChatSessions[jid];

            switch (senderEvent)
            {
            case "INFO":
                senderEvent = "";
                myClientForm.myNotifyIcon.ShowBalloonTip(10, jid, messageText, ToolTipIcon.Info);
                break;

            case "CLIENT":
            case "SERVER":
            case "PRESENCE":
            case "BUDDYUPDATE":
                senderEvent = Properties.Localization.txtChatInfoSenderSystem;
                break;

            case "NUDGE":
                senderEvent = "";
                myClientForm.myClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingNudge);
                FlashWindow(this.Handle, true);
                #region Shake Window
                Random rand = new Random();
                int    left = this.Left;
                int    top  = this.Top;
                for (int i = 0; i < 30; i++)
                {
                    int randLeft = rand.Next(-10, 10);
                    int randTop  = rand.Next(-10, 10);
                    this.Left = (left + randLeft) > 0 ? left + randLeft : 0;
                    this.Top  = (top + randTop) > 0 ? left + randLeft : 0;
                    Thread.Sleep(50);
                }
                this.Left = left;
                this.Top  = top;
                #endregion
                break;

            case "INVITE":
                senderEvent = Properties.Localization.txtChatInfoSenderUser;
                myClientForm.myClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingInstantMessage);
                break;
            }
            //if chat session exist display content in conversation window
            if (tmplChatSession != null)
            {
                if (tmplChatSession.ChatTabConversation != null)
                {
                    IMMessage message = new IMMessage(senderEvent, messageText, messageGUID, messageDateTime, style, template, myEmoticons);
                    tmplChatSession.ChatTabConversation.Document.Write(message.HTML);
                    tmplChatSession.ChatTabConversation.Document.Window.ScrollTo(0, tmplChatSession.ChatTabConversation.Document.Body.ScrollRectangle.Height);
                }
            }
        }
Beispiel #18
0
 private void OnImageHyperLinkAdd(IMMessage imMessage, ImageHyperlink hyperlink)
 {
     Guid guid = hyperlink.Guid;
     if (guid.Equals(MessageElementTags.GuidLinkSafePage) || guid.Equals(MessageElementTags.GuidLinkHttp))
     {
         TXGrayURLMgr grayURLMgr = ComponentManager.GetGrayURLMgr();
         ITXDataRead txData = grayURLMgr.QueryURLInfo(hyperlink.SoureUrl);
         if (txData != null)
         {
             this.SetURLInfo(hyperlink, txData);
         }
         else
         {
             GrayURL.QueryType eQueryType = GrayURL.QueryType.QueryType_Unknown;
             uint uin = 0;
             if (imMessage.Sender != null)
             {
                 uin = imMessage.Sender.Uin;
             }
             if (uin == 0)
             {
                 eQueryType = GrayURL.QueryType.QueryType_Unknown;
             }
             else if (Util_Buddy.GetCurrentBuddy().Uin == uin)
             {
                 eQueryType = GrayURL.QueryType.QueryType_Sender;
             }
             else
             {
                 eQueryType = GrayURL.QueryType.QueryType_Reciver;
             }
             GrayURL.MSGType msgType = this.IsCommunity ? GrayURL.MSGType.MSGType_Group : GrayURL.MSGType.MSGType_Buddy;
             grayURLMgr.UpdateURLInfoEx(msgType, hyperlink.SoureUrl, eQueryType);
             this.AddToUrlInfoDownloadingList(hyperlink.SoureUrl, hyperlink);
         }
     }
 }
Beispiel #19
0
        public void AddMsgToOutputBox(IMMessage imMessage, string senderName, AddMsgToOutputBoxCallBackHandler callBack)
        {
            this.CheckMsgPiece();
            InputBox box = this;
            MessagePack messagePack = imMessage.MessagePack;
            if (messagePack != null)
            {
                if (messagePack.NeedShowHeader && (imMessage.Sender == null))
                {
                    messagePack.NeedShowHeader = false;
                }
                if (messagePack.NeedShowHeader && string.IsNullOrEmpty(senderName))
                {
                    senderName = imMessage.SenderName;
                    if (string.IsNullOrEmpty(senderName))
                    {
                        senderName = imMessage.Sender.NickName;
                    }
                }
                uint elemCount = messagePack.GetElemCount();
                Section newItem = new Section();
                Block lastBlock = box.Document.Blocks.LastBlock;
                if ((lastBlock != null) && (string.Compare(lastBlock.Tag as string, "LastTag") != 0))
                {
                    lastBlock = null;
                }
                if (lastBlock == null)
                {
                    Paragraph paragraph = new Paragraph
                    {
                        Tag = "LastTag",
                        Margin = new Thickness(0.0)
                    };
                    lastBlock = paragraph;
                    box.Document.Blocks.Add(lastBlock);
                }
                if (messagePack.NeedShowHeader)
                {
                    if ((imMessage.Sender != null) && (imMessage.Sender.Uin == Util_Buddy.GetCurrentBuddy().Uin))
                    {
                        newItem.Tag = "me";
                    }
                    else
                    {
                        newItem.Tag = "other";
                    }
                }
                else
                {
                    newItem.Tag = "info";
                }
                box.Document.Blocks.InsertBefore(lastBlock, newItem);
                Paragraph item = new Paragraph();
                if (messagePack.NeedShowHeader)
                {
                    string str;
                    Paragraph paragraph3 = new Paragraph
                    {
                        Foreground = new SolidColorBrush((imMessage.Sender.Uin == Util_Buddy.GetCurrentBuddy().Uin) ? this._selfColor : this._oppColor)
                    };
                    if (this.IsMsgRecord)
                    {
                        str = senderName + "  " + imMessage.DateTime.ToLocalTime().ToString();
                    }
                    else
                    {
                        str = senderName + "  " + imMessage.DateTime.ToLocalTime().ToLongTimeString();
                        item.Margin = new Thickness(13.0, 0.0, 0.0, 0.0);
                    }
                    paragraph3.Inlines.Add(str);
                    newItem.Blocks.Add(paragraph3);
                }
                SetDateTime(newItem, imMessage.DateTime);
                Paragraph paragraph4 = new Paragraph
                {
                    Margin = new Thickness(13.0, 0.0, 0.0, 0.0)
                };
                string fontName = messagePack.Header.FontName;
                if ((string.IsNullOrEmpty(fontName) || (fontName == "宋体")) || (((fontName == "新宋体") || (fontName == "仿宋")) || (fontName == "黑体")))
                {
                    fontName = "Microsoft YaHei";
                }
                if (messagePack.Header.FontSize == 0)
                {
                    messagePack.Header.FontSize = 9;
                }
                item.FontFamily = new FontFamily(fontName);
                item.FontSize = messagePack.Header.FontSize + 3;
                item.Foreground = new SolidColorBrush(messagePack.Header.FontColor);
                paragraph4.FontFamily = new FontFamily(messagePack.Header.FontName);
                paragraph4.FontSize = messagePack.Header.FontSize + 3;
                paragraph4.Foreground = new SolidColorBrush(messagePack.Header.FontColor);
                Dictionary<string, bool> imagelist = new Dictionary<string, bool>();
                Paragraph paragraph5 = item;
                bool flag = false;
                for (uint i = 0; i < elemCount; i++)
                {
                    ImageElement element4;
                    string path;
                    ImageEx ex2;
                    MessageElement elem = messagePack.GetElem(i);
                    switch (elem.Category)
                    {
                        case MsgPackCat.ELEMTYPE_TEXT:
                            {
                                Guid guid;
                                Guid guid2;
                                TextElement element2 = (TextElement)elem;
                                string text = element2.GetText();
                                if (!flag && element2.NeedIndent)
                                {
                                    Span lastInline = item.Inlines.LastInline as Span;
                                    if (lastInline != null)
                                    {
                                        Run run = lastInline.Inlines.LastInline as Run;
                                        if (run != null)
                                        {
                                            run.Text = run.Text.Replace("\r", "").Replace("\n", "");
                                        }
                                    }
                                    paragraph5 = paragraph4;
                                }
                                string url = element2.GetUrl(out guid, out guid2);
                                Span span2 = new Span();
                                Span span3 = span2;
                                paragraph5.Inlines.Add(span3);
                                if ((messagePack.Header.FontEffect & 2) != 0)
                                {
                                    span2.FontStyle = FontStyles.Italic;
                                }
                                if ((messagePack.Header.FontEffect & 1) != 0)
                                {
                                    span2.FontWeight = FontWeights.Bold;
                                }
                                if (string.IsNullOrEmpty(url))
                                {
                                    if ((messagePack.Header.FontEffect & 4) != 0)
                                    {
                                        Underline underline = new Underline();
                                        span2.Inlines.Add(underline);
                                        span2 = underline;
                                    }
                                    span2.Inlines.Add(text);
                                }
                                else
                                {
                                    ImageHyperlink hyperlink = new ImageHyperlink
                                    {
                                        Guid = guid,
                                        SoureUrl = url
                                    };
                                    span2.Inlines.Add(hyperlink);
                                    span2 = hyperlink;
                                    hyperlink.AddText(text);
                                    this.OnImageHyperLinkAdd(imMessage, hyperlink);
                                }
                                continue;
                            }
                        case MsgPackCat.ELEMTYPE_SYSFACE:
                            {
                                SysFaceElement element = (SysFaceElement)elem;
                                ImageEx uiElement = ReplaceControls.CreateImageExWithId(element.FileName, element.Index.ToString());
                                uiElement.Width = element.FaceWidth;
                                uiElement.Height = element.FaceHeight;
                                paragraph5.Inlines.Add(uiElement);
                                if (callBack != null)
                                {
                                    callBack(imMessage, element);
                                }
                                continue;
                            }
                        case MsgPackCat.ELEMTYPE_IMAGE:
                        case MsgPackCat.ELEMTYPE_OFFLINEPIC:
                            element4 = (ImageElement)elem;
                            path = element4.Path;
                            if (string.IsNullOrEmpty(path))
                            {
                                continue;
                            }
                            ex2 = new ImageEx
                            {
                                HorizontalAlignment = HorizontalAlignment.Left,
                                VerticalAlignment = VerticalAlignment.Top,
                                Stretch = Stretch.None,
                                SnapsToDevicePixels = true,
                                Tag = element4
                            };
                            path = path.ToLower();
                            if (!CheckFileExists(imagelist, path))
                            {
                                break;
                            }
                            ex2.Source = path;
                            goto Label_0710;

                        case MsgPackCat.ELEMTYPE_FILE:
                            {
                                FileElement element5 = (FileElement)elem;
                                string str7 = Helper_Icon.MakeSysIconFileByFileName(element5.Path);
                                string fileSize = element5.GetFileSize();
                                string fileName = element5.GetFileName();
                                if (!string.IsNullOrEmpty(str7))
                                {
                                    ImageEx ex3 = new ImageEx
                                    {
                                        HorizontalAlignment = HorizontalAlignment.Left,
                                        VerticalAlignment = VerticalAlignment.Top,
                                        Stretch = Stretch.Uniform,
                                        SnapsToDevicePixels = true,
                                        Width = 32.0,
                                        Height = 32.0
                                    };
                                    if (!string.IsNullOrEmpty(element5.Tip))
                                    {
                                        ex3.ToolTip = element5.Tip;
                                    }
                                    ex3.Source = str7;
                                    StackPanel panel = new StackPanel
                                    {
                                        Margin = new Thickness(0.0, 2.0, 0.0, 2.0),
                                        Orientation = Orientation.Horizontal
                                    };
                                    panel.Children.Add(ex3);
                                    TextBlock block2 = new TextBlock(new Run(fileName + "\n" + fileSize))
                                    {
                                        Margin = new Thickness(0.0, 4.0, 0.0, 0.0)
                                    };
                                    panel.Children.Add(block2);
                                    paragraph5.Inlines.Add(panel);
                                }
                                continue;
                            }
                        default:
                            goto Label_087B;
                    }
                    if (this.IsMsgRecord)
                    {
                        ex2.Source = CoreMessenger.Instance.GetAppPath(KernelWrapper.APP_PATH_TYPE.APP_PATH_DATA) + "errorBmp.gif";
                    }
                    else if (MsgPackCat.ELEMTYPE_IMAGE == elem.Category)
                    {
                        TXLog.TXLogImage(string.Concat(new object[] { "收到图片文件需要下载:", element4.Id, "  ", path }));
                        ex2.Source = CoreMessenger.Instance.GetAppPath(KernelWrapper.APP_PATH_TYPE.APP_PATH_DATA) + "sendingBmp.gif";
                        this.AddToImagesDownloadingList(element4.Id, ex2);
                    }
                    else if (MsgPackCat.ELEMTYPE_OFFLINEPIC == elem.Category)
                    {
                        TXLog.TXLogImage(string.Concat(new object[] { "收到离线图片文件需要下载:", element4.Id, "  ", path }));
                        ex2.IsEnabledClick = true;
                        ex2.Source = CoreMessenger.Instance.GetAppPath(KernelWrapper.APP_PATH_TYPE.APP_PATH_DATA) + "OfflinepicManualGet.png";
                        ex2.ToolTip = "点击获取图片";
                        ex2.Cursor = Cursors.Hand;
                    }
                Label_0710:
                    paragraph5.Inlines.Add(ex2);
                    continue;
                Label_087B:
                    TXLog.TXLog3("Msg", "AIO 未处理的消息类型, ");
                }
                if (item.Inlines.Count > 0)
                {
                    newItem.Blocks.Add(item);
                }
                if (paragraph4.Inlines.Count > 0)
                {
                    newItem.Blocks.Add(paragraph4);
                }
                box.ScrollToEnd();
            }
        }
 private void AddMsgToOutputBox(IMMessage imMessage)
 {
     Buddy sender = imMessage.Sender;
     string senderName = null;
     if (sender != null)
     {
         CommunityMember member = this.CurrentSessionTabItem.CommunitySession.Community.Members.FindMember(sender.Uin);
         if (member != null)
         {
             senderName = member.CombineName;
         }
         else
         {
             senderName = sender.CombineName;
         }
     }
     this.OutputBox.AddMsgToOutputBox(imMessage, senderName, null);
     IMMessage blockURLWarningMsg = Util_Misc.GetBlockURLWarningMsg(imMessage.MessagePack.Header, this.OutputBox.IsCommunity);
     if (blockURLWarningMsg != null)
     {
         this.OutputBox.AddMsgToOutputBox(blockURLWarningMsg, senderName, null);
     }
 }
 private void AddMsgToOutputBoxCallBack(IMMessage imMessage, object element)
 {
     if (!imMessage.AvatarProcessed)
     {
         SysFaceElement element2 = element as SysFaceElement;
         imMessage.AvatarProcessed = true;
         if ((element2.Index == 11) && (imMessage.Sender.Uin == this.CurrentIMSession.Buddy.Uin))
         {
             //this.PlayAvatar("Bama.QQ.Controls.AvatarFire");
         }
         else if (element2.Index == 0x26)
         {
             if (imMessage.Sender.Uin != this.CurrentIMSession.Buddy.Uin)
             {
                 //this.PlayAvatar("Bama.QQ.Controls.AvatarHammer");
             }
             else if (base.WindowState == WindowState.Normal)
             {
                 //base.BeginStoryboard(base.FindResource("big_hammer") as Storyboard);
                 //base.BeginStoryboard(base.FindResource("beaten") as Storyboard);
             }
         }
     }
 }
 private void AddMsgToOutputBox(IMMessage imMessage)
 {
     string senderName = (imMessage.Sender != null) ? imMessage.Sender.NickName : null;
     this.OutputBox.AddMsgToOutputBox(imMessage, senderName, new InputBox.AddMsgToOutputBoxCallBackHandler(this.AddMsgToOutputBoxCallBack));
     IMMessage blockURLWarningMsg = Util_Misc.GetBlockURLWarningMsg(imMessage.MessagePack.Header, this.OutputBox.IsCommunity);
     if (blockURLWarningMsg != null)
     {
         this.OutputBox.AddMsgToOutputBox(blockURLWarningMsg, senderName, null);
     }
 }
Beispiel #23
0
        public void AddToConversation(String chatJID, String senderJID, string messageText, string messageHTML, DateTime messageDateTime, string messageGUID, bool forceEmpty, bool flashWindow)
        {
            if (InvokeRequired)
            {
                this.Invoke(new AddToConversationDelegate(this.AddToConversation), new object[] { chatJID, senderJID, messageText, messageDateTime, messageGUID, forceEmpty, flashWindow });
                return;
            }

            //IMMessage parameters

            MessageStyle        style            = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray);
            MessageTemplateType template         = MessageTemplateType.Notification;
            ChatSession         tmplChatSession  = (ChatSession)myChatSessions[chatJID];
            JabberUser          chatJabberUser   = null;
            JabberUser          senderJabberUser = null;

            if (tmplChatSession == null)
            {
                try
                {
                    ContactList contactList = myClientForm.mContactBook.getCandidatesForJabberID(chatJID);
                    if (contactList.Count > 0)
                    {
                        NTContact ntContact = (NTContact)contactList[0];
                        chatJabberUser = new JabberUser(ntContact.NTJabberID, ntContact.NTNickname);
                    }
                    else
                    {
                        chatJabberUser = new JabberUser(chatJID);
                    }

                    NewChat(chatJabberUser, false);
                    tmplChatSession = (ChatSession)myChatSessions[chatJabberUser.JID];
                    if (tmplChatSession == null)
                    {
                        return;
                    }
                }
                catch (Exception)
                {
                    return;
                }
            }
            if (forceEmpty)
            {
                tmplChatSession.ChatBox.ResetHTML();
            }
            if (senderJID == myClientForm.mUserAccount.JabberUser.JID)
            {
                //outgoing message
                senderJabberUser = myClientForm.mUserAccount.JabberUser;
                style            = tmplChatSession.OutgoingStyle;
                template         = MessageTemplateType.Out;
            }
            else
            { //incomming message
                senderJabberUser = tmplChatSession.JabberUser;
                if (flashWindow)
                {
                    FlashWindow(this.Handle, true);
                    myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingInstantMessage);
                    ShowIt();
                    mMessageInTimeout    = 360;
                    myNotifyIcon.Visible = true;
                }
                style    = tmplChatSession.IncomingStyle;
                template = MessageTemplateType.In;
            }

            //if chat session exist display content in conversation window
            if (tmplChatSession != null)
            {
                if (tmplChatSession.ChatBox.ChatTabConversation != null)
                {
                    SetComposing(false, senderJID);
                    if (messageHTML == "")
                    {
                        messageHTML = messageText;
                    }

                    IMMessage message = new IMMessage(senderJabberUser.Nick, messageHTML, messageGUID, messageDateTime, style, template, myEmoticons);
                    tmplChatSession.ChatBox.ChatTabConversation.Document.Body.InnerHtml += message.HTML;
                    tmplChatSession.ChatBox.ChatTabConversation.Document.Window.ScrollTo(0, tmplChatSession.ChatBox.ChatTabConversation.Document.Body.ScrollRectangle.Height);
                    tmplChatSession.ChatBox.AttachEvents();
                }
            }
        }
Beispiel #24
0
        public void AddNotification(String jid, String senderEvent, string messageText, DateTime messageDateTime, string messageGUID, bool flashWindow, bool forceChat)
        {
            if (InvokeRequired)
            {
                this.Invoke(new AddNotificationDelegate(this.AddNotification), new object[] { jid, senderEvent, messageText, messageDateTime, messageGUID, flashWindow });
                return;
            }

            //IMMessage parameters
            MessageStyle        style           = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray);
            MessageTemplateType template        = MessageTemplateType.Notification;
            ChatSession         tmplChatSession = (ChatSession)myChatSessions[jid];
            JabberUser          jabberUser      = new JabberUser(jid);

            switch (senderEvent)
            {
            case "INFO":
                senderEvent = "";
                if (flashWindow)
                {
                    myClientForm.myNotifyIcon.ShowBalloonTip(10, jabberUser.Nick, messageText, ToolTipIcon.Info);
                }
                break;

            case "CLIENT":
            case "SERVER":
            case "PRESENCE":
            case "BUDDYUPDATE":
                senderEvent = Properties.Localization.txtChatInfoSenderSystem;
                break;

            case "NUDGE":
                senderEvent = "";
                myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingNudge);
                FlashWindow(this.Handle, true);
                #region Shake Window
                Random rand = new Random();
                int    left = this.Left;
                int    top  = this.Top;
                for (int i = 0; i < 30; i++)
                {
                    int randLeft = rand.Next(-10, 10);
                    int randTop  = rand.Next(-10, 10);
                    this.Left = (left + randLeft) > 0 ? left + randLeft : 0;
                    this.Top  = (top + randTop) > 0 ? left + randLeft : 0;
                    Thread.Sleep(50);
                }
                this.Left = left;
                this.Top  = top;
                #endregion
                break;

            case "INVITE":
                senderEvent = Properties.Localization.txtChatInfoSenderUser;
                myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingInstantMessage);
                break;
            }

            if (forceChat && tmplChatSession == null)
            {
                try
                {
                    JabberUser  chatJabberUser;
                    ContactList contactList = myClientForm.mContactBook.getCandidatesForJabberID(jid);
                    if (contactList.Count > 0)
                    {
                        NTContact ntContact = (NTContact)contactList[0];
                        chatJabberUser = new JabberUser(ntContact.NTJabberID, ntContact.NTNickname);
                    }
                    else
                    {
                        chatJabberUser = new JabberUser(jid);
                    }

                    NewChat(chatJabberUser, false);
                    tmplChatSession = (ChatSession)myChatSessions[chatJabberUser.JID];
                    if (tmplChatSession == null)
                    {
                        return;
                    }
                }
                catch (Exception)
                {
                    return;
                }
            }

            //if chat session exist display content in conversation window
            if (tmplChatSession != null)
            {
                if (tmplChatSession.ChatBox.ChatTabConversation != null)
                {
                    IMMessage message = new IMMessage(senderEvent, messageText, messageGUID, messageDateTime, style, template, myEmoticons);
                    tmplChatSession.ChatBox.ChatTabConversation.Document.Body.InnerHtml += message.HTML;
                    tmplChatSession.ChatBox.ChatTabConversation.Document.Window.ScrollTo(0, tmplChatSession.ChatBox.ChatTabConversation.Document.Body.ScrollRectangle.Height);
                    tmplChatSession.ChatBox.AttachEvents();
                }
            }
        }
Beispiel #25
0
        void HandleWebSocketFrame(IChannelHandlerContext ctx, WebSocketFrame frame)
        {
            // Check for closing frame
            if (frame is CloseWebSocketFrame)
            {
                this.handshaker.CloseAsync(ctx.Channel, (CloseWebSocketFrame)frame.Retain());
                return;
            }

            if (frame is PingWebSocketFrame)
            {
                ctx.WriteAsync(new PongWebSocketFrame((IByteBuffer)frame.Content.Retain()));
                return;
            }

            if (frame is TextWebSocketFrame)
            {
                // Echo the frame
                String requestmsg = ((TextWebSocketFrame)frame).Text();

                IMMessage iMMessage = new IMMessage();
                iMMessage = JsonHandler.DeserializeJsonToObject <IMMessage>(requestmsg);

                //0为登陆,保存管道
                if (iMMessage.msgType == 0)
                {
                    #region 登陆
                    //app
                    if (iMMessage.pipetype == "0")
                    {
                        try
                        {
                            IChannel jieshourenctx = AppUsers[iMMessage.uid];
                            AppUsers.Add(iMMessage.uid, ctx.Channel);
                        }
                        catch
                        {
                            AppUsers.Remove(iMMessage.uid);
                            AppUsers.Add(iMMessage.uid, ctx.Channel);
                        }
                    }
                    //web
                    if (iMMessage.pipetype == "1")
                    {
                        try
                        {
                            IChannel jieshourenctx = WebUsers[iMMessage.uid];
                            WebUsers.Add(iMMessage.uid, ctx.Channel);
                        }
                        catch
                        {
                            WebUsers.Remove(iMMessage.uid);
                            WebUsers.Add(iMMessage.uid, ctx.Channel);
                        }
                    }

                    #endregion

                    List <IMMessage> list = new List <IMMessage>();

                    #region 取出所有消息并且反序列化
                    //取出所有消息并且反序列化
                    var b = redisHelper.ListRange(iMMessage.uid).ToList();
                    foreach (var item in b)
                    {
                        IMMessage sendiMMessage = new IMMessage();
                        sendiMMessage = JsonHandler.DeserializeJsonToObject <IMMessage>(item);
                        list.Add(sendiMMessage);
                    }
                    //删除此键
                    if (b.Count() != 0)
                    {
                        //删除
                        redisHelper.KeyDelete(iMMessage.uid);
                    }
                    #endregion
                    //遍历发送
                    foreach (var senditem in list)
                    {
                        if (senditem.msgStatus == "0" && senditem.receiveId == iMMessage.uid)
                        {
                            ctx.WriteAsync(new TextWebSocketFrame("来自历史纪录:" + senditem.toString()));
                            var a = redisHelper.ListRightPush <IMMessage>("send", senditem);
                        }
                    }
                    ctx.Flush();
                }
                //发信
                else
                {
                    try
                    {
                        IChannel receiveNameApp = AppUsers[iMMessage.receiveId];
                        IChannel receiveNameWeb = WebUsers[iMMessage.receiveId];
                        //没有登陆地
                        if (receiveNameApp == null && receiveNameWeb == null)
                        {
                            //写入缓存
                            iMMessage.msgStatus = "0";
                            redisHelper.ListRightPush <IMMessage>(iMMessage.receiveId, iMMessage);
                            ctx.WriteAsync(new TextWebSocketFrame("发送成功"));
                        }
                        else
                        {
                            if (receiveNameApp != null)
                            {
                                receiveNameApp.WriteAsync(new TextWebSocketFrame("接收到了:" + requestmsg));
                                receiveNameApp.Flush();
                            }
                            if (receiveNameWeb != null)
                            {
                                receiveNameWeb.WriteAsync(new TextWebSocketFrame("接收到了:" + requestmsg));
                                receiveNameWeb.Flush();
                            }
                        }
                        //ctx.WriteAsync(frame.Retain());
                        ctx.WriteAsync(new TextWebSocketFrame("发送成功"));
                        var a = redisHelper.ListRightPush <IMMessage>("send", iMMessage);
                    }
                    catch
                    {
                    }
                }
                return;
            }

            if (frame is BinaryWebSocketFrame)
            {
                // Echo the frame
                ctx.WriteAsync(frame.Retain());
            }
        }
 public MessageCallbackObject(IMMessage msg, MessageBodyType msgType, object call)
 {
     this.callback = call;
     this.message  = msg;
     this.msgType  = msgType;
 }