コード例 #1
0
ファイル: Client_Form.cs プロジェクト: WeDoCrm/client_demo
        private void BtnConfirm_Click(object sender, MouseEventArgs e)
        {
            try
            {
                Button button = (Button)sender;
                int controlsNum = button.Parent.Controls.Count;
                string key = null;
                for (int i = 0; i < controlsNum; i++)
                {
                    if ("formkey".Equals(button.Parent.Controls[i].Name))
                    {
                        Label keyvalue = (Label)button.Parent.Controls[i];
                        key = keyvalue.Text;
                    }
                }

                for (int i = 0; i < controlsNum; i++)
                {
                    if ("AddListBox".Equals(button.Parent.Controls[i].Name))
                    {
                        ListBox box = (ListBox)button.Parent.Controls[i];
                        ChatForm form = (ChatForm)ChatFormList[key];

                        if (box.Items.Count != 0)
                        {
                            string addlist = null;
                            foreach (object obj in box.Items)
                            {
                                string str = (String)obj;

                                string[] strArr = str.Split('(');  //strArr[0]=�̸�
                                string[] strArr1 = strArr[1].Split(')');//strArr1[0]=���̵�
                                addlist += strArr1[0] + "/";
                            }

                            //�߰��� ����� ����Ʈ ���� ��ȭ�ڿ��� ����
                            if (form.ChattersTree.Nodes.Count != 0)
                            {
                                GetChatters getChatters = new GetChatters(GetChattersID);
                                string[] chatters = (string[])Invoke(getChatters, form);
                                string msg = "17|" + key + "|" + addlist + "|" + myname;      //c|formkey|id/id/...|name|

                                if (chatters != null && chatters.Length != 0)
                                {
                                    foreach (string tempid in chatters)
                                    {
                                        SendMsg(msg + "|" + tempid, server);
                                    }
                                }
                            }

                            //�߰��� ����� ä��â�� ��ȭ�� ����Ʈ�� �߰�
                            foreach (object obj in box.Items)
                            {
                                string str = (String)obj;

                                string[] strArr = str.Split('(');  //strArr[0]=�̸�
                                string[] strArr1 = strArr[1].Split(')');//strArr1[0]=���̵�

                                //��ȭ�� ��� �߰� ��������Ʈ ȣ��
                                AddChatter addChatter = new AddChatter(Addchatter);
                                Invoke(addChatter, new object[] { strArr1[0], strArr[0], form });
                            }
                        }
                        break;
                    }
                }
                button.Parent.Dispose();
            }
            catch (Exception exception)
            {
                logWrite(exception.ToString());
            }
        }
コード例 #2
0
ファイル: Client_Form.cs プロジェクト: WeDoCrm/client_demo
        /// <summary>
        /// ���ŵ� �޽����� �м��Ͽ� �� ��û�� �°� ó��
        /// </summary>
        /// <param name="obj">ArrayList�� ����ȯ�� Object</param>
        protected void MsgFilter(object obj, IPEndPoint iep)
        {
            try
            {
                string msg = (string)obj; //���� �޽���
                msg = msg.Trim();

                string[] tempMsg = msg.Split('|');
                string code = tempMsg[0];
                switch (code)
                {
                    case "f"://�α��� ���н�(f|n or p)
                        try
                        {
                            FormTextCtrlDelegate informationMsg = new FormTextCtrlDelegate(ShowMessageBox);
                            if (tempMsg[1].Equals("n"))
                            {
                                Invoke(informationMsg, "��ϵ��� ���� ����� �Դϴ�.");
                            }
                            else
                                Invoke(informationMsg, "��й�ȣ�� Ʋ�Ƚ��ϴ�.");

                            Loginfail fail = new Loginfail(logInFail);
                            Invoke(fail, null);
                        }
                        catch (Exception e) { };
                        break;

                    case "g": //��� ������ (g|name|team|company|com_cd)

                        connected = true;

                        stringDele changeProgressStyle = new stringDele(chageProgressbar);
                        Invoke(changeProgressStyle, "���");
                        setCRM_DB_HOST(XmlConfigOrgFullPath, serverIP);//Application.StartupPath + "\\MiniCTI_config_demo.xml", serverIP);
                        setCRM_DB_HOST(XmlConfigFullPath, serverIP);//"c:\\MiniCTI\\config\\MiniCTI_config_demo.xml", serverIP);

                        FileInfo temp = new FileInfo(XmlConfigOrgFullPath);//Application.StartupPath + "\\MiniCTI_config_demo.xml");

                        FileInfo tempfileinfo = new FileInfo(XmlConfigFullPath);//"C:\\MiniCTI\\config\\MiniCTI_config_demo.xml");
                        if (!tempfileinfo.Exists)
                        {
                            logWrite("MiniCTI config ���� ����");
                            FileInfo file_copied = temp.CopyTo(tempfileinfo.FullName);
                        }
                        else
                        {
                            FileInfo file_copied = temp.CopyTo(tempfileinfo.FullName, true);
                        }

                        myname = tempMsg[1];//���������� ���޵� �̸� ����
                        myid = this.id.Text;
                        com_cd = tempMsg[4];
                        logWrite("��� ����! (" + DateTime.Now.ToString() + ")");

                        //���� ������ Client_Form �� ǥ��
                        FormTextCtrlDelegate FlushName = new FormTextCtrlDelegate(FlushInfo);
                        FormTextCtrlDelegate FlushTeam = new FormTextCtrlDelegate(Flushteam);

                        Invoke(FlushName, tempMsg[1]);

                        if (tempMsg[2].Length > 0)
                        {
                            Invoke(FlushTeam, tempMsg[2]);
                        }
                        else
                        {
                            Invoke(FlushTeam, tempMsg[3]);
                        }

                        this.KeyDown += new KeyEventHandler(Client_Form_KeyDown);
                        int count = this.Controls.Count;

                        for (int i = 0; i < count; i++)
                        {
                            this.Controls[i].KeyDown += new KeyEventHandler(Client_Form_KeyDown);
                        }

                        //���� �� ��ȭ ���� ����, ���� ����
                        MemoFileCheck();
                        DialogFileCheck();
                        FileDirCheck();

                        if (checkThread == null)
                        {
                            checkThread = new Thread(new ThreadStart(SendCheck));
                            checkThread.Start();
                            logWrite("SendCheck ������ ����");
                        }

                        break;

                    case "M": //�ٸ� Ŭ���̾�Ʈ ��� �� ���ӻ��� ����(M|���̸�|id!����̸�|id!����̸�)

                        if (tempMsg[1].Equals("e")) //��� ��Ʈ�� ���� ���ۿϷ� �޽����� ��� -> Client_Form�� �α��� ���·� ���� ������Ҹ� Ȱ��ȭ �Ѵ�.
                        {
                            PanelCtrlDelegate loginPanel = new PanelCtrlDelegate(LogInPanelVisible); //�α��� �г� ��Ʈ�� ȣ���
                            PanelCtrlDelegate TreeViewPanel = new PanelCtrlDelegate(TreeViewVisible);  //memTreeView ��Ʈ��ȣ���
                            PanelCtrlDelegate btnCtrl = new PanelCtrlDelegate(ButtonCtrl);//���� ��ư ��Ʈ��ȣ���

                            Invoke(TreeViewPanel, true);

                            // ��ư Ȱ��ȭ
                            Invoke(btnCtrl, true);

                            //tooltip ����
                            tooltip.AutoPopDelay = 0;
                            tooltip.AutomaticDelay = 2000;
                            tooltip.InitialDelay = 100;

                            Invoke(loginPanel, false);

                            //crm ���α׷� ����
                            Thread thread = new Thread(new ThreadStart(SetUserInfo));
                            thread.Start();
                            //NoParamDele dele = new NoParamDele(SetUserInfo);
                            //Invoke(dele);
                        }
                        else // ��Ʈ�� ������ ������ ���
                        {
                            ArrayList list = new ArrayList();
                            if (tempMsg.Length > 2)
                            {
                                int m = 0;
                                for (int i = 2; i < tempMsg.Length; i++) //�迭 ���� 2��° ������ id!name�� ����
                                {
                                    if (tempMsg[i].Length != 0)
                                    {
                                        list.Add(tempMsg[i]);
                                        string[] memInfo = tempMsg[i].Split('!');  //<id>�� <name>�� �и��Ͽ� memInfo�� ����
                                        MemberInfoList[memInfo[0]] = memInfo[1];
                                        logWrite("MemberInfoList[" + memInfo[0] + "] = " + memInfo[1]);
                                        TeamInfoList[memInfo[0]] = tempMsg[1];      //�ٸ� ������ <�Ҽ�>�� <id>�� hashtable�� ����(key=id, value=�Ҽ�)
                                        logWrite("TeamInfoList[" + memInfo[0] + "] = " + tempMsg[1]);
                                        //logWrite("����� ���� ��� : �̸�(" + memInfo[1] + ") ���̵�(" + memInfo[0] + ")");
                                    }

                                }
                                ChildNodeDelegate AddMemNode = new ChildNodeDelegate(MakeMemTree);
                                object[] ar = { tempMsg[1], list };
                                Invoke(AddMemNode, ar);

                                treesource[tempMsg[1]] = list;
                                memTree.Tag = treesource;
                                logWrite(tempMsg[1] + " �� ����Ʈ ����!");

                                //��������Ʈ ����

                            }
                        }
                        break;

                    case "y":    //�α��� Client ����Ʈ y|id|���°�
                        string team = (string)TeamInfoList[tempMsg[1]];

                        int Port = 8883;
                        logWrite("�� : "+team+ " ����� id : " + tempMsg[1] + "  port : " + Port.ToString());

                        //InList[tempMsg[1]] = server;   //�α��� ����Ʈ ���̺�� ����(key=id, value=IPEndPoint)

                        ChangeStat changelogin = new ChangeStat(ChangeMemStat);
                        Invoke(changelogin, new object[] { tempMsg[1], tempMsg[2] });

                        break;

                    case "IP":    //�α��� Client ����Ʈ IP|id|ip�ּ�

                        Port = 8883;
                        logWrite(" ����� id : " + tempMsg[1] + "IP �ּ� : " + tempMsg[2] + "  port : " + Port.ToString());

                        InList[tempMsg[1]] = new IPEndPoint(IPAddress.Parse(tempMsg[2]), Port);   //�α��� ����Ʈ ���̺�� ����(key=id, value=IPEndPoint)

                        break;

                    case "a":  //�ߺ��α��� �õ��� �˷���
                        Loginfail relogin = new Loginfail(ReLogin);
                        Invoke(relogin, null);

                        break;

                    case "u": //���������� ���� �α׾ƿ� �޽��� ������ ���
                        LogOutDelegate logoutDel = new LogOutDelegate(LogOut);
                        Invoke(logoutDel, null);
                        break;

                    case "d":  //���� ��ȭ�޽����� ��� (d|Formkey|id/id/...|name|�޽���)

                        string[] ids = tempMsg[2].Split('/');
                        if (!ids[0].Equals(myid))
                        {
                            if (ChatFormList.Contains(tempMsg[1]) && ChatFormList[tempMsg[1]] != null)  //�̹� �߽��ڿ� ä������ ���
                            {
                                ChatForm form = (ChatForm)ChatFormList[tempMsg[1]];
                                AddChatMsg addMsg = new AddChatMsg(Addmsg);
                                string smsg = tempMsg[3] + "|" + tempMsg[4];
                                Invoke(addMsg, new object[] { smsg, form });

                                //if() ����� ���¿� ����
                                //form.Activate();
                            }
                            else                                   //���ο� ��ȭ��û�� ���
                            {
                                ArrangeCtrlDelegate OpenChatForm = new ArrangeCtrlDelegate(NewChatForm);
                                Invoke(OpenChatForm, new object[] { tempMsg });
                            }
                        }
                        break;

                    case "c":  //c|formkey|id/id/..|name  //��ȭ�� �ʴ밡 �Ͼ ���

                        if (ChatFormList.ContainsKey(tempMsg[1]) && ChatFormList[tempMsg[1]] != null)
                        {
                            string[] nameArray = tempMsg[2].Split('/');
                            ChatForm form = (ChatForm)ChatFormList[tempMsg[1]];
                            AddChatter addChatter = new AddChatter(Addchatter);
                            AddChatMsg addMsg = new AddChatMsg(Addmsg);

                            for (int i = 0; i < (nameArray.Length - 1); i++)
                            {
                                string tempname = getName(nameArray[i]);
                                Invoke(addChatter, new object[] { nameArray[i], tempname, form });
                                //string tempmsg = tempMsg[3] + "���� " + tempname + "���� ��ȭ�� �ʴ��Ͽ����ϴ�.";
                                //Invoke(addMsg, new object[] { tempmsg, form });
                            }
                        }

                        break;

                    case "C":  //�������� ����Ȯ�� ����(C|Ȯ����id|noticeid)
                        ArrangeCtrlDelegate NoticeDetailResultFormAdd = new ArrangeCtrlDelegate(NoticeReaderAdd);
                        Invoke(NoticeDetailResultFormAdd, new object[] { tempMsg });
                        break;

                    case "q": //���� ��ȭ�� ������ ��ȭâ ���� (q|Formkey|id)

                        if (ChatFormList.ContainsKey(tempMsg[1]) && ChatFormList[tempMsg[1]] != null)
                        {
                            ChatForm form = (ChatForm)ChatFormList[tempMsg[1]];
                            DelChatterDelegate delchatter = new DelChatterDelegate(DelChatter);
                            Invoke(delchatter, new object[] { tempMsg[2], form });
                        }

                        break;

                    case "dc": //���� ��ȭ�� ������ ���� ���� (dc|Formkey|id)

                        if (ChatFormList.ContainsKey(tempMsg[1]) && ChatFormList[tempMsg[1]] != null)
                        {
                            ChatForm form = (ChatForm)ChatFormList[tempMsg[1]];

                        }

                        break;

                    case "m"://�޸� ������ ��� m|name|id|message|������id
                        ArrangeCtrlDelegate memo = new ArrangeCtrlDelegate(MakeMemo);
                        Invoke(memo, new object[] { tempMsg });
                        MemoFileWrite(msg + "|" + DateTime.Now.ToString());
                        break;

                    case "F":  //�������� �� ���� ���� ����     F|���ϸ�|����ũ��|����key|������id
                        string name = getName(tempMsg[4]);
                        string[] filenameArray = tempMsg[1].Split('\\'); //���ϸ� ����
                        int filesize = int.Parse(tempMsg[2]);            //����ũ�� ij����
                        IPEndPoint siep = (IPEndPoint)InList[tempMsg[4]];
                        siep.Port = 8883;
                        string savefilename = "C:\\MiniCTI\\" + this.myid + "\\Files\\" + filenameArray[filenameArray.Length - 1];
                        if (InList.ContainsKey(tempMsg[4]) && InList[tempMsg[4]] != null)
                        {
                            Hashtable info = new Hashtable();
                            info[savefilename] = filesize;
                            info["name"] = name;
                            info["senderid"] = tempMsg[4];
                            SendMsg("Y|" + tempMsg[1] + "|" + tempMsg[3] + "|" + this.myid, siep); //����(Y|���ϸ�|����Key|������id)
                            FileReceiver((object)info);
                        }
                        downloadform.Show();
                        break;

                    case "Y"://���� �ޱ� ���� �޽���(Y|���ϸ�|����key|������id)
                        ShowFileSendDetailDelegate show = new ShowFileSendDetailDelegate(ShowFileSendDetail);
                        Hashtable table = new Hashtable();
                        table[tempMsg] = (IPEndPoint)InList[tempMsg[3]];

                        //���� ���� ������ ����
                        Thread sendfile = new Thread(new ParameterizedThreadStart(SendFile));
                        sendfile.Start((object)table);

                        FileSendThreadList[tempMsg[2] + "|" + tempMsg[3]] = sendfile;

                        FileSendDetailListView view = (FileSendDetailListView)FileSendDetailList[tempMsg[2]];
                        Invoke(show, new object[] { tempMsg[3], "���۴����", view });

                        break;

                    case "FS"://���� �ޱ� ���� �޽���(FS|���ϸ�|����key|������id)
                        ShowFileSendDetailDelegate show_ = new ShowFileSendDetailDelegate(ShowFileSendDetail);
                        Hashtable table_ = new Hashtable();
                        table_[tempMsg] = server;

                        //���� ���� ������ ����
                        Thread sendfile_ = new Thread(new ParameterizedThreadStart(SendFile));
                        sendfile_.Start((object)table_);

                        FileSendThreadList[tempMsg[2] + "|" + tempMsg[3]] = sendfile_;

                        FileSendDetailListView view_ = (FileSendDetailListView)FileSendDetailList[tempMsg[2]];
                        Invoke(show_, new object[] { tempMsg[3], "���۴����", view_ });

                        break;

                    case "N": //���� �ޱ� �ź�("N|���ϸ�|����Ű|id)

                        ShowFileSendDetailDelegate detail = new ShowFileSendDetailDelegate(ShowFileSendDetail);

                        FileSendDetailListView View = (FileSendDetailListView)FileSendDetailList[tempMsg[2]];

                        Invoke(detail, new object[] { tempMsg[3], "�ޱ� �ź�", View });

                        string Name = getName(tempMsg[3]);
                        string[] FilenameArray = tempMsg[1].Split('\\');
                        MessageBox.Show(Name + " ���� ���� �ޱ⸦ �ź��ϼ̽��ϴ�.\r\n\r\n���ϸ� : " + FilenameArray[(FilenameArray.Length - 1)], "�˸�", MessageBoxButtons.OK, MessageBoxIcon.Information);

                        break;

                    case "i":  //�߰� �α��� ������ ���  ���� : i|id|�Ҽ�����|ip|�̸�

                        try
                        {
                            //�α��� ����Ʈ ���̺�� �߰�
                            IPEndPoint addiep = new IPEndPoint(IPAddress.Parse(tempMsg[3]), 8883);
                            InList[tempMsg[1]] = addiep;
                            //memTree �信 �α��� ����� ���� ����
                            ChangeStat change = new ChangeStat(ChangeMemStat);
                            Invoke(change, new object[] { tempMsg[1], "online" });
                            TeamInfoList[tempMsg[1]] = tempMsg[2];

                        }
                        catch (Exception e)
                        {
                            logWrite(e.ToString());
                        }
                        break;

                    case "o":  //�α׾ƿ� ������ �߻��� ���  o|id|�Ҽ�
                        FormTextCtrlDelegate logoutchatter = new FormTextCtrlDelegate(LogoutChatter);
                        Invoke(logoutchatter, tempMsg[1]);
                        lock (this)
                        {
                            InList[tempMsg[1]] = null;
                        }
                        ChangeStat logout = new ChangeStat(ChangeLogout);
                        Invoke(logout, new object[] { tempMsg[1], tempMsg[2] });

                        break;

                    case "n":  //�������� �޽��� (n|�޽���|�߽���id|mode|noticetime|����)

                        logWrite("�������� ����!");
                        if (!tempMsg[2].Equals(this.myid)) //�ڱⰡ ���� ������ ��� ������ ����
                        {
                            ArrangeCtrlDelegate notice = new ArrangeCtrlDelegate(ShowNoticeDirect);
                            Invoke(notice, new object[] { tempMsg });
                        }

                        break;

                    case "A": //������ ���� ����(A|mnum|fnum|nnum|tnum)
                        ArrangeCtrlDelegate ShowAbsentInfo = new ArrangeCtrlDelegate(ShowAbsentInfoNumber);
                        Invoke(ShowAbsentInfo, new object[] { tempMsg });

                        break;

                    case "Q"://������ �޸� ����Ʈ (Q|sender;content;time;seqnum|sender;content;time;seqnum|...
                        ArrangeCtrlDelegate ShowNRmemoList = new ArrangeCtrlDelegate(ShowMemoList);
                        Invoke(ShowNRmemoList, new object[] { tempMsg });

                        break;

                    case "T"://������ ���� ����Ʈ (T|sender;content;time;mode;seqnum|sender;content;time;mode;seqnum|...
                        ArrangeCtrlDelegate ShowNRnoticeList = new ArrangeCtrlDelegate(ShowNotReadNoticeList);
                        Invoke(ShowNRnoticeList, new object[] { tempMsg });

                        break;

                    case "R"://������ ���� ����Ʈ (R|�������;filenum;filename;time;size;seqnum|�������;filenum;filename;time;size;seqnum|...
                        ArrangeCtrlDelegate ShowNRFileList = new ArrangeCtrlDelegate(ShowFileList);
                        Invoke(ShowNRFileList, new object[] { tempMsg });

                        break;

                    case "t": //"t|ntime��content��nmode��title�Ӿ��������1:���������2:...|...

                        ArrangeCtrlDelegate ShowNoticeResultFromDB = new ArrangeCtrlDelegate(showNoticeResultFromDB);
                        Invoke(ShowNoticeResultFromDB, new object[] { tempMsg });

                        break;

                    case "L"://�������� ����Ʈ ������ ���  L|time!content!mode!sender!seqnum
                        if (!(tempMsg.Length < 2))
                        {
                            ArrangeCtrlDelegate makeNoticeList = new ArrangeCtrlDelegate(MakeNoticeListForm);
                            Invoke(makeNoticeList, new object[] { tempMsg });
                        }
                        else
                        {
                            MessageBox.Show("��ϵ� ������ �����ϴ�.", "��������", MessageBoxButtons.OK);
                        }
                        break;

                    case "s"://�� Ŭ���̾�Ʈ ���°� ���� �޽��� s|id|����|IPAddress
                        if (!tempMsg[1].Equals(this.myid))
                        {
                            ChangeStat presenceupdate = new ChangeStat(PresenceUpdate);
                            Invoke(presenceupdate, new object[] { tempMsg[1], tempMsg[2] });
                            IPEndPoint tempiep = new IPEndPoint(IPAddress.Parse(tempMsg[3]), listenport);
                            lock (InList)
                            {
                                InList[tempMsg[1]] = tempiep;
                            }
                        }
                        break;

                    case "Ring": //�߽��� ǥ��(Ring|ani|name|server_type)

                        RingingDele ringdele = new RingingDele(Ringing);
                        Invoke(ringdele, new object[] { tempMsg[1], tempMsg[2], tempMsg[3] });

                        break;

                    case "Dial": //���̾�� ������� �˾�(Dial|ani)
                        if (this.nopop_outbound == false)
                        {
                            doublestringDele dialdele = new doublestringDele(Answer);
                            Invoke(dialdele, new object[] { tempMsg[1], "2" });
                        }
                        break;

                    case "Answer": //offhook�� ������� �˾�(Answer|ani|type)
                        doublestringDele answerdele = new doublestringDele(Answer);
                        Invoke(answerdele, new object[] { tempMsg[1], tempMsg[2] });

                        break;

                    case "Abandon": //Abandon �߻���
                        AbandonDele abandon = new AbandonDele(Abandoned);
                        Invoke(abandon);
                        break;

                    case "Other": //�ٸ������ �����
                        AbandonDele other = new AbandonDele(OtherAnswer);
                        Invoke(other);
                        break;

                    case "pass"://������� ���� ����(pass|ani|senderID|receiverID
                        if (tempMsg[2].Equals(this.myid))
                        {
                            //MessageBox.Show("�̰��Ǿ����ϴ�.");
                        }
                        else
                        {
                            //notifyTransfer(tempMsg);
                            ArrangeCtrlDelegate passdele = new ArrangeCtrlDelegate(notifyTransfer);
                            Invoke(passdele, new object[]{tempMsg});
                        }
                        break;

                    case "trans"://������ �̰� �޽ý� ����(trans|sender��content��time��seqnum|...)
                        ArrangeCtrlDelegate ShowNRTransList = new ArrangeCtrlDelegate(showNoreadTransfer);
                        Invoke(ShowNRTransList, new object[] { tempMsg });
                        break;

                }
            }
            catch (Exception exception)
            {
                logWrite(exception.StackTrace);
            }
        }