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()); } }
/// <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); } }