Exemplo n.º 1
0
        public void OpenSingleChatForm(MemberObj userObj)
        {
            if (userObj != null && Members.ContainLoginUserNode(userObj.Id))
            {
                ChatForm chatForm = ChatForms.FindSingleChatForm(userObj.Id);
                //존재하는 대화창이 없는 경우 생성
                if (chatForm == null)
                {
                    MakeChatForm(userObj);
                }
                else
                {
                    chatForm.SetForward();
                }

            }
            else  //대화가능한 상대방이 없을경우
            {
                if (MessageBox.Show(this,
                                    "대화할 상대방이 대화가 불가능한 상태입니다.\r\n 대신 쪽지를 보내시겠습니까?", 
                                    "알림", 
                                    MessageBoxButtons.OKCancel, 
                                    MessageBoxIcon.Information) == DialogResult.OK)
                    MakeSendMemo(userObj);
            }

        }
Exemplo n.º 2
0
        private void ChatForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            try
            {
                miscCtrl.WriteDialogSaveFile(formKey, chatBox.Text, this.Text);

                if (ChattersTree.Nodes.Count > 1)
                {                     //2명이상과 대화중 폼을 닫을 경우
                    foreach (TreeNode node in ChattersTree.Nodes)
                    {
                        MemberObj userObj = (MemberObj)node.Tag;

                        if (!ConfigHelper.Id.Equals(userObj.Id))
                        { //자신 빼고 전송
                            Logger.info("대화종료 메시지 생성:상대방 id : " + userObj.Id);
                            connection.SendMsgNotifyChatFormClosed(formKey, userObj.Id);
                        }
                    }
                }

                ChatForms.RemoveForm(formKey);
                Logger.info("채팅창 닫음으로 key=" + formKey + " ChatterList 테이블에서 삭제");

                connection.ChatterStatusReceived -= ChangeStatusOnChatterStatusReceived;
                connection.ChatMsgAdded          -= AddMsgOnChatMsgAdded;
                connection.ChatterInvited        -= AddChatterOnChatterInvited;
                connection.ChatterQuit           -= DeleteChatterOnChatterQuit;
                connection.MemberStatusReceived  -= this.ChangeStatusOnChatterStatusReceived;
            }
            catch (Exception exception)
            {
                Logger.error(exception.ToString());
            }
        }
Exemplo n.º 3
0
 public void OpenSingleChatForm(MemberObj userObj)
 {
     if (userObj != null && Members.ContainLoginUserNode(userObj.Id))
     {
         ChatForm chatForm = ChatForms.FindSingleChatForm(userObj.Id);
         //존재하는 대화창이 없는 경우 생성
         if (chatForm == null)
         {
             MakeChatForm(userObj);
         }
         else
         {
             chatForm.SetForward();
         }
     }
     else  //대화가능한 상대방이 없을경우
     {
         if (MessageBox.Show(this,
                             "대화할 상대방이 대화가 불가능한 상태입니다.\r\n 대신 쪽지를 보내시겠습니까?",
                             "알림",
                             MessageBoxButtons.OKCancel,
                             MessageBoxIcon.Information) == DialogResult.OK)
         {
             MakeSendMemo(userObj);
         }
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// //다른 클라이언트 목록 및 접속상태 정보(M|팀이름|id!멤버이름|id!멤버이름)
        /// </summary>
        /// <param name="msg"></param>
        public static void AddMembers(string msg) 
        {
            lock (lockMembers)
            {
                string[] tempMsg = msg.Split('|');

                if (tempMsg.Length > 2)
                {
                    string teamName = tempMsg[1];
                    Dictionary<string, MemberObj> teamMembersTable = new Dictionary<string, MemberObj>();

                    if (teamName.Trim() == "")
                    { //소속이 미지정인 경우
                        teamName = MsgrMsg.UNDEFINED_TEAM;
                    }

                    for (int i = 2; i < tempMsg.Length; i++)
                    {//배열 순서 2번째 부터인 id!name을 추출

                        if (tempMsg[i].Length != 0)
                        {
                            string[] memInfo = tempMsg[i].Split('!');  //<id>와 <name>을 분리하여 memInfo에 저장
                            MemberObj member = new MemberObj(teamName, memInfo[0], memInfo[1]);

                            membersTable[memInfo[0]] = member;
                            teamMembersTable[memInfo[0]] = member;
                            Logger.info("MemberObj정보추가: " + member.ToString());
                        }
                    }
                    membersTableByTeam[teamName] = teamMembersTable;
                    //델리게이트 생성
                }
            }
        }
Exemplo n.º 5
0
        private void _SetListBoxSource()
        {
            List <string> userList;

            if (mode == AddMemberMode.OnMemoReceived) // 전체
            {
                userList = new List <string>(Members.GetMembers().Keys);
            }
            else //로그인사용자만
            {
                userList = new List <string>(Members.GetLoginUsers().Keys);
            }

            foreach (string user in userList)
            {
                MemberObj userObj = Members.GetByUserId(user);
                if (userObj == null || userObj.Id == "")
                {
                    continue;
                }

                ListBoxItem item = new ListBoxItem(userObj);
                if (ListBox.NoMatches == ListBoxSelected.FindStringExact(item.Text))
                {
                    ListBoxSource.Items.Add(item);
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// //다른 클라이언트 목록 및 접속상태 정보(M|팀이름|id!멤버이름|id!멤버이름)
        /// </summary>
        /// <param name="msg"></param>
        public static void AddMembers(string msg)
        {
            lock (lockMembers)
            {
                string[] tempMsg = msg.Split('|');

                if (tempMsg.Length > 2)
                {
                    string teamName = tempMsg[1];
                    Dictionary <string, MemberObj> teamMembersTable = new Dictionary <string, MemberObj>();

                    if (teamName.Trim() == "")
                    { //소속이 미지정인 경우
                        teamName = MsgrMsg.UNDEFINED_TEAM;
                    }

                    for (int i = 2; i < tempMsg.Length; i++)
                    {//배열 순서 2번째 부터인 id!name을 추출
                        if (tempMsg[i].Length != 0)
                        {
                            string[]  memInfo = tempMsg[i].Split('!'); //<id>와 <name>을 분리하여 memInfo에 저장
                            MemberObj member  = new MemberObj(teamName, memInfo[0], memInfo[1]);

                            membersTable[memInfo[0]]     = member;
                            teamMembersTable[memInfo[0]] = member;
                            Logger.info("MemberObj정보추가: " + member.ToString());
                        }
                    }
                    membersTableByTeam[teamName] = teamMembersTable;
                    //델리게이트 생성
                }
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// 쪽지 및 파일 전송 수신자 추가 폼에서 "접속자" 라디오 버튼 클릭시
        /// </summary>
        private void _DisplayLoginUsers()
        {
            try
            {
                SetTeamMode(false);

                ListBoxSource.Items.Clear();

                Dictionary <string, IPEndPoint> loginUsers = Members.GetLoginUsers();

                foreach (var de in loginUsers)
                {
                    if (de.Value != null)
                    {
                        MemberObj   userObj = Members.GetByUserId(de.Key.ToString());
                        ListBoxItem item    = new ListBoxItem(userObj);
                        if (ListBox.NoMatches == ListBoxSelected.FindStringExact(item.Text))
                        {
                            ListBoxSource.Items.Add(item);
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.error(exception.ToString());
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// 대화창에서 파일보내기 버튼 클릭시
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void chatSendFile_Click(object sender, EventArgs e)
        {
            try
            {
                if (ChattersTree.Nodes.Count == 0)
                {//채팅참가자 리스트뷰에 참가자가 없다면
                    MessageBox.Show("파일전송을 할 대상자가 없습니다.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Logger.info("ChattersTree 에 파일수신 상대방 없음");
                }

                string fileName = null;
                if (openFileDialog.ShowDialog(this) == DialogResult.OK)
                {
                    fileName = openFileDialog.FileName;

                    foreach (TreeNode node in ChattersTree.Nodes)
                    {
                        MemberObj userObj = (MemberObj)node.Tag;
                        if (userObj.Status != MsgrUserStatus.LOGOUT)
                        {
                            SendFileForm sendform = new SendFileForm(connection, userObj, fileName);
                            sendform.Show();
                            sendform.Activate();
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.error(exception.ToString());
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 접속자 명단 다시보기
        /// </summary>
        private void _RefreshListBoxSource()
        {
            try
            {
                string teamname = (String)ComboBoxTeam.SelectedItem;
                if (teamname == "기타")
                {
                    teamname = "";
                }

                Dictionary <string, MemberObj> teamMembers = Members.GetMembersByTeam(teamname);

                ListBoxSource.Items.Clear();
                foreach (var de in teamMembers)
                {
                    //string tempname = (String)de.Value;
                    string tempId = de.Key;
                    if (Members.ContainLoginUserNode(tempId))
                    {
                        //string item = tempname + "(" + tempid + ")";
                        MemberObj   userObj = Members.GetByUserId(tempId);
                        ListBoxItem item    = new ListBoxItem(userObj);
                        if (ListBox.NoMatches == ListBoxSelected.FindStringExact(item.Text))
                        {
                            ListBoxSource.Items.Add(item);
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                Logger.error(exception.ToString());
            }
        }
Exemplo n.º 10
0
        public void SetChatterStatus(string userId, string userName, string status)
        {
            TreeNode[] nodearray = ChattersTree.Nodes.Find(userId, false);

            if (nodearray != null && nodearray.Length != 0)
            {
                if (nodearray.Length > 1)
                {
                    Logger.error(string.Format("채팅창에 참여한 {0}이 하나이상 존재.", userId));
                    throw new Exception("채팅창 대화자처리 오류");
                }

                TreeNode anode = nodearray[0];
                try {
                    MemberObj userObj = (MemberObj)anode.Tag;
                    if (userId.Equals(userObj.Id))
                    {
                        switch (status)
                        {
                        case MsgrUserStatus.ONLINE:    //"online":
                            anode.ImageIndex         = 0;
                            anode.SelectedImageIndex = 0;
                            anode.ForeColor          = Color.Black;
                            break;

                        case MsgrUserStatus.LOGOUT:    //"logout":
                            anode.ImageIndex         = 1;
                            anode.SelectedImageIndex = 1;
                            anode.ForeColor          = Color.Gray;
                            break;

                        case MsgrUserStatus.BUSY:    //"busy":
                            anode.ImageIndex         = 2;
                            anode.SelectedImageIndex = 2;
                            anode.ForeColor          = Color.Black;
                            break;

                        case MsgrUserStatus.DND:    //"DND":
                            anode.ImageIndex         = 3;
                            anode.SelectedImageIndex = 3;
                            anode.ForeColor          = Color.Black;
                            break;

                        case MsgrUserStatus.AWAY:    //"away":
                            anode.ImageIndex         = 4;
                            anode.SelectedImageIndex = 4;
                            anode.ForeColor          = Color.Black;
                            break;
                        }
                        userObj.Status = status;
                        anode.Text     = string.Format("{0}({1})", userObj.Title, userId);
                        anode.Tag      = userObj; //userId + CommonDef.CHAT_USER_LOG_IN;
                    }
                } catch (Exception ex) {
                    Logger.error(ex.ToString());
                    throw new Exception("대화자 상태정보 처리 오류");
                }
            }
        }
Exemplo n.º 11
0
 /// <summary>
 /// 메신저: 트리에서 대상자선택
 ///   0명: 에러
 ///   1명: 띄움
 ///   2+명: 파일선택 먼저 하고 띄움
 /// 채팅창: 상대방선택
 ///   0명: 에러
 ///   1명: 띄움
 /// </summary>
 /// <param name="connection"></param>
 /// <param name="receiver"></param>
 public SendFileForm(MsgrConnection connection, MemberObj receiver)
 {
     InitializeComponent();
     this.connection  = connection;
     this.formKey     = DateTime.Now.ToLongTimeString();
     this.receiverObj = receiver;
     Initialize();
 }
Exemplo n.º 12
0
 public SendMemoForm(MsgrConnection connection, MemberObj userObj)
 {
     InitializeComponent();
     this.connection = connection;
     if (userObj != null)
         this.receiverList.Add(userObj);
     Initialize();
 }
Exemplo n.º 13
0
 /// <summary>
 /// 메신저: 트리에서 대상자선택
 ///   0명: 에러
 ///   1명: 띄움
 ///   2+명: 파일선택 먼저 하고 띄움
 /// 채팅창: 상대방선택
 ///   0명: 에러
 ///   1명: 띄움
 /// </summary>
 /// <param name="connection"></param>
 /// <param name="receiver"></param>
 public SendFileForm(MsgrConnection connection, MemberObj receiver)
 {
     InitializeComponent();
     this.connection = connection;
     this.formKey = DateTime.Now.ToLongTimeString();
     this.receiverObj = receiver;
     Initialize();
 }
Exemplo n.º 14
0
 //파일이 선택된경우 바로 실행
 public SendFileForm(MsgrConnection connection, MemberObj receiver, string fileName, bool autoStart)
     : this(connection, receiver, fileName)
 {
     if (fileName != null && !fileName.Equals("") && autoStart)
     {
         _StartFileSending();
         ButtonFileSelect.Enabled = false;
     }
 }
Exemplo n.º 15
0
 //파일이 선택된경우 바로 실행
 public SendFileForm(MsgrConnection connection, MemberObj receiver, string fileName, bool autoStart)
     : this(connection, receiver, fileName)
 {
     if (fileName != null && !fileName.Equals("") && autoStart)
     {
         _StartFileSending();
         ButtonFileSelect.Enabled = false;
     }
 }
Exemplo n.º 16
0
        //if (InvokeRequired)
        //    {
        //        DoOnChatMsgAdded handler = new DoOnChatMsgAdded(InvokeOnChatMsgAdded);
        //        this.Invoke(handler, e);
        //    }
        //    else
        //        InvokeOnChatMsgAdded(e);
        //}

        //public delegate void DoOnChatMsgAdded(CustomEventArgs e);

        //protected virtual void InvokeOnChatMsgAdded(CustomEventArgs e)
        //{
        //}

        public void SetChatterOnFormOpening(MemberObj userObj)
        {
            if (userObj == null || userObj.Id == null ||
                userObj.Id.Trim() == "" || userObj.Id.Trim() == ConfigHelper.Id)
            {
                return;
            }
            _AddChatter(userObj);
        }
Exemplo n.º 17
0
        /// <summary>
        /// 대화하기 메뉴를 클릭한 경우
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void chat_Click(object sender, EventArgs e)
        {
            try
            {
                if (memTree.SelectedNode.GetNodeCount(false) != 0)//선택한 노드가 하위 노드를 가지고 있을 경우
                {
                    Logger.info("그룹대화 요청!");
                    List <MemberObj> groupList = new List <MemberObj>(); //대화선택목록
                    int    chattable           = 0;
                    string chatIdList          = ConfigHelper.Id;        //채팅가능자

                    foreach (TreeNode node in memTree.SelectedNode.Nodes)
                    {
                        MemberObj userObj = (MemberObj)node.Tag;
                        if (userObj == null)
                        {
                            continue;
                        }
                        if (userObj.Status != MsgrUserStatus.LOGOUT)
                        {
                            chattable++;
                            chatIdList = "/" + userObj.Id;
                        }
                        groupList.Add(userObj);
                    }

                    if (chattable == 0) //대화가능한 상대방이 없을경우
                    {
                        DialogResult result = MessageBox.Show(this, "요청한 상대방 모두가 대화가 불가능한 상태입니다.\r\n 대신 쪽지를 보내시겠습니까?", "알림", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                        if (result == DialogResult.OK)
                        {
                            OpenSendMemoBySelectedNode();//쪽지보내기
                        }
                    }
                    else if (chattable == 1)
                    {
                        MemberObj userObj = (MemberObj)groupList[0];
                        Logger.info("대화선택:" + userObj.Id);
                        OpenSingleChatForm(userObj);
                    }
                    else
                    {
                        MakeChatForm(groupList, chatIdList);
                    }
                }
                else //선택한 노드가 최하위 노드인 경우
                {
                    Logger.info("일대일대화 요청");
                    MemberObj userObj = (MemberObj)memTree.SelectedNode.Tag;
                    OpenSingleChatForm(userObj);
                }
            }
            catch (Exception exception)
            {
                Logger.error(exception.ToString());
            }
        }
Exemplo n.º 18
0
 public SendMemoForm(MsgrConnection connection, MemberObj userObj)
 {
     InitializeComponent();
     this.connection = connection;
     if (userObj != null)
     {
         this.receiverList.Add(userObj);
     }
     Initialize();
 }
Exemplo n.º 19
0
 private void _AddNextChatter(MemberObj userObj)
 {
     if (userObj == null || userObj.Id == null ||
         userObj.Id.Trim() == "" || userObj.Id.Trim() == ConfigHelper.Id)
     {
         return;
     }
     _AddChatter(userObj);
     PostUserJoinMessage(userObj.Name);
 }
Exemplo n.º 20
0
 //파일이 선택된경우 바로 실행
 public SendFileForm(MsgrConnection connection, MemberObj receiver, string fileName) 
     : this(connection, receiver)
 {
     if (fileName != null && !fileName.Equals(""))
     {
         sendFile = new FileInfo(fileName);
         SelectFile();
         _StartFileSending();
         ButtonFileSelect.Enabled = false;
     }
 }
Exemplo n.º 21
0
 //파일이 선택된경우 바로 실행
 public SendFileForm(MsgrConnection connection, MemberObj receiver, string fileName)
     : this(connection, receiver)
 {
     if (fileName != null && !fileName.Equals(""))
     {
         sendFile = new FileInfo(fileName);
         SelectFile();
         _StartFileSending();
         ButtonFileSelect.Enabled = false;
     }
 }
Exemplo n.º 22
0
 private void MakeSendFileForm(MemberObj userObj, string fileName)//key=id, value=name
 {
     try
     {
         SendFileForm sendform = new SendFileForm(connection, userObj, fileName);
         sendform.Show();
         sendform.Activate();
     }
     catch (Exception e)
     {
         Logger.error(e.ToString());
     }
 }
Exemplo n.º 23
0
 private void MakeSendFileForm(MemberObj userObj, string fileName)//key=id, value=name
 {
     try
     {
         SendFileForm sendform = new SendFileForm(connection, userObj, fileName);
         sendform.Show();
         sendform.Activate();
     }
     catch (Exception e)
     {
         Logger.error(e.ToString());
     }
 }
Exemplo n.º 24
0
        /// <summary>
        /// 사용자 상태 변경 처리
        /// </summary>
        /// <param name="statid"></param>
        /// <param name="presence"></param>
        private void ChangeStatusOnMemberStatusReceived(object sender, CustomEventArgs e)
        {
            try {
                MemberObj memberObj = (MemberObj)e.GetItem;

                TreeNode[] teamNode = memTree.Nodes.Find(memberObj.TeamName, false);
                TreeNode[] memNode  = teamNode[0].Nodes.Find(memberObj.Id, false);
                MemberObj  userObj  = (MemberObj)memNode[0].Tag;
                switch (memberObj.Status)
                {
                case MsgrUserStatus.BUSY:    //"busy":
                    memNode[0].ImageIndex         = 6;
                    memNode[0].SelectedImageIndex = 6;
                    userObj.Status = MsgrUserStatus.BUSY;
                    break;

                case MsgrUserStatus.AWAY:    //"away":
                    memNode[0].ImageIndex         = 4;
                    memNode[0].SelectedImageIndex = 4;
                    userObj.Status = MsgrUserStatus.AWAY;
                    break;

                case MsgrUserStatus.LOGOUT:    //"logout":
                    memNode[0].ForeColor          = Color.Gray;
                    memNode[0].ImageIndex         = 0;
                    memNode[0].SelectedImageIndex = 0;
                    Members.RemoveLoginUser(memberObj.Id);
                    userObj.Status = MsgrUserStatus.LOGOUT;
                    break;

                case MsgrUserStatus.ONLINE:    //"online":
                    memNode[0].ForeColor          = Color.Black;
                    memNode[0].ImageIndex         = 1;
                    memNode[0].SelectedImageIndex = 1;
                    userObj.Status = MsgrUserStatus.ONLINE;
                    break;

                case MsgrUserStatus.DND:    //"DND":
                    memNode[0].ImageIndex         = 5;
                    memNode[0].SelectedImageIndex = 5;
                    userObj.Status = MsgrUserStatus.DND;
                    break;
                }
                memNode[0].Text = userObj.Title;
                memNode[0].Tag  = userObj;

                Logger.info(memberObj.Id + "의 상태값" + memberObj.Status + " 로 변경");
            } catch (Exception ex) {
                Logger.error(" 상태값 변경 오류 : " + ex.ToString());
            }
        }
Exemplo n.º 25
0
 /// <summary>
 /// 사용자가 대화하기를 선택시 대화창 생성
 /// </summary>
 /// <param name="chatter"></param>
 /// <param name="ids"></param>
 private void MakeChatForm(MemberObj userObj)
 {
     try
     {
         if (userObj.Id == null || userObj.Id == "")
             return;
         ChatForm chatForm = new ChatForm(connection, miscCtrl, userObj);
         chatForm.Show();
     }
     catch (Exception exception)
     {
         Logger.error(exception.ToString());
     }
 }
Exemplo n.º 26
0
 private void memTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
 {
     try
     {
         if (memTree.SelectedNode.GetNodeCount(true) == 0)
         { //팀원 노드 선택
             MemberObj userObj = (MemberObj)e.Node.Tag;
             Logger.info("대화선택:" + userObj.Id);
             OpenSingleChatForm(userObj);
         }
     }
     catch (Exception exception)
     {
         Logger.error(exception.ToString());
     }
 }
Exemplo n.º 27
0
        private string _OpenSendFileFormBySelectedNode(TreeNode node, string fileName)
        {
            string    invalidList = "";
            MemberObj userObj     = (MemberObj)node.Tag;

            if (userObj.Status != MsgrUserStatus.LOGOUT)
            {
                MakeSendFileForm(userObj, fileName);
            }
            else
            {
                invalidList = string.Format(",{0}({1})", userObj.Name, userObj.Id);
            }

            return(invalidList);
        }
Exemplo n.º 28
0
 /// <summary>
 /// 사용자가 대화하기를 선택시 대화창 생성
 /// </summary>
 /// <param name="chatter"></param>
 /// <param name="ids"></param>
 private void MakeChatForm(MemberObj userObj)
 {
     try
     {
         if (userObj.Id == null || userObj.Id == "")
         {
             return;
         }
         ChatForm chatForm = new ChatForm(connection, miscCtrl, userObj);
         chatForm.Show();
     }
     catch (Exception exception)
     {
         Logger.error(exception.ToString());
     }
 }
Exemplo n.º 29
0
 public ChatForm(MsgrConnection connection, MiscController miscCtrl, MemberObj chatterObj)
 {
     try
     {
         InitializeComponent();
         this.connection = connection;
         this.miscCtrl   = miscCtrl;
         formKey         = ChatUtils.GetFormKey(chatterObj.Id, ConfigHelper.Id);
         Initialize();
         Logger.info(string.Format("채팅창생성 key[{0}]", formKey));
         SetChatterOnFormOpening(chatterObj);//대화창에 참가자 노드 추가(key=id, text=name)
     }
     catch (Exception ex)
     {
         Logger.error(ex.ToString());
         MessageBox.Show("화면 초기화중 오류가 발생했습니다.\n 담당자에게 문의하세요.", "초기화 오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Exemplo n.º 30
0
        /// <summary>
        /// 채팅창 트리노드에서 로그인상태인 사용자 id만 구함
        /// </summary>
        /// <param name="Nodes"></param>
        /// <returns></returns>
        //public static List<string> GetLoggedInIdFromNodeTag(TreeNodeCollection nodes)
        //{
        //    List<string> chatterList = new List<string>();

        //    for (int i = 0; i < nodes.Count; i++) {
        //        MemberObj userObj = (MemberObj)nodes[i].Tag;

        //        if (userObj == null)
        //            continue;
        //        if (userObj.Status != MsgrUserStatus.LOGOUT) {
        //            chatterList.Add(userObj.Id);
        //        }
        //    }
        //    return chatterList;
        //}


        public static List <MemberObj> GetLoggedInMemberFromNodeTag(TreeNodeCollection nodes)
        {
            List <MemberObj> memberList = new List <MemberObj>();

            foreach (TreeNode node in nodes)
            {
                MemberObj userObj = (MemberObj)node.Tag;
                if (userObj == null)
                {
                    continue;
                }
                if (!ConfigHelper.Id.Equals(userObj.Id) && userObj.Status != MsgrUserStatus.LOGOUT)
                { //자신 빼고 전송
                    memberList.Add(userObj);
                }
            }
            return(memberList);
        }
Exemplo n.º 31
0
        public static MemberObj FindMemberObjTagFromTreeNodes(TreeNodeCollection nodeCollection, string findId)
        {
            TreeNode[] nodes = nodeCollection.Find(findId, true);

            foreach (TreeNode node in nodes)
            {
                MemberObj userObj = (MemberObj)node.Tag;
                if (userObj == null)
                {
                    continue;
                }
                if (userObj.Id == findId)
                {
                    return(userObj);
                }
            }
            return(null);
        }
Exemplo n.º 32
0
 public ChatForm(MsgrConnection connection, MiscController miscCtrl, MemberObj chatterObj)
 {
     try
     {
         InitializeComponent();
         this.connection = connection;
         this.miscCtrl = miscCtrl;
         formKey = ChatUtils.GetFormKey(chatterObj.Id, ConfigHelper.Id);
         Initialize();
         Logger.info(string.Format("채팅창생성 key[{0}]", formKey));
         SetChatterOnFormOpening(chatterObj);//대화창에 참가자 노드 추가(key=id, text=name)
     }
     catch (Exception ex)
     {
         Logger.error(ex.ToString());
         MessageBox.Show("화면 초기화중 오류가 발생했습니다.\n 담당자에게 문의하세요.", "초기화 오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
Exemplo n.º 33
0
        private void MnDialog_Click(object sender, EventArgs e)
        {
            try
            {
                if (memTree.SelectedNode.GetNodeCount(true) != 0)
                {
                    return; //팀원 노드 선택
                }
                MemberObj userObj = (MemberObj)memTree.SelectedNode.Tag;
                Logger.info("대화선택:" + userObj.Id);

                OpenSingleChatForm(userObj);
            }
            catch (Exception ex)
            {
                Logger.error(ex.ToString());
            }
        }
Exemplo n.º 34
0
 private void MakeSendMemo(MemberObj receiver)
 {
     try
     {
         SendMemoForm form;
         if (receiver == null)
         {
             form = new SendMemoForm(connection);
         }
         else
         {
             form = new SendMemoForm(connection, receiver);
         }
         form.Show();
     }
     catch (Exception e)
     {
         Logger.error(e.ToString());
     }
 }
Exemplo n.º 35
0
        /// <summary>
        ///  case "pass"://고객정보 전달 수신
        ///  pass|ani|senderID|receiverID|TONG_DATE|TONG_TIME|CustomerName
        /// </summary>
        public TransferObj(string[] msgToken)
        {
            //pass|ani|senderID|receiverID|TONG_DATE|TONG_TIME|CustomerName
            this.ani      = msgToken[1];
            this.senderId = msgToken[2];
            MemberObj member = Members.GetByUserId(senderId);

            this.senderName = member.Name;
            this.receiverId = msgToken[3];
            this.tongDate   = msgToken[4];
            this.tongTime   = msgToken[5];
            if (msgToken.Length > 6)
            {
                this.customerName = msgToken[6];
            }
            else
            {
                this.customerName = "";
            }
        }
Exemplo n.º 36
0
        /// <summary>
        /// 트리노드에 대화자 노드 추가
        /// </summary>
        /// <param name="id">user id</param>
        /// <param name="name">user name</param>
        public void AddChatterToNode(MemberObj userObj)
        {
            if (userObj == null || userObj.Id == null ||
                userObj.Id.Trim() == "" || userObj.Id.Trim() == ConfigHelper.Id)
            {
                return;
            }

            TreeNode[] nodearray = ChattersTree.Nodes.Find(userObj.Id, false);

            if (nodearray != null && nodearray.Length != 0)
            {
                //있는경우는 오류
                Logger.error(string.Format("AddChatterToNode:{0}({1})이 이미 존재함.", userObj.Name, userObj.Id));
                //throw new Exception("대화자 노드처리 오류");
            }
            else
            {
                _AddNextChatter(userObj);
            }
        }
Exemplo n.º 37
0
        /// <summary>
        /// 1. 노드 추가
        /// 2. 창타이틀에 이름 반영
        /// 3. 색깔반영
        /// </summary>
        /// <param name="id"></param>
        /// <param name="name"></param>
        private void _AddChatter(MemberObj userObj)
        {
            TreeNode node = ChattersTree.Nodes.Add(userObj.Id, userObj.Title + "(" + userObj.Id + ")");

            node.Tag = userObj;
            //node.ImageIndex = 0;
            //node.SelectedImageIndex = 0;
            node.BackColor = Color.FromArgb(205, 220, 237);
            if (ChattersTree.Nodes.Count == 1)
            {
                this.Text += userObj.Name;
            }
            else
            {
                this.Text += "/" + userObj.Name;
            }
            //채팅참여했다가 나간후 다시 참여한 경우, 원래 색을 그대로 쓴다.
            if (!htUserColorTable.Contains(userObj.Id))
            {
                htUserColorTable.Add(userObj.Id, msgColor.GetColor(ChattersTree.Nodes.Count));
            }
            //상태지정
            SetChatterStatus(userObj.Id, userObj.Name, userObj.Status);
        }
Exemplo n.º 38
0
        /// <summary>
        /// ___________1:1창__________다자창_______
        ///
        /// on   | key(out->in)      key변경없음
        ///        노드상태변경      노드상태변경
        ///
        /// out  | key(in->out)      quit처리(**비정상종료로 quit없이 아웃됨)
        ///        노드상태변경
        ///        메시지display
        ///
        /// busy | key변경없음       key변경없음
        ///        노드상태변경      노드상태변경
        ///
        /// away |     동일
        ///
        /// dnd  |     동일
        ///
        /// </summary>
        /// <param name="id"></param>
        public void ChangeStatusOnChatterStatusReceived(object sender, CustomEventArgs e)
        {
            try {
                MemberObj memberObj = (MemberObj)e.GetItem;
                if (this.formKey.Contains(ConfigHelper.Id))
                {
                    switch (memberObj.Status)
                    {
                    case MsgrUserStatus.ONLINE:
                        //1:1채팅인 경우만
                        if (HasSingleChatter())
                        {
                            //1.키변경
                            string newFormKey = ChatUtils.GetFormKeyWithUserAdded(formKey, ConfigHelper.Id, memberObj.Id);
                            ChatForms.UpdateFormKey(newFormKey, formKey);
                            //2.노드상태변경
                            //3.메시지디스플레이
                            SetChatterLogIn(memberObj.Id, Members.GetByUserId(memberObj.Id).Name);
                        }
                        else
                        {    //다자창
                            //1.키변경없음
                            //2.노드상태변경
                            SetChatterLogIn(memberObj.Id, Members.GetByUserId(memberObj.Id).Name);
                        }
                        break;

                    case MsgrUserStatus.LOGOUT:
                        //1:1채팅인 경우만
                        if (HasSingleChatter())
                        {
                            //1.키변경
                            string newFormKey = ChatUtils.GetFormKeyWithUserLogOut(formKey, ConfigHelper.Id, memberObj.Id);
                            ChatForms.UpdateFormKey(newFormKey, formKey);
                            //2.노드상태변경
                            //3.메시지디스플레이
                            SetChatterLogOut(memberObj.Id, Members.GetByUserId(memberObj.Id).Name);
                        }
                        else
                        {    //다자창
                            //quit처리
                            //  1.키변경
                            string newFormKey = ChatUtils.GetFormKeyWithUserQuit(formKey, ConfigHelper.Id, memberObj.Id);
                            ChatForms.UpdateFormKey(newFormKey, formKey);
                            //  2. 노드삭제
                            DeleteChatter(memberObj.Id, Members.GetByUserId(memberObj.Id).Name);
                        }
                        break;

                    case MsgrUserStatus.BUSY:
                    case MsgrUserStatus.AWAY:
                    case MsgrUserStatus.DND:
                        //노드상태변경
                        SetChatterStatus(memberObj.Id, Members.GetByUserId(memberObj.Id).Name, memberObj.Status);
                        break;
                    }
                }
            } catch (Exception exception) {
                Logger.error(exception.ToString());
            }
        }
Exemplo n.º 39
0
 private void MakeSendMemo(MemberObj receiver)
 {
     try
     {
         SendMemoForm form;
         if (receiver == null)
             form = new SendMemoForm(connection);
         else
             form = new SendMemoForm(connection, receiver);
         form.Show();
     }
     catch (Exception e)
     {
         Logger.error(e.ToString());
     }
 }
Exemplo n.º 40
0
        /// <summary>
        /// 트리노드에 대화자 노드 추가
        /// </summary>
        /// <param name="id">user id</param>
        /// <param name="name">user name</param>
        public void AddChatterToNode(MemberObj userObj) {
            if (userObj == null || userObj.Id == null
                || userObj.Id.Trim() == "" || userObj.Id.Trim() == ConfigHelper.Id)
                return;

            TreeNode[] nodearray = ChattersTree.Nodes.Find(userObj.Id, false);

            if (nodearray != null && nodearray.Length != 0) {
                //있는경우는 오류
                Logger.error(string.Format("AddChatterToNode:{0}({1})이 이미 존재함.", userObj.Name, userObj.Id));
                //throw new Exception("대화자 노드처리 오류");
            } else {
                _AddNextChatter(userObj);
            }
        }
Exemplo n.º 41
0
        /// <summary>
        /// 1. 노드 추가
        /// 2. 창타이틀에 이름 반영
        /// 3. 색깔반영
        /// </summary>
        /// <param name="id"></param>
        /// <param name="name"></param>
        private void _AddChatter(MemberObj userObj) {

            TreeNode node = ChattersTree.Nodes.Add(userObj.Id, userObj.Title + "(" + userObj.Id + ")");
            node.Tag = userObj;
            //node.ImageIndex = 0;
            //node.SelectedImageIndex = 0;
            node.BackColor = Color.FromArgb(205, 220, 237);
            if (ChattersTree.Nodes.Count == 1)
                this.Text += userObj.Name;
            else
                this.Text += "/" + userObj.Name;
            //채팅참여했다가 나간후 다시 참여한 경우, 원래 색을 그대로 쓴다.
            if (!htUserColorTable.Contains(userObj.Id)) {
                htUserColorTable.Add(userObj.Id, msgColor.GetColor(ChattersTree.Nodes.Count));
            }
            //상태지정
            SetChatterStatus(userObj.Id, userObj.Name, userObj.Status);
        }
Exemplo n.º 42
0
 private void _AddNextChatter(MemberObj userObj) {
     if (userObj == null || userObj.Id == null
         || userObj.Id.Trim() == "" || userObj.Id.Trim() == ConfigHelper.Id)
         return;
     _AddChatter(userObj);
     PostUserJoinMessage(userObj.Name);
 }
Exemplo n.º 43
0
        //if (InvokeRequired)
        //    {
        //        DoOnChatMsgAdded handler = new DoOnChatMsgAdded(InvokeOnChatMsgAdded);
        //        this.Invoke(handler, e);
        //    }
        //    else
        //        InvokeOnChatMsgAdded(e);
        //}

        //public delegate void DoOnChatMsgAdded(CustomEventArgs e);

        //protected virtual void InvokeOnChatMsgAdded(CustomEventArgs e)
        //{
        //}

        public void SetChatterOnFormOpening(MemberObj userObj)
        {
            if (userObj == null || userObj.Id == null
                || userObj.Id.Trim() == "" || userObj.Id.Trim() == ConfigHelper.Id)
                return;
            _AddChatter(userObj);
        }
Exemplo n.º 44
0
        /// <summary>
        /// 수신된 메시지를 분석하여 각 요청에 맞게 처리
        /// </summary>
        /// <param name="obj">ArrayList로 형변환할 Object</param>
        protected void MsgFilter(object obj, IPEndPoint iep)
        {
            try
            {
                string   msg = ((string)obj).Trim(); //수신 메시지
                string   tempFormKey;
                string[] tempMsg = msg.Split('|');
                string   code    = tempMsg[0];

                switch (code)
                {
                    #region "f"//로그인 실패시(f|n or p)
                case "f":
                {
                    isLoggedOn = false;
                    string errmsg;
                    if (tempMsg[1].Equals("n"))
                    {
                        errmsg = "등록되지 않은 사용자 입니다.";
                    }
                    else
                    {
                        errmsg = "비밀번호가 틀렸습니다.";
                    }
                    OnLoginFailed(new CustomEventArgs(errmsg));
                }
                break;
                    #endregion

                    #region "g" //로그인 성공시 (g|name|team|company|com_cd|db_port)
                case "g":       //로그인 성공시 (g|name|team|company|com_cd|db_port)
                    isLoggedOn = true;
                    ConfigHelper.DbServerIp = serverIP;
                    ConfigHelper.DbPort     = Convert.ToInt16(tempMsg[5]);

                    //서버측에서 전달된 이름 저장
                    ConfigHelper.Id          = ConfigHelper.TryId;
                    ConfigHelper.Pass        = ConfigHelper.TryPass;
                    ConfigHelper.CompanyCode = tempMsg[4];
                    ConfigHelper.CompanyName = tempMsg[3];
                    Logger.info("로그인 성공");
                    ConfigHelper.Name     = tempMsg[1];
                    ConfigHelper.TeamName = tempMsg[2];

                    OnLoginPassed(new CustomEventArgs());

                    if (checkThread == null)
                    {
                        checkThread = new Thread(new ThreadStart(SendCheck));
                        checkThread.Start();
                        Logger.info("SendCheck 스레드 시작");
                    }

                    break;
                    #endregion

                    #region "a" //재로그인 이미 로그인상태알려줌
                case "a":       //중복로그인 시도를 알려줌
                    isLoggedOn        = false;
                    ConfigHelper.Id   = ConfigHelper.TryId;
                    ConfigHelper.Pass = ConfigHelper.TryPass;
                    OnLoginDupped();
                    break;
                    #endregion

                    #region "M" //다른 클라이언트 목록 및 접속상태 정보(M|팀이름|id!멤버이름|id!멤버이름)
                case "M":       //다른 클라이언트 목록 및 접속상태 정보(M|팀이름|id!멤버이름|id!멤버이름)
                    if (tempMsg[1].Equals("e"))
                    {           //모든 팀트리 정보 전송완료 메시지일 경우 -> Client_Form을 로그인 상태로 하위 구성요소를 활성화 한다.
                        OnTeamListReceiveDone();
                    }
                    else
                    {     // 팀트리 정보를 수신한 경우
                        if (tempMsg.Length > 2)
                        {
                            Members.AddMembers(msg);
                            string teamName = tempMsg[1];
                            OnTeamListReceived(new CustomEventArgs(teamName));
                        }
                    }
                    break;
                    #endregion

                    #region "y" //로그인 Client 리스트 상태값
                case "y":       //로그인 Client 리스트 y|id|상태값|ipaddress
                {
                    MemberObj memberObj = Members.GetByUserId(tempMsg[1]);
                    memberObj.Status = tempMsg[2];
                    //1. 로그인 리스트 테이블에 추가
                    Members.AddLoginUser(tempMsg[1], tempMsg[3]);
                    //2. memTree 뷰에 로그인 사용자 상태 변경
                    OnMemberStatusReceived(new CustomEventArgs(memberObj));
                    this.OnMemberStatusReceived(new CustomEventArgs(memberObj));
                    break;
                }
                    #endregion

                    #region "u" //서버측에서 강제 로그아웃 메시지 수신한 경우
                case "u":       //서버측에서 강제 로그아웃 메시지 수신한 경우
                    isLoggedOn = false;
                    OnForcedLogoutNotified();
                    break;
                    #endregion

                    #region "d" //상대방 대화메시지
                case "d":       //상대방 대화메시지일 경우 (d|Formkey|id/id/...|name|메시지)
                {
                    ChatObj chatObj = new ChatObj(tempMsg);
                    if (!chatObj.UserId.Equals(ConfigHelper.Id))
                    {
                        if (ChatForms.Contain(chatObj.ChatKey))
                        {
                            //이미 발신자와 채팅중일 경우
                            OnChatMsgAdded(new CustomEventArgs(chatObj));
                        }

                        else
                        {
                            //새로운 대화요청일 경우, 대화창 생성
                            OnNewChatMsgReceived(new CustomEventArgs(chatObj));
                        }
                    }
                }
                break;
                    #endregion

                    #region "c" //대화중 초대
                case "c":       //c|formkey|id/id/..|name  //대화중 초대가 일어난 경우
                {
                    ChatObj chatObj = new ChatObj(tempMsg);
                    if (ChatForms.Contain(chatObj.ChatKey))
                    {
                        OnChatterInvited(new CustomEventArgs(chatObj));
                    }
                    else
                    {
                        Logger.info(string.Format("'c' key[{0}]를 갖는 채팅창이 존재하지 않음.", chatObj.ChatKey));
                    }
                }
                break;
                    #endregion

                    #region "C" //보낸공지 읽음확인 수신
                case "C":       //보낸공지 읽음확인 수신(C|확인자id|noticeid)
                    OnNoticeCheckNotified(new CustomEventArgs(tempMsg));
                    break;
                    #endregion

                    #region "q"|"dc" //다자 대화중 상대방이 대화창 나감
                case "q":            //다자 대화중 상대방이 대화창 나감 (q|Formkey|id)
                case "dc":           //다자 대화중 상대방이 연결 끊김 (dc|Formkey|id)
                {
                    ChatObj chatObj = new ChatObj(tempMsg);
                    if (ChatForms.Contain(chatObj.ChatKey))
                    {
                        OnChatterQuit(new CustomEventArgs(chatObj));
                    }
                    else
                    {
                        Logger.info(string.Format("'q' key[{0}]를 갖는 채팅창이 존재하지 않음.", chatObj.ChatKey));
                    }
                }
                break;
                    #endregion

                    #region "m" //메모를 수신한 경우
                case "m":       //메모를 수신한 경우 m|name|id|message|수신자id
                {
                    MemoObj memoObj = new MemoObj(tempMsg);
                    OnMemoMsgReceived(new CustomEventArgs(memoObj));
                    MemoUtils.MemoFileWrite(ConfigHelper.Id, memoObj);
                    break;
                }
                    #endregion

                    #region "i" //사용자 로그인 알림
                case "i":       //추가 로그인 상담원일 경우  형태 : i|id|소속팀명|ip|이름
                {
                    MemberObj memberObj = Members.GetByUserId(tempMsg[1]);
                    memberObj.Status = MsgrUserStatus.ONLINE;
                    //1. 로그인 리스트 테이블에 추가
                    Members.AddLoginUser(tempMsg[1], tempMsg[3]);

                    //2. memTree 뷰에 로그인 사용자 상태 변경
                    OnMemberStatusReceived(new CustomEventArgs(memberObj));

                    //3. 각 채팅창 key변경 및 채팅창 노드/상태변경
                    OnChatterStatusReceived(new CustomEventArgs(memberObj));

                    //4. 로그인 했음 메시지 창 띄움
                    // 추후 구현
                }
                break;
                    #endregion

                    #region "o" //사용자 로그아웃 알림
                case "o":       //로그아웃 상담원이 발생할 경우  o|id|소속
                {
                    MemberObj memberObj = Members.GetByUserId(tempMsg[1]);
                    memberObj.Status = MsgrUserStatus.LOGOUT;
                    //1. 로그인 리스트 테이블에서 삭제
                    Members.RemoveLoginUser(tempMsg[1]);
                    //2. memTree 뷰에 로그아웃 사용자 상태 변경
                    OnMemberStatusReceived(new CustomEventArgs(memberObj));

                    //3. 각 채팅창 key변경 및 채팅창 노드/상태변경
                    OnChatterStatusReceived(new CustomEventArgs(memberObj));
                }
                break;
                    #endregion

                    #region "n" //공지사항 수신
                case "n":       //공지사항 메시지 (n|메시지|발신자id|mode|noticetime|제목)
                {
                    Logger.info("공지사항 수신!");
                    NoticeObj noticeObj = new NoticeObj(tempMsg);
                    if (!noticeObj.SenderId.Equals(ConfigHelper.Id))     //자기가 보낸 공지일 경우 보이지 않음
                    {
                        OnInstantNoticeReceived(new CustomEventArgs(noticeObj));
                    }

                    break;
                }
                    #endregion

                    #region "A" //사용자부재 미처리건 정보 수신
                case "A":       //부재중 정보 전달(A|mnum|fnum|nnum|tnum)
                    OnUnCheckedDataReceived(new CustomEventArgs(new int[] { Convert.ToInt32(tempMsg[1]),
                                                                            Convert.ToInt32(tempMsg[2]),
                                                                            Convert.ToInt32(tempMsg[3]),
                                                                            Convert.ToInt32(tempMsg[4]) }));
                    break;
                    #endregion

                    #region "Q" //부재중 안읽은 메모리스트
                case "Q":       //안읽은 메모 리스트 (Q|sender†content†time†seqnum|...|
                    OnUnCheckedMemoReceived(new CustomEventArgs(tempMsg));
                    break;
                    #endregion

                    #region "T" //부재중 안읽은 공지리스트
                case "T":       //안읽은 공지 리스트 (T|sender†content†time†mode†seqnum†title|sender†content†time†mode†seqnum|...
                    OnUnCheckedNoticeReceived(new CustomEventArgs(tempMsg));
                    break;
                    #endregion

                    #region "R" //부재중 안읽은 파일리스트==> 안쓰임
                case "R":       //안읽은 파일 리스트 (R|sender†filenum†filename†time†size†seqnum|sender†filenum†filename†time†size†seqnum|...
                    //안쓰임
                    break;
                    #endregion

                    #region "trans" //부재중 이관 메시시 수신
                case "trans":       //부재중 이관 메시시 수신(trans|sender†content†time†seqnum|...)
                    OnUnCheckedTransferReceived(new CustomEventArgs(tempMsg));
                    break;
                    #endregion

                    #region "t" //DB공지상세목록 수신
                case "t":       //"t|ntime†content†nmode†title†안읽은사람1:안읽은사람2:...|...
                    OnNoticeResultFromDBReceived(new CustomEventArgs(tempMsg));
                    break;
                    #endregion

                    #region "L" //공지사항목록 수신
                case "L":       //공지사항 리스트 수신한 경우  L|time‡content‡mode‡sender‡seqnum‡title|...
                    OnNoticeListReceived(new CustomEventArgs(tempMsg));
                    break;
                    #endregion

                    #region "s" //각 클라이언트 상태값 변경메시지+ IP주소
                case "s":       //각 클라이언트 상태값 변경 메시지 s|id|상태|IPAddress
                {
                    if (!tempMsg[1].Equals(ConfigHelper.Id))
                    {
                        MemberObj memberObj = Members.GetByUserId(tempMsg[1]);
                        memberObj.Status = tempMsg[2];
                        //1. 트리상태변경
                        OnMemberStatusReceived(new CustomEventArgs(memberObj));
                        //2. 로그인리스트 테이블에 추가
                        Members.AddLoginUser(tempMsg[1], tempMsg[3]);
                        //3. 채팅창 상태변경
                        //   각 채팅창 key변경 및 채팅창 노드/상태변경
                        OnChatterStatusReceived(new CustomEventArgs(memberObj));
                    }
                }
                break;
                    #endregion

                    #region "pass" //고객정보 전달 수신
                case "pass":       //고객정보 전달 수신(pass|ani|senderID|receiverID|일자|시간|CustomerName
                    OnCustomerInfoTransfered(new CustomEventArgs(tempMsg));
                    break;
                    #endregion

                    #region        //전화기능

                    #region "Ring" //Ringing
                case "Ring":       //발신자 표시(Ring|ani|name|server_type)
                    OnCallRingingReceived(new CustomEventArgs(new string[] { tempMsg[1], tempMsg[2], tempMsg[3] }));
                    break;
                    #endregion

                    #region "Dial" //Dialing
                case "Dial":       //다이얼시 고객정보 팝업(Dial|ani)
                    if (!ConfigHelper.NoPopOutBound)
                    {
                        OnCallDialingReceived(new CustomEventArgs(new string[] { tempMsg[1], "2" }));
                    }
                    break;
                    #endregion

                    #region "Answer" //Answer
                case "Answer":       //offhook시 고객정보 팝업(Answer|ani|type)
                    OnCallAnswerReceived(new CustomEventArgs(new string[] { tempMsg[1], tempMsg[2] }));
                    break;
                    #endregion

                    #region "Abandon" //Abandon
                case "Abandon":       //Abandon 발생시
                    OnCallAbandonReceived();
                    break;
                    #endregion

                    #region "Other" //Other 호전환수신
                case "Other":       //다른사람이 응답시
                    OnCallOtherAnswerReceived();
                    break;
                    #endregion
                    #endregion      //전화기능

                    #region default //비정상메시지
                default:
                    Logger.info("지정되지 않은 메시지포맷:" + msg);
                    break;
                    #endregion
                }
            }
            catch (Exception ex)
            {
                Logger.error(ex.ToString());
            }
        }