コード例 #1
0
ファイル: Form1.cs プロジェクト: hnjm/NetworkChat
        void notifyIcon1_BalloonTipClicked(object sender, EventArgs e)
        {
            //could be a file string[] or a Lan.NetworkUser.
            object obj = notifyIcon1.Tag;

            if (obj != null)
            {
                Type type = obj.GetType();
                if (type == typeof(string[]))
                {
                    string[] args  = (string[])notifyIcon1.Tag;
                    string   from  = args[0];
                    string   fname = args[1];
                    string   path  = Settings.Default.TransfersFolder;
                    if (path == "")
                    {
                        string docs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                        path = docs + @"\NetworkChat\files";
                    }

                    path = path + @"\" + from + @"\" + fname;

                    Process.Start("explorer.exe", @"/select, " + path);
                }
                else if (type == typeof(Lan.NetworkUser))
                {
                    Lan.NetworkUser nu = (Lan.NetworkUser)notifyIcon1.Tag;
                    refreshAfterUserSelect(nu);
                }
            }
        }
コード例 #2
0
ファイル: Chat.cs プロジェクト: hnjm/NetworkChat
        private static void returnNewMessage(string envelope)
        {
            envelope = XmlEncryption.decryptXml(envelope);

            XmlDocument x = new XmlDocument();

            x.LoadXml(envelope);
            XmlNode user     = x.SelectSingleNode("envelope/user");
            XmlNode computer = x.SelectSingleNode("envelope/computer");
            XmlNode ip       = x.SelectSingleNode("envelope/ip");
            string  message  = ASCIIEncoding.ASCII.GetString(Convert.FromBase64String(x.SelectSingleNode("envelope/message").InnerText));
            XmlNode presence = x.SelectSingleNode("envelope/presence");
            XmlNode dateSent = x.SelectSingleNode("envelope/timestamp");

            Lan.NetworkUser nc = new Lan.NetworkUser();
            nc.UserName     = user.InnerText;
            nc.ComputerName = computer.InnerText;
            nc.IPAddress    = IPAddress.Parse(ip.InnerText);
            nc.Presence     = (Lan.Presence)Enum.Parse(typeof(Lan.Presence), presence.InnerText);
            nc.TimeStamp    = DateTime.Parse(dateSent.InnerText);
            nc.UserUniqueId = (nc.UserName + nc.ComputerName).ToLower();

            if (NewMessage != null)
            {
                NewMessage(nc, message);
            }
        }
コード例 #3
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
        private void refreshAfterUserSelect(Lan.NetworkUser nu)
        {
            int index = listViewUsers.Items.IndexOfKey(nu.UserUniqueId);

            currentlySelectedUser = nu;
            //go through listviewuser and if the same
            if (index > -1)
            {
                listViewUsers.Items[nu.UserUniqueId].Selected  = true;
                listViewUsers.Items[nu.UserUniqueId].BackColor = Color.LightPink;
                listViewUsers.Items[nu.UserUniqueId].ForeColor = Color.Purple;

                tabPage1.Tag    = nu;
                tabPage1.Text   = nu.UserName + " Messages";
                buttonSend.Text = "Send To " + nu.UserName;

                tabControl1.SelectedIndex = 0;

                string text = userMessages.LoadUserMessageText(nu.UserUniqueId);
                richTextBoxReplies.Rtf = text;

                richTextBoxReplies.Select(richTextBoxReplies.TextLength, 0);

                richTextBoxReplies.ScrollToCaret();

                toolStripButtonBold.Checked      = Settings.Default.DefaultFont.Bold;
                toolStripButtonItalic.Checked    = Settings.Default.DefaultFont.Italic;
                toolStripButtonUnderline.Checked = Settings.Default.DefaultFont.Underline;
                toolStripButtonStrikeOut.Checked = Settings.Default.DefaultFont.Strikeout;

                richMessage.Font          = Settings.Default.DefaultFont;
                richMessage.SelectionFont = Settings.Default.DefaultFont;

                foreach (ListViewItem lvi in listViewUsers.Items)
                {
                    lvi.BackColor = Color.White;
                    lvi.ForeColor = Color.Black;
                }

                if (listViewUsers.SelectedItems.Count > 0)
                {
                    listViewUsers.SelectedItems[0].BackColor = Color.LightPink;
                    listViewUsers.SelectedItems[0].ForeColor = Color.Purple;
                }

                foreach (TreeNode tn in treeViewGroups.Nodes)
                {
                    tn.BackColor = Color.White;
                    tn.ForeColor = Color.Black;
                }

                Lan.NetworkUser nit = usersWithMessages.Find(s => s.UserUniqueId == nu.UserUniqueId.ToLower());
                usersWithMessages.Remove(nit);

                richMessage.Select();

                this.WindowState = FormWindowState.Normal;
                this.BringToFront();
            }
        }
コード例 #4
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
 void Chat_NewMessage(Lan.NetworkUser Computer, string Message)
 {
     if (!this.IsDisposed)
     {
         Invoke(new dInvokeMessage(invokeMessage), new object[] { Computer, Message });
     }
 }
コード例 #5
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
        private void startSendGroup()
        {
            string groupName = tabPage1.Tag.ToString();

            if (groupName == "Broadcast")
            {
                //send to all online
                //currentUsers
                foreach (Lan.NetworkUser nuw in currentUsers)
                {
                    if (nuw.Presence != Lan.Presence.Offline)
                    {
                        startSendMessage(nuw);
                    }
                }
            }
            else
            {
                //send to all in group...
                List <GroupUser> users = UserGroups.GetGroupMembers(groupName);
                foreach (GroupUser gu in users)
                {
                    Lan.NetworkUser nu = currentUsers.Find(s => s.UserUniqueId == gu.UserUniqueId);

                    if (nu != null)
                    {
                        if (nu.Presence != Lan.Presence.Offline)
                        {
                            startSendMessage(nu);
                        }
                    }
                }
            }
        }
コード例 #6
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
        private void startSendMessage(Lan.NetworkUser nu)
        {
            if (nu == null)
            {
                return;
            }

            MessageObject me = new MessageObject();

            me.User           = nu;
            me.User.TimeStamp = DateTime.Now;
            me.Message        = richMessage.Rtf; //richMessage.Rtf;

            //display issues
            //richMessage.Rtf = "";
            //richMessage.Select(0, 0);
            richTextBoxReplies.Select(richTextBoxReplies.Text.Length, 0);
            richTextBoxReplies.SelectedRtf = @"{\rtf1\ansi\deff0{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}" + @"\cf11[" + DateTime.Now.ToShortTimeString() + "] " + Environment.UserName + @": }";
            richTextBoxReplies.Select(richTextBoxReplies.Text.Length, 0);
            richTextBoxReplies.SelectedRtf = me.Message.Trim();
            richTextBoxReplies.ScrollToCaret();



            ParameterizedThreadStart pst = new ParameterizedThreadStart(sendMessage);
            Thread t = new Thread(pst);

            t.Start(me);
        }
コード例 #7
0
ファイル: Form1.cs プロジェクト: hnjm/NetworkChat
        void tsiMenuSendMessage_Click(object sender, EventArgs args)
        {
            ToolStripItem tsi = (ToolStripItem)sender;

            Lan.NetworkUser nu = (Lan.NetworkUser)tsi.Tag;
            refreshAfterUserSelect(nu);
        }
コード例 #8
0
ファイル: Lan.cs プロジェクト: hnjm/NetworkChat
        private static NetworkUser parseNetworkUser(string xml)
        {
            xml = XmlEncryption.decryptXml(xml);

            XmlDocument x = new XmlDocument();

            x.LoadXml(xml);
            XmlNode user      = x.SelectSingleNode("envelope/user");
            XmlNode computer  = x.SelectSingleNode("envelope/computer");
            XmlNode ip        = x.SelectSingleNode("envelope/ip");
            XmlNode message   = x.SelectSingleNode("envelope/message");
            XmlNode presence  = x.SelectSingleNode("envelope/presence");
            XmlNode icon      = x.SelectSingleNode("envelope/icon");
            XmlNode timestamp = x.SelectSingleNode("envelope/timestamp");

            //byte[] imgBits = Convert.FromBase64String(icon.InnerText);
            //MemoryStream ms = new MemoryStream(imgBits);
            //Image img = Image.FromStream(ms);
            //ms.Close();

            Lan.NetworkUser nc = new Lan.NetworkUser();
            nc.UserName     = user.InnerText;
            nc.ComputerName = computer.InnerText;
            nc.IPAddress    = IPAddress.Parse(ip.InnerText);
            nc.Presence     = (Presence)Enum.Parse(typeof(Presence), presence.InnerText);
            nc.TimeStamp    = DateTime.Parse(timestamp.InnerText);
            nc.UserUniqueId = (nc.UserName + nc.ComputerName);

            // nc.Icon = img;
            return(nc);
        }
コード例 #9
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
        private void refreshGroups()
        {
            Dictionary <string, UserGroup> grps = UserGroups.ViewGroups();

            foreach (string kk in grps.Keys)
            {
                UserGroup ug = grps[kk];
                TreeNode  tn;

                if (!treeViewGroups.Nodes.ContainsKey(kk))
                {
                    tn                  = treeViewGroups.Nodes.Add(ug.GroupName, ug.GroupName);
                    tn.ImageKey         = "group";
                    tn.SelectedImageKey = "group";
                    tn.Tag              = "GROUP";
                }
                else
                {
                    tn = treeViewGroups.Nodes[kk];
                }

                bool isExpended = tn.IsExpanded;

                foreach (GroupUser gu in ug.GroupMembers)
                {
                    Lan.NetworkUser nu = currentUsers.Find(s => s.UserUniqueId == gu.UserUniqueId);

                    //oly shows online users...???
                    if (nu != null)
                    {
                        //check if in tree
                        if (!tn.Nodes.ContainsKey(nu.UserUniqueId))
                        {
                            //check if user online...
                            TreeNode unode = tn.Nodes.Add(nu.UserUniqueId, gu.UserName);
                            unode.ImageKey         = "person";
                            unode.SelectedImageKey = "person";
                            unode.Tag = gu;
                        }
                    }
                    else
                    {
                        if (tn.Nodes.ContainsKey(gu.UserUniqueId))
                        {
                            //Also remove from user list..
                            tn.Nodes[gu.UserUniqueId].Remove();
                        }
                    }

                    if (isExpended)
                    {
                        tn.Expand();
                    }
                }
            }
        }
コード例 #10
0
ファイル: Form1.cs プロジェクト: hnjm/NetworkChat
        private void listViewUsers_MouseClick(object sender, MouseEventArgs e)
        {
            if (listViewUsers.SelectedIndices.Count > 0)
            {
                Lan.NetworkUser com = (Lan.NetworkUser)listViewUsers.SelectedItems[0].Tag;

                //if (!Lan.IsUserThere(com))
                //{
                //    Lan.NetworkUser n = currentUsers.Find(s => s.UserUniqueId == com.UserUniqueId);
                //    currentUsers.Remove(n);
                //    refreshUsers();
                //    refreshGroups();
                //}

                labelPCInfo.Text = com.UserName + " on PC: " + com.ComputerName + "\r\nIP Address:" + com.IPAddress.ToString();

                currentlySelectedUser = com;

                tabPage1.Text             = com.UserName + " Messages";
                tabPage1.Tag              = com;
                tabControl1.SelectedIndex = 0;

                buttonSend.Text = "Send To " + com.UserName;

                string text = userMessages.LoadUserMessageText(com.UserUniqueId);
                richTextBoxReplies.Rtf = text;
                richTextBoxReplies.Select(richTextBoxReplies.TextLength, 0);
                richTextBoxReplies.ScrollToCaret();

                richMessage.Select();

                Lan.NetworkUser nit = usersWithMessages.Find(s => s.UserUniqueId == com.UserUniqueId.ToLower());
                if (nit != null)
                {
                    usersWithMessages.Remove(nit);
                }
            }

            foreach (ListViewItem lvi in listViewUsers.Items)
            {
                lvi.BackColor = Color.White;
                lvi.ForeColor = Color.Black;
            }

            if (listViewUsers.SelectedItems.Count > 0)
            {
                listViewUsers.SelectedItems[0].BackColor = Color.LightPink;
                listViewUsers.SelectedItems[0].ForeColor = Color.Purple;
            }

            foreach (TreeNode tn in treeViewGroups.Nodes)
            {
                tn.BackColor = Color.White;
                tn.ForeColor = Color.Black;
            }
        }
コード例 #11
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
 void Lan_NetworkUserPulse(Lan.NetworkUser NetworkUser)
 {
     try
     {
         if (!this.IsDisposed)
         {
             Invoke(new dUserPulse(userPulse), NetworkUser);
         }
     }
     catch
     {
     }
 }
コード例 #12
0
ファイル: Chat.cs プロジェクト: hnjm/NetworkChat
        public void SendMessage(Lan.NetworkUser User, string Message, string[] Files)
        {
            try
            {
                string toSend = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>";
                toSend += "<envelope><user>" + Environment.UserName + "</user><computer>" + Environment.MachineName + "</computer>";

                toSend += "<ip>" + User.IPAddress + "</ip>";
                toSend += "<presence>" + Enum.GetName(typeof(Lan.Presence), User.Presence) + "</presence>";
                toSend += "<timestamp>" + DateTime.Now.ToString() + "</timestamp>";
                toSend += "<message>" + Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(Message)) + "</message>";
                toSend += "</envelope>";
                string enc_toSend = XmlEncryption.encryptXml(toSend);

                Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                s.SendTimeout = (int)Settings.Default.Timeout;
                s.Connect(User.IPAddress, (int)Settings.Default.ChatPort);
                byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes(enc_toSend);
                int    i           = s.Send(bytesToSend);
                s.Close();


                //send files
                if (Files.Length > 0)
                {
                    foreach (string file in Files)
                    {
                        Thread.Sleep(1000);
                        sendFile(file, User);

                        if (FileSent != null)
                        {
                            FileSent(Files.Length);
                        }
                    }
                }

                if (MessageSent != null)
                {
                    MessageSent();
                }
            }
            catch (Exception ex)
            {
                //fire the event alertin to a lost user User...
                // userOffline(User);
            }
        }
コード例 #13
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
        private void refreshUsers()
        {
            int selIndex = 0;

            if (listViewUsers.SelectedIndices.Count > 0)
            {
                selIndex = listViewUsers.SelectedItems[0].Index;
            }

            NetworkChat.Lan.NetworkUser[] nus = new Lan.NetworkUser[currentUsers.Count];
            currentUsers.CopyTo(nus);
            foreach (NetworkChat.Lan.NetworkUser nu in nus)
            {
                //    listViewUsers.Items[nu.UserUniqueId].SubItems[2].Text = nu.Presence.ToString();
                listViewUsers.Items[nu.UserUniqueId].ImageKey = nu.Presence.ToString().ToLower();
            }
        }
コード例 #14
0
ファイル: Form1.cs プロジェクト: hnjm/NetworkChat
        private void timerFlashUsersWhoHaveMessages_Tick(object sender, EventArgs e)
        {
            Lan.NetworkUser[] nus = new Lan.NetworkUser[usersWithMessages.Count];
            usersWithMessages.CopyTo(nus);

            foreach (Lan.NetworkUser nu in nus)
            {
                ListViewItem[] lvis = listViewUsers.Items.Find(nu.UserUniqueId, true);
                if (lvis.Length > 0)
                {
                    ListViewItem lvi = lvis[0];
                    if (lvi.BackColor == Color.Red)
                    {
                        lvi.BackColor = Color.Wheat;
                    }
                    else
                    {
                        lvi.BackColor = Color.Red;
                    }
                }
            }
        }
コード例 #15
0
ファイル: Form1.cs プロジェクト: hnjm/NetworkChat
        private void showUserFiles()
        {
            if (listViewUsers.SelectedItems.Count > 0)
            {
                Lan.NetworkUser nu   = (Lan.NetworkUser)listViewUsers.SelectedItems[0].Tag;
                string          path = Settings.Default.TransfersFolder;
                if (path == "")
                {
                    string docs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                    path = docs + @"\NetworkChat\files";
                }

                path += @"\" + nu.UserName + nu.ComputerName + @"\";

                if (Directory.Exists(path)) //dont use userUniqueID))
                {
                    Process.Start(path);
                }
                else
                {
                    MessageBox.Show(nu.UserName + " has not sent you any files...", nu.UserName + " has not sent you any files...", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                }
            }
        }
コード例 #16
0
ファイル: Chat.cs プロジェクト: hnjm/NetworkChat
        private void sendFile(string file, Lan.NetworkUser User)
        {
            lock (this)
            {
                try
                {
                    FileInfo fi   = new FileInfo(file);
                    string   name = fi.Name;

                    string contents = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\" ?>";
                    contents += "<FileContainer>";
                    contents += "<FromName>" + Environment.UserName + "</FromName>";
                    contents += "<From>" + Environment.UserName + Environment.MachineName + "</From>";
                    contents += "<File name=\"" + name + "\">";
                    byte[] bits = File.ReadAllBytes(file);
                    contents += Convert.ToBase64String(bits);
                    contents += "</File></FileContainer>";

                    XmlSerializer xss   = new XmlSerializer(typeof(string));
                    Socket        sFile = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                    sFile.SendTimeout = (int)Settings.Default.Timeout;
                    sFile.Connect(User.IPAddress, (int)Settings.Default.FilePort);
                    NetworkStream ns = new NetworkStream(sFile);
                    xss.Serialize(ns, contents);
                    ns.Close();
                    sFile.Shutdown(SocketShutdown.Both);
                    sFile.Close();

                    GC.Collect();
                }
                catch (Exception ex)
                {
                }
            }
        }
コード例 #17
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
        private void invokeMessage(Lan.NetworkUser User, string Message)
        {
            //ONLY do this if the user is present
            object o            = tabPage1.Tag;
            bool   showOnScreen = false;

            if (o.GetType() == typeof(NetworkChat.Lan.NetworkUser))
            {
                NetworkChat.Lan.NetworkUser nu = (NetworkChat.Lan.NetworkUser)o;
                if (nu.UserUniqueId.ToLower() == User.UserUniqueId)
                {
                    showOnScreen = true;
                }
            }
            else //group
            {
            }


            if (showOnScreen)
            {
                richTextBoxReplies.Select(richTextBoxReplies.TextLength, 0);
                //use custom colors for users...
                richTextBoxReplies.SelectedRtf = @"{\rtf1\ansi\deff0{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}" + @"\cf2[" + User.TimeStamp.ToShortTimeString() + "] " + User.UserName + @": }";
                richTextBoxReplies.Select(richTextBoxReplies.TextLength, 0);

                richTextBoxReplies.SelectedRtf = Message;
                richTextBoxReplies.ScrollToCaret(); //.Select(richTextBox1.TextLength, 0);

                if (Settings.Default.AlwaysSpeakMessages)
                {
                    RichTextBox ritb = new RichTextBox();
                    ritb.Rtf = Message;
                    Speak.SpeakPhrase(User.UserName + " says: " + ritb.Text);
                }
            }
            else if (!showOnScreen | !this.TopMost | this.WindowState == FormWindowState.Minimized)//not shown on screen just flash....
            {
                //add user to usersWithMessages;
                notifyIcon1.Tag = User;

                if (Settings.Default.PopupOnNewMessage)
                {
                    notifyIcon1.ShowBalloonTip(5000, "You have a new message", "You have a new message from " + User.UserName, ToolTipIcon.Info);
                }

                if (Settings.Default.SoundOnNewMessage)
                {
                    if (Settings.Default.SoundFileLocation != "")
                    {
                        if (File.Exists(Settings.Default.SoundFileLocation))
                        {
                            SoundPlayer sp = new SoundPlayer(Settings.Default.SoundFileLocation);
                            sp.Play();
                        }
                        else
                        {
                            SystemSounds.Beep.Play();
                        }
                    }
                    else
                    {
                        SystemSounds.Beep.Play();
                    }
                }

                if (Settings.Default.SpeakMessage | Settings.Default.AlwaysSpeakMessages)
                {
                    RichTextBox ritb = new RichTextBox();
                    ritb.Rtf = Message;
                    Speak.SpeakPhrase("You have a message from " + User.UserName + ", which says: " + ritb.Text);
                }
                else if (Settings.Default.SpeakMessageIsFrom)
                {
                    Speak.SpeakPhrase("You have a new message from " + User.UserName);
                }



                usersWithMessages.Add(User);
            }

            //get old string
            //save as user who sent


            RichTextBox rtb = new RichTextBox();
            string      old = userMessages.LoadUserMessageText(User.UserUniqueId);

            rtb.Rtf = old;
            rtb.Select(rtb.TextLength, 0);

            rtb.SelectedRtf = @"{\rtf1\ansi\deff0{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}" + @"\cf2[" + User.TimeStamp.ToShortTimeString() + "] " + User.UserName + @": " + Message + " }";
            richTextBoxReplies.ScrollToCaret();


            userMessages.SaveUserMessageText(User.UserUniqueId, rtb.Rtf);
        }
コード例 #18
0
ファイル: FormController.cs プロジェクト: hnjm/NetworkChat
        private void userPulse(Lan.NetworkUser NetworkUser)
        {
            bool   found = false;
            string pres  = Enum.GetName(typeof(Lan.Presence), NetworkUser.Presence).ToLower();

            for (int i = 0; i < listViewUsers.Items.Count; i++)
            {
                //store in global
                Lan.NetworkUser nu = (Lan.NetworkUser)listViewUsers.Items[i].Tag;

                if (nu.UserUniqueId == NetworkUser.UserUniqueId)// & (nu.ComputerName == NetworkUser.ComputerName))
                {
                    //monitor status changes here
                    //***************************
                    currentUsers.RemoveAll(s => s.UserUniqueId == nu.UserUniqueId);
                    currentUsers.Add(NetworkUser);

                    IEnumerator tss = sendMessageToolStripMenuItemSendMessage.DropDownItems.GetEnumerator();

                    while (tss.MoveNext())
                    {
                        //if(tss.Current.
                        ToolStripItem t = (ToolStripItem)tss.Current;

                        Lan.NetworkUser nut = (Lan.NetworkUser)t.Tag;
                        if (nut.UserUniqueId == NetworkUser.UserUniqueId)
                        {
                            ResourceManager rm  = Resources.ResourceManager;
                            Image           img = (Image)rm.GetObject(pres);
                            t.Tag   = NetworkUser;
                            t.Image = img;
                        }
                    }


                    found = true;
                }
            }

            if (!found)
            {
                ListViewItem lvi = listViewUsers.Items.Add(NetworkUser.UserUniqueId, "", pres);
                lvi.SubItems.Add(NetworkUser.UserName);
                //lvi.SubItems.Add(pres);
                lvi.Tag = NetworkUser;

                ToolStripItem tsi = sendMessageToolStripMenuItemSendMessage.DropDownItems.Add(NetworkUser.UserName);
                tsi.Click += new EventHandler(tsiMenuSendMessage_Click);
                ResourceManager rm  = Resources.ResourceManager;
                Image           img = (Image)rm.GetObject(pres);
                tsi.Tag   = NetworkUser;
                tsi.Image = img;

                currentUsers.Add(NetworkUser);

                if (Settings.Default.SoundWhenUserComesOnline)
                {
                    if (Settings.Default.SoundFileLocation != "")
                    {
                        if (File.Exists(Settings.Default.SoundFileLocation))
                        {
                            SoundPlayer sp = new SoundPlayer(Settings.Default.SoundFileLocation);
                            sp.Play();
                            Thread.Sleep(50);
                        }
                        else
                        {
                            SystemSounds.Beep.Play();
                        }
                    }
                    else
                    {
                        SystemSounds.Beep.Play();
                    }
                }

                if (Settings.Default.PopupWhenUserComesOnline)
                {
                    notifyIcon1.Tag = null;
                    if (NetworkUser.Presence == Lan.Presence.Online)
                    {
                        notifyIcon1.ShowBalloonTip(5000, NetworkUser.UserName + " just came online", NetworkUser.UserName + " is now online on PC: " + NetworkUser.ComputerName, ToolTipIcon.Info);
                    }
                }

                if (Settings.Default.SpeakNameWhenUserComesOnline)
                {
                    Speak.SpeakPhrase(NetworkUser.UserName + " is now online");
                }
            }

            refreshUsers();
            refreshGroups();
        }
コード例 #19
0
ファイル: Form1.cs プロジェクト: hnjm/NetworkChat
 void chat_UserOffline(Lan.NetworkUser User)
 {
     //Lan.NetworkUser nu = currentUsers.Single(s => s.UserUniqueId == User.UserUniqueId);
     //if (nu != null)
     //    currentUsers.Remove(nu);
 }
コード例 #20
0
ファイル: UserSettings.cs プロジェクト: hnjm/NetworkChat
 internal void Show(Lan.NetworkUser networkUser)
 {
     this.ShowDialog();
 }