コード例 #1
0
ファイル: MainForm.cs プロジェクト: songques/CSSIM_Solution
        /// <summary>
        /// 聊天窗口打开事件
        /// </summary>
        /// <param name="sender"></param>
        public void listView_fd_OpenChatEvent(Friend sender)
        {
            if (InvokeRequired)
            {
                // Windows Forms are not Thread Safe, we need to invoke this :(
                // We're not in the UI thread, so we need to call BeginInvoke
                BeginInvoke(new QQListViewEx.delegate_openChat(listView_fd_OpenChatEvent), new object[] { sender });
                return;
            }

            System.GC.Collect();

            //for (int i = 0; i < 50; i++)
            //{
            //    ChatFromMsg chat = new ChatFromMsg(sender.Ritem.Jid, XmppCon);
            //    chat.Show();
            //}

            if (!Util.ChatForms.ContainsKey(sender.Ritem.Jid.Bare))
            {
                try
                {
                    string nickName = listView_fd.GetFriendNickName(sender.Ritem.Jid.Bare);
                    ChatFromMsg chat = new ChatFromMsg(sender.Ritem.Jid, XmppCon, nickName);
                    chat.UpdateFriendOnline(sender.IsOnline);//设置好友在线状态
                    ChatMessageBox.GetInstance(this).RemoveFriend(sender.Ritem.Jid);
                    if (msgBox.ContainsKey(sender.Ritem.Jid.ToString()))
                    {
                        chat.FristMessage(msgBox[sender.Ritem.Jid.ToString()]);
                        msgBox.Remove(sender.Ritem.Jid.ToString());
                    }
                    chat.Show();
                    if (ChatMessageBox.GetInstance(this).FrienMessageCount() > 0)
                        Debug.WriteLine("?");
                    else
                    {
                        notifyIcon_MessageQueue.Icon = CSS.IM.UI.Properties.Resources.Iico;
                        timer_MessageAlert.Enabled = false;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

            }
            else
            {
                try
                {
                    ChatFromMsg chatform = Util.ChatForms[sender.Ritem.Jid.Bare] as ChatFromMsg;
                    chatform.WindowState = FormWindowState.Normal;
                    chatform.Activate();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

            System.GC.Collect();
        }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: songques/CSSIM_Solution
        /// <summary>
        /// 通过消息盒子打开消息窗体
        /// </summary>
        /// <param name="friend"></param>
        /// <param name="sender"></param>
        /// <param name="CName"></param>
        void QQMainForm_OpenChatEvent(Friend friend, Jid sender, string CName)
        {
            RosterItem ritem = new RosterItem(sender);
            friend.Ritem = ritem;
            //throw new NotImplementedException();
            //friendListView_OpenChatEvent(friend);
            if (!Util.ChatForms.ContainsKey(friend.Ritem.Jid.Bare))
            {
                listView_fd.UpdateFriendFlicker(friend.Ritem.Jid.Bare);

                string nickName = listView_fd.GetFriendNickName(friend.Ritem.Jid.Bare);
                ChatFromMsg chat = new ChatFromMsg(friend.Ritem.Jid, XmppCon, nickName);

                Friend flfriend = listView_fd.Rosters[friend.Ritem.Jid.Bare];
                if (flfriend != null)
                {
                    chat.UpdateFriendOnline(flfriend.IsOnline);
                }

                if (msgBox.ContainsKey(friend.Ritem.Jid.Bare.ToString()))
                {
                    chat.FristMessage(msgBox[friend.Ritem.Jid.Bare.ToString()]);
                    msgBox.Remove(friend.Ritem.Jid.Bare.ToString());
                }
                chat.Show();
            }
            else
            {
                try
                {
                    ChatFromMsg chatform = Util.ChatForms[friend.Ritem.Jid.Bare] as ChatFromMsg;
                    chatform.WindowState = FormWindowState.Normal;
                    chatform.Activate();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

            if (ChatMessageBox.GetInstance(this).FrienMessageCount() > 0)
                Debug.WriteLine("?");
            else
            {
                notifyIcon_MessageQueue.Icon = CSS.IM.UI.Properties.Resources.Iico;
                timer_MessageAlert.Enabled = false;
            }
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: songques/CSSIM_Solution
        private void tsmi发送消息_Click(object sender, EventArgs e)
        {
            if (treeView_nt.SelectedNode == null)
                return;
            if (treeView_nt.SelectedNode.Tag == null)
                return;
            Jid j = new Jid(treeView_nt.SelectedNode.Tag.ToString(), XmppCon.Server, null);
            if (!Util.ChatForms.ContainsKey(j.Bare))
            {
                listView_fd.UpdateFriendFlicker(j.Bare);

                string nickName = listView_fd.GetFriendNickName(j.Bare);
                ChatFromMsg chat = new ChatFromMsg(j, XmppCon, nickName);

                Friend friend;
                if (listView_fd.Rosters.ContainsKey(j.Bare))
                {
                    friend = listView_fd.Rosters[j.Bare];
                }
                else
                {
                    friend = null;
                }

                if (friend != null)
                {
                    chat.UpdateFriendOnline(listView_fd.Rosters[j.Bare].IsOnline);
                }

                if (msgBox.ContainsKey(j.Bare.ToString()))
                {
                    chat.FristMessage(msgBox[j.Bare.ToString()]);
                    msgBox.Remove(j.Bare.ToString());
                }
                try
                {
                    chat.Show();
                }
                catch (Exception)
                {

                }

            }
        }
コード例 #4
0
ファイル: MainForm.cs プロジェクト: songques/CSSIM_Solution
        protected override void DefWndProc(ref System.Windows.Forms.Message m)
        {
            switch (m.Msg)
            {
                case WM_COPYDATA:
                    COPYDATASTRUCT mystr = new COPYDATASTRUCT();
                    Type mytype = mystr.GetType();
                    mystr = (COPYDATASTRUCT)m.GetLParam(mytype);

                    //MessageBox.Show(mystr.lpData);
                    Jid openJid = new Jid(mystr.lpData, XmppCon.Server,null);
                    //MessageBox.Show(openJid.ToString());

                    Friend item=null;
                    if (listView_fd.Rosters.ContainsKey(openJid.Bare))
                    {
                        item = listView_fd.Rosters[openJid.Bare];
                        if (!Util.ChatForms.ContainsKey(item.Ritem.Jid.Bare))
                        {
                            try
                            {
                                string nickName = listView_fd.GetFriendNickName(openJid.Bare);
                                ChatFromMsg chat = new ChatFromMsg(openJid, XmppCon, nickName);
                                chat.UpdateFriendOnline(item.IsOnline);//设置好友在线状态
                                chat.Show();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message);
                            }
                        }
                        else
                        {
                            try
                            {
                                ChatFromMsg chatform = Util.ChatForms[item.Ritem.Jid.Bare] as ChatFromMsg;
                                chatform.WindowState = FormWindowState.Normal;
                                chatform.Activate();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show(ex.Message);
                            }
                        }
                    }
                    else
                    {
                        if (!Util.ChatForms.ContainsKey(openJid.Bare))
                        {
                            listView_fd.UpdateFriendFlicker(openJid.Bare);
                            string nickName = listView_fd.GetFriendNickName(openJid.Bare);
                            ChatFromMsg chat = new ChatFromMsg(openJid, XmppCon, nickName);

                            Friend friend;
                            if (listView_fd.Rosters.ContainsKey(openJid.Bare))
                            {
                                friend = listView_fd.Rosters[openJid.Bare];
                            }
                            else
                            {
                                friend = null;
                            }

                            if (friend != null)
                            {
                                chat.UpdateFriendOnline(listView_fd.Rosters[openJid.Bare].IsOnline);
                            }

                            if (msgBox.ContainsKey(openJid.Bare.ToString()))
                            {
                                chat.FristMessage(msgBox[openJid.Bare.ToString()]);
                                msgBox.Remove(openJid.Bare.ToString());
                            }
                            try
                            {
                                chat.Show();
                            }
                            catch (Exception)
                            {

                            }

                        }
                        else
                        {
                            try
                            {
                                ChatFromMsg chatform = Util.ChatForms[openJid.Bare.ToString()] as ChatFromMsg;
                                chatform.WindowState = FormWindowState.Normal;
                                chatform.Activate();
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("打开窗体错误:"+ex.Message);
                            }
                        }
                    }

                    break;
                default:
                    base.DefWndProc(ref m);
                    break;
            }
        }