Esempio n. 1
0
        private void DeleteFriend_Click(object sender, RoutedEventArgs e)
        {
            MilessFriend friend = new MilessFriend();

            try
            {
                friend = listFriends.SelectedItem as MilessFriend;
            }
            catch (NullReferenceException)
            {
                return;
            };
            if (friend == null)
            {
                MessageBox.Show("请先选择要删除的朋友!");
                return;
            }
            //MessageBox.Show("pass");
            foreach (var fri in FriendList)
            {
                if (fri.FriendID == friend.FriendID)
                {
                    FriendList.Remove(fri);
                    break;
                    //MessageBox.Show("Changed");
                }
            }
        }
Esempio n. 2
0
        private void LoadAddressBook()
        {
            List <String> temp = new List <string>();
            var           fs   = new FileStream(@".\data\AdressBook.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
            StreamReader  sr   = new StreamReader(fs);
            var           line = sr.ReadLine();

            while (line != null)
            {
                temp.Add(line);
                line = sr.ReadLine();
            }
            //规定数据结构:FriendID_FriendAlias
            foreach (var t in temp)
            {
                if (t != "")
                {
                    var arr    = t.Split('_');
                    var newfri = new MilessFriend();
                    newfri.FriendAlias = arr[1];
                    newfri.FriendID    = arr[0];
                    FriendList.Add(newfri);
                }
            }
            sr.Close();
            fs.Close();
        }
Esempio n. 3
0
        private void AddFriend_Click(object sender, RoutedEventArgs e)
        {
            //添加新的群组
            var addwin = new AddFriend();

            addwin.Show();
            addwin.CloseEvent += new AFEventHandler(FindAFriend);
            addwin.GetMyAccount(account);
            this.Hide();
            void FindAFriend()
            {
                this.Show();
                if (addwin.HaveFindFriend == 1)
                {
                    NewFriendAccount = addwin.GetNewAccount();
                    string[]     arr       = NewFriendAccount.Split('_');
                    MilessFriend newFriend = new MilessFriend();
                    foreach (var fri in FriendList)
                    {
                        if (fri.FriendAlias == arr[1] || fri.FriendID == arr[0])
                        {
                            MessageBox.Show("添加失败:ID或昵称重复.");
                            return;
                        }
                    }

                    newFriend.FriendAlias = arr[1];
                    newFriend.FriendID    = arr[0];
                    newFriend.FriendIP    = addwin.GetNewIP();
                    FriendList.Add(newFriend);
                }
            }
        }
Esempio n. 4
0
        private void AddGroupToFriendList(List <MilessFriend> glist)
        {
            string group_name = "";
            string group_id   = " ";

            foreach (var friend in glist)
            {
                group_id   += friend.FriendID + " ";
                group_name += friend.FriendAlias + " ";
            }
            MilessFriend gFriend = new MilessFriend();

            gFriend.FriendAlias = group_name;
            gFriend.FriendID    = group_id;
            FriendList.Add(gFriend);
        }
Esempio n. 5
0
        private async void DistributeMessage(MyDataGram mdg)
        {
            //群组的greetings消息:直接加入到通讯录
            if (mdg.GroupID != "" && mdg.Text == "__init__" && mdg.DstID == account)
            {
                //Greetings Message
                //Add to Addresbook
                MilessFriend nf = new MilessFriend();
                foreach (var fri in FriendList)
                {
                    if (fri.FriendID == mdg.SrcID)
                    {
                        nf.FriendAlias = fri.FriendAlias;
                        break;
                    }
                }
                nf.FriendAlias = "Group with:" + nf.FriendAlias;

                nf.FriendID = mdg.GroupID;
                int chachong = 0;
                foreach (var fri in FriendList)
                {
                    var a = fri.FriendID;
                    //为分组
                    if (a[0] == ' ')
                    {
                        if (GroupIDMatch(fri.FriendID, a))
                        {
                            chachong = 1;
                        }
                    }
                }
                if (chachong == 0)
                {
                    //本组之前没有出现过
                    FriendList.Add(nf);
                    listFriends.ScrollIntoView(nf);
                }
                return;
            }
            var ChattingWindowNumber = ChatWindowList.Count;

            if (ChattingWindowNumber == 0)
            {
                AlarmNewMessage(mdg);
            }
            else
            {
                int FindWindow = 0;
                foreach (var cw in ChatWindowList)
                {
                    if (mdg.GroupID != "")
                    {
                        //由组内成员的学号判断是否为同一分组
                        if (GroupIDMatch(mdg.GroupID, cw.GetWindowInfo()))
                        {
                            cw.ReceiveMessage(mdg);
                            FindWindow = 1;
                            break;
                        }
                    }
                    if (mdg.SrcID == cw.GetWindowInfo())
                    {
                        //分给相应的窗口信息
                        cw.ReceiveMessage(mdg);
                        FindWindow = 1;
                        break;
                    }
                }
                if (FindWindow == 0)
                {
                    AlarmNewMessage(mdg);
                }
            }
        }
Esempio n. 6
0
        private void GroupChat_Click(object sender, RoutedEventArgs e)
        {
            if (GroupChatIter == 0)
            {
                listFriends.SelectionMode        = SelectionMode.Multiple;
                GroupChatIter                    = 1;
                Title.Content                    = "请选择要聊天的好友,再次点击群聊确认";
                Title.HorizontalContentAlignment = HorizontalAlignment.Center;
                Title.FontSize                   = 12;
                GroupChat.Content                = "确认";
                AddFriend.IsEnabled              = false;
                DeleteFriend.IsEnabled           = false;
                StartChat.IsEnabled              = false;
            }
            else if (GroupChatIter == 1)
            {
                GroupChatIter  = 0;
                Title.Content  = "Friends";
                Title.FontSize = 32;
                Title.HorizontalContentAlignment = HorizontalAlignment.Left;
                GroupChat.Content = "发起\n群聊";

                AddFriend.IsEnabled    = true;
                DeleteFriend.IsEnabled = true;
                StartChat.IsEnabled    = true;
                //Start Chat Window
                //MessageBox.Show("Start Window!");
                var li = listFriends.SelectedItems;
                if (li == null)
                {
                    MessageBox.Show("请先选择聊天的群组!");
                    return;
                }
                List <MilessFriend> GroupChatFriendList = new List <MilessFriend>();
                foreach (var item in li)
                {
                    var friend = item as MilessFriend;
                    if (friend.FriendAlias[0] == ' ')
                    {
                        MessageBox.Show("不能添加群组作为群组成员!");
                        return;
                    }
                    GroupChatFriendList.Add(friend);
                }

                //Start Chat Window
                foreach (var gfri in GroupChatFriendList)
                {
                    if (gfri.FriendID == account)
                    {
                        MessageBox.Show("别自言自语,和别人聊天吧!");
                        return;
                    }
                }

                var me = new MilessFriend();
                me.FriendAlias = "me";
                me.FriendID    = account;

                if (!GroupChatFriendList.Contains(me))
                {
                    GroupChatFriendList.Add(me);
                }

                listFriends.SelectionMode = SelectionMode.Single;


                string group_id   = " ";
                string group_name = "";
                foreach (var friend in GroupChatFriendList)
                {
                    group_id   += friend.FriendID + " ";
                    group_name += friend.FriendAlias + " ";
                }
                foreach (var friID in ChattingIDList)
                {
                    if (GroupIDMatch(group_id, friID))
                    {
                        MessageBox.Show("已有聊天窗口!");

                        return;
                    }
                }
                ChatWindow cw = new ChatWindow();
                cw.SetMyID(account);
                cw.SetFriendInfo(group_id + "_" + group_name);
                var newcwID = cw.GetWindowInfo();
                ChattingIDList.Add(newcwID);//Super friend
                ChatWindowList.Add(cw);
                cw.Show();
                cw.CloseEvent += new cwEventHandler(cwClose);

                void cwClose()
                {
                    foreach (var cww in ChatWindowList)
                    {
                        if (cww.GetWindowInfo() == cw.GetWindowInfo())
                        {
                            ChatWindowList.Remove(cww);
                            break;
                        }
                    }
                    foreach (var id in ChattingIDList)
                    {
                        if (cw.GetWindowInfo() == id)
                        {
                            ChattingIDList.Remove(id);
                            break;
                        }
                    }
                }

                //Add group to friend_list
                AddGroupToFriendList(GroupChatFriendList);
            }
        }
Esempio n. 7
0
        private void StartChatWindow()
        {
            MilessFriend friend = new MilessFriend();

            friend = listFriends.SelectedItem as MilessFriend;

            if (friend == null)
            {
                MessageBox.Show("请先选择聊天的朋友!");
                return;
            }
            if (friend.FriendID[0] == ' ')
            {
                foreach (var friID in ChattingIDList)
                {
                    if (GroupIDMatch(friend.FriendID, friID))
                    {
                        MessageBox.Show("已有聊天窗口!");

                        return;
                    }
                }
            }
            else
            {
                string friendIP = "";
                var    resp     = CSCore_instance.Query("q" + friend.FriendID);
                if (resp == "n")
                {
                    MessageBox.Show("好友不在线!");
                    return;
                }
                else if (friend.FriendID == account)
                {
                    MessageBox.Show("别自言自语,和别人聊天吧!");
                    return;
                }
                else
                {
                    // Danger
                    friendIP = resp;
                }
                friend.FriendIP = friendIP;
                foreach (var friID in ChattingIDList)
                {
                    if (friend.FriendID == friID)
                    {
                        MessageBox.Show("已有聊天窗口!");

                        return;
                    }
                }
            }


            ChattingIDList.Add(friend.FriendID);
            ChatWindow cw = new ChatWindow();

            cw.SetMyID(account);
            cw.SetFriendInfo(friend.FriendID + "_" + friend.FriendAlias);
            ChatWindowList.Add(cw);
            cw.Show();
            cw.CloseEvent += new cwEventHandler(cwClose);

            void cwClose()
            {
                foreach (var cww in ChatWindowList)
                {
                    if (cww.GetWindowInfo() == cw.GetWindowInfo())
                    {
                        ChatWindowList.Remove(cww);
                        break;
                    }
                }
                foreach (var id in ChattingIDList)
                {
                    if (cw.GetWindowInfo() == id)
                    {
                        ChattingIDList.Remove(id);
                        break;
                    }
                }
            }
        }