Example #1
0
        private void  FormMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            // On coupe toutes les connexions et on ferme toutes les Chat Rooms ouvertes
            foreach (FormChatRoom chatRoom in this.listFormChatRoom)
            {
                chatRoom.Close();
            }

            foreach (FormChatPrivate privateChatRoom in this.listFormChatPrivate)
            {
                privateChatRoom.Close();
            }

            listFormChatRoom.Clear();
            listFormChatPrivate.Clear();

            this.treeViewChatRooms.Nodes[0].Nodes.Clear();
            this.treeViewClients.Nodes[0].Nodes.Clear();
            if (client != null)
            {
                // On previent le serveur de notre déconnexion
                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.DisconnectFromServer, client.UserName, "", "");
                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
            }
        }
Example #2
0
        /******************/

        /***** MENU STRIP *****/
        private void quitToolStripMenuItem_Click(object sender, EventArgs e) // Lorsque que l'on clique sur quitter
        {
            // On coupe toutes les connexions
            foreach (FormChatRoom chatRoom in this.listFormChatRoom)
            {
                chatRoom.Close();
            }

            foreach (FormChatPrivate privateChatRoom in this.listFormChatPrivate)
            {
                privateChatRoom.Close();
            }

            listFormChatRoom.Clear();
            listFormChatPrivate.Clear();

            this.treeViewChatRooms.Nodes[0].Nodes.Clear();
            this.treeViewClients.Nodes[0].Nodes.Clear();

            if (client != null)
            {
                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.DisconnectFromServer, client.UserName, null, null);
                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
            }
            System.Environment.Exit(0);
        }
Example #3
0
        private void textBoxMessage_DragDrop(object sender, DragEventArgs e)
        {
            string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));



            foreach (string fileLoc in filePaths)
            {
                Image    im  = Image.FromFile(System.IO.Path.GetFullPath(fileLoc));
                FileInfo fil = new FileInfo(fileLoc);
                if (fil.Length > 100000)
                {
                    MessageBox.Show("Le fichier exède 100ko");
                    return;
                }
                // im = resizeImage(im);
                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ClientPrivateImage, client.UserName, this.PrivateChatName, im, null);

                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

                this.writeUsername(msg.SenderName);
                this.drawImage(msg.ContentMessage);

                closingWindow = true;
            }
        }
Example #4
0
        private void treeViewClients_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)// Lorsque l'on double clique sur un utilisateur, on lance une Chat Room privée
        {
            TreeNode treeNode = (TreeNode)e.Node;

            ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.PrivateChatCreate, client.UserName, treeNode.Text, "");
            ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
        }
Example #5
0
        public void OnReceivedMessage(ChatLib.MessageChat message)
        {
            // Suivant le type de message
            switch (message.MessageType)
            {
            case ChatLib.MessageType.None: break;

            case ChatLib.MessageType.ClientPrivateMessage:
                if (message.SenderName == PrivateChatName)
                {
                    this.writeUsername(message.SenderName);
                    this.writeMessage(message.ContentMessage);
                }
                break;

            case ChatLib.MessageType.ClientPrivateImage:
                try
                {
                    if (message.SenderName == PrivateChatName)
                    {
                        this.writeUsername(message.SenderName);
                        this.drawImage(message.ContentMessage);
                    }
                }
                catch (JsonReaderException)
                {
                    MessageBox.Show("La taille de l'image excède 100ko");
                }
                break;
            }
        }
        private void FormChatRoom_FormClosing(object sender, FormClosingEventArgs e)
        {
            ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ChatRoomExit, client.UserName, this.chatRoomName, this.chatRoomName);

            ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

            closingWindow = true;
        }
Example #7
0
        private void FormChatPrivate_FormClosing(object sender, FormClosingEventArgs e)
        {
            ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.PrivateChatExit, client.UserName, this.colleagueName, null);

            ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

            closingWindow = true;
        }
        private void buttonSend_Click(object sender, EventArgs e)
        {
            string msgToSend = this.textBoxMessage.Text;

            ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ClientChatRoomMessage, client.UserName, this.chatRoomName, msgToSend);

            ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

            this.textBoxMessage.Text = "";
        }
Example #9
0
        /******************/

        /***** TREE VIEW *****/
        private void treeViewChatRooms_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)// Lorsque l'on double clique sur une Chat Room, on s'y connecte
        {
            TreeNode treeNode = (TreeNode)e.Node;

            // Si c'est un chat room
            if (treeNode.Level == 1)
            {
                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ChatRoomJoin, client.UserName, null, treeNode.Text);
                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
            }
        }
Example #10
0
        // Lancer dans un thread
        private void connectToServer()
        {
            Client newClient = null;

            Socket socketConnection = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                socketConnection.Connect(IPAddress.Parse(FormMain.ipAddressServer), FormMain.port);

                // If Connection Successful
                if (socketConnection.Connected)
                {
                    socketConnection.Receive(new byte[1]);

                    newClient = new Client(new IPEndPoint(IPAddress.Parse(FormMain.ipAddressServer), FormMain.port), this.textBoxUsername.Text, this.textBoxPassword.Text);
                    newClient.ClientSocket = socketConnection;
                    FormMain.client        = newClient;

                    ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ConnectToServer, newClient.UserName, null, newClient.Password);

                    ChatLib.ChatLib.SendMessage(newClient.ClientSocket, msg);
                }

                if (cancel)
                {
                    return;
                }

                this.Invoke((MethodInvoker) delegate
                {
                    buttonOK.Enabled        = true;
                    textBoxPassword.Enabled = true;
                    textBoxUsername.Enabled = true;
                    this.OnCreateConnectingClient(newClient);
                    this.Close();
                });
            }
            catch (Exception ex)
            {
                if (cancel)
                {
                    return;
                }

                this.Invoke((MethodInvoker) delegate
                {
                    MessageBox.Show(ex.Message);
                });
            }
        }
Example #11
0
        private void buttonPrivateChat_Click(object sender, EventArgs e)
        {
            if (this.listClient.SelectedItems.Count > 0)
            {
                ListViewItem item = this.listClient.SelectedItems[0];

                string clientPrivateName = item.Text;



                ChatLib.MessageChat message = new ChatLib.MessageChat(ChatLib.MessageType.PrivateChatCreate, this.client.UserName, clientPrivateName, null);
                ChatLib.ChatLib.SendMessage(client.ClientSocket, message);
            }
        }
Example #12
0
        public void OnReceivedMessage(ChatLib.MessageChat message)
        {
            // Suivant le type de message
            switch (message.MessageType)
            {
            case ChatLib.MessageType.None: break;

            // Message texte chat room
            case ChatLib.MessageType.ClientChatRoomMessage:
                if (message.TargetName == chatRoomName)
                {
                    this.writeUsername(message.SenderName);
                    this.writeMessage(message.ContentMessage);
                }
                break;

            case ChatLib.MessageType.UpdateConnectedUsersInChatRoom:
                if (message.TargetName == chatRoomName)
                {
                    this.listClient.Items.Clear();
                    string[] listClient = message.ContentMessage.Split('\\');
                    foreach (string s in listClient)
                    {
                        ListViewItem item = new ListViewItem(s);
                        this.listClient.Items.Add(item);
                    }
                }
                break;

            case ChatLib.MessageType.ClientPrivateMessage:
                break;


            case ChatLib.MessageType.ClientChatRoomImage:

                if (message.TargetName == chatRoomName)
                {
                    this.writeUsername(message.SenderName);
                    this.drawImage(message.ContentMessage);
                }
                break;
            }
        }
Example #13
0
        private void connectToolStripMenuItem_Click(object sender, EventArgs e)// Lorsque l'on clique sur Connect
        {
            if (!Connected)
            {
                if (FormMain.ipAddressServer != null || FormMain.port != -1)
                {
                    finish = false;
                    FormConnection formConnection = new FormConnection();
                    formConnection.OnCreateConnectingClient += formConnection_OnCreateConnectingClient;
                    formConnection.ShowDialog();
                }
                else
                {
                    MessageBox.Show("Please first configure the server.\nGo to Menu > Parameters > Server IP Address.");
                }
            }
            else
            {
                // On coupe toutes les connexions
                foreach (FormChatRoom chatRoom in this.listFormChatRoom)
                {
                    chatRoom.Close();
                }

                foreach (FormChatPrivate privateChatRoom in this.listFormChatPrivate)
                {
                    privateChatRoom.Close();
                }

                listFormChatRoom.Clear();
                listFormChatPrivate.Clear();

                this.treeViewChatRooms.Nodes[0].Nodes.Clear();
                this.treeViewClients.Nodes[0].Nodes.Clear();

                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.DisconnectFromServer, client.UserName, null, null);
                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
            }

            menuStrip_Update();
        }
Example #14
0
 public void UpdateConnectedUsersInChatRoom(ChatLib.MessageChat message)
 {
     if (message.TargetName == chatRoomName)
     {
         string[] listClient = message.ContentMessage.Split('\\');
         this.listClient.Items.Clear();
         foreach (string s in listClient)
         {
             //if (s.Length > 0 && client.UserName != s)
             //{
             //    if (this.listClient.FindItemWithText(s) == null)
             //    {
             //        ListViewItem item = new ListViewItem(s);
             //        this.listClient.Items.Add(item);
             //    }
             //}
             if (s.Length > 0 && client.UserName != s)
             {
                 ListViewItem item = new ListViewItem(s);
                 this.listClient.Items.Add(item);
             }
         }
     }
 }
Example #15
0
        //private void receiveMessage(object obj)
        //{
        //    string chatRoomName = (string)obj;

        //    byte[] buffer = new byte[ChatLib.ChatLib.MESSAGE_MAX_SIZE];

        //    while (true)
        //    {
        //        System.Diagnostics.Debug.WriteLine("FormNewRoom Waiting");
        //        int nbBytes = client.ClientSocket.Receive(buffer);

        //        System.Diagnostics.Debug.WriteLine("FormNewRoom received");

        //        if (nbBytes > 0)
        //        {
        //            try
        //            {
        //                ChatLib.MessageChat msg = ChatLib.ChatLib.createMessageFromString(ChatLib.ChatLib.GetString(buffer, nbBytes));

        //                if (msg.MessageType == ChatLib.MessageType.ChatRoomCreate)
        //                {
        //                    if (msg.ContentMessage == "true")
        //                    {
        //                        this.Invoke((MethodInvoker)delegate
        //                        {
        //                            this.OnCreateNewChatRoom(chatRoomName);
        //                            this.Close();
        //                        });
        //                    }

        //                    break;
        //                }
        //            }
        //            catch (JsonReaderException)
        //            {
        //            }
        //        }
        //    }
        //}

        private void buttonCreateChatRoom_Click(object sender, EventArgs e)
        {
            string chatRoomName = this.textBoxChatRoomName.Text.Trim();

            if (chatRoomName.Length > 0)
            {
                //t.Start(chatRoomName);

                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ChatRoomCreate, client.UserName, null, chatRoomName);
                if (msg != null)
                {
                    System.Diagnostics.Debug.WriteLine("Sending : " + msg.ToString());

                    ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

                    //this.OnCreateNewChatRoom(chatRoomName);
                    this.Close();
                }
            }
            else
            {
                MessageBox.Show("Chat Room name is missing...");
            }
        }
Example #16
0
 private void deleteToolStripMenuItem_Click(object sender, EventArgs e) // Lorsque l'on clique droit sur une Chat Room puis Delete
 {
     ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ChatRoomDelete, client.UserName, rightClicked, null);
     ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
 }
        private void FormChatPrivate_FormClosing(object sender, FormClosingEventArgs e)
        {
            ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.PrivateChatExit, client.UserName, this.colleagueName, null);

            ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

            closingWindow = true;
        }
Example #18
0
        private void textBoxMessage_DragDrop(object sender, DragEventArgs e)
        {
            string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));

                foreach (string fileLoc in filePaths)
                {

                        Image im = Image.FromFile(System.IO.Path.GetFullPath(fileLoc));
                        FileInfo fil = new FileInfo(fileLoc);
                        if (fil.Length > 100000)
                        {
                            MessageBox.Show("Le fichier exède 100ko");
                            return;
                        }
                       // im = resizeImage(im);
                        ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ClientChatRoomImage,client.UserName, this.chatRoomName, im,null);

                        ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
                        closingWindow = true;

                    }
        }
Example #19
0
        private void FormChatRoom_FormClosing(object sender, FormClosingEventArgs e)
        {
            ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ChatRoomExit, client.UserName, this.chatRoomName, this.chatRoomName);

            ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

            closingWindow = true;
        }
Example #20
0
        private void buttonSend_Click(object sender, EventArgs e)
        {
            string msgToSend = this.textBoxMessage.Text;

            ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ClientChatRoomMessage, client.UserName, this.chatRoomName, msgToSend);

            ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

            this.textBoxMessage.Text = "";
        }
Example #21
0
        // Lorsque l'on double clique sur une Chat Room, on s'y connecte
        /******************/
        /***** TREE VIEW *****/
        private void treeViewChatRooms_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            TreeNode treeNode = (TreeNode)e.Node;

            // Si c'est un chat room
            if (treeNode.Level == 1)
            {
                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ChatRoomJoin, client.UserName, null, treeNode.Text);
                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
            }
        }
Example #22
0
        private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            // On coupe toutes les connexions et on ferme toutes les Chat Rooms ouvertes
            foreach (FormChatRoom chatRoom in this.listFormChatRoom)
            {
                chatRoom.Close();
            }

            foreach (FormChatPrivate privateChatRoom in this.listFormChatPrivate)
            {
                privateChatRoom.Close();
            }

            listFormChatRoom.Clear();
            listFormChatPrivate.Clear();

            this.treeViewChatRooms.Nodes[0].Nodes.Clear();
            this.treeViewClients.Nodes[0].Nodes.Clear();
            if (client != null)
            {
                // On previent le serveur de notre déconnexion
                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.DisconnectFromServer, client.UserName, "", "");
                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
            }
        }
Example #23
0
        // Lorsque l'on clique sur Connect
        private void connectToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (!Connected)
            {
                if (FormMain.ipAddressServer != null || FormMain.port != -1)
                {
                    finish = false;
                    FormConnection formConnection = new FormConnection();
                    formConnection.OnCreateConnectingClient += formConnection_OnCreateConnectingClient;
                    formConnection.ShowDialog();
                }
                else
                {
                    MessageBox.Show("Please first configure the server.\nGo to Menu > Parameters > Server IP Address.");
                }
            }
            else
            {
                // On coupe toutes les connexions
                foreach (FormChatRoom chatRoom in this.listFormChatRoom)
                {
                    chatRoom.Close();
                }

                foreach (FormChatPrivate privateChatRoom in this.listFormChatPrivate)
                {
                    privateChatRoom.Close();
                }

                listFormChatRoom.Clear();
                listFormChatPrivate.Clear();

                this.treeViewChatRooms.Nodes[0].Nodes.Clear();
                this.treeViewClients.Nodes[0].Nodes.Clear();

                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.DisconnectFromServer, client.UserName, null, null);
                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
            }

            menuStrip_Update();
        }
Example #24
0
 // Lorsque l'on clique droit sur une Chat Room puis Delete
 private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
 {
     ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ChatRoomDelete, client.UserName, rightClicked, null);
     ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
 }
Example #25
0
        public void receiveMessageFromServer()
        {
            // Boucle de réception des messages du serveur
            byte[] buf = new byte[ChatLib.ChatLib.MESSAGE_MAX_SIZE];
            ChatLib.MessageChat msg = null;

            while (true)
            {
                if (!finish)
                {
                    try
                    {
                        int nbBytes = client.ClientSocket.Receive(buf);

                        if (nbBytes > 0)
                        {
                            if (client.Connected && client.ClientSocket.Connected)
                            {
                                System.Diagnostics.Debug.WriteLine("FormMain received");

                                try
                                {
                                    msg = ChatLib.ChatLib.createMessageFromString(ChatLib.ChatLib.GetString(buf, nbBytes));
                                    System.Diagnostics.Debug.WriteLine(msg.MessageType);

                                    switch (msg.MessageType)               // En fonction du type de message recu
                                    {
                                    case ChatLib.MessageType.ChatRoomExit: // Le serveur nous confirme que nous quittons la Chat Room
                                        if (msg.ContentMessage == "true")
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                listFormChatRoom.Remove(listFormChatRoom.Find(x => x.ChatRoomName == msg.TargetName));
                                            });
                                        }

                                        break;

                                    case ChatLib.MessageType.PrivateChatExit:     // Le serveur nous confirme que nous quittons la Chat Room privée
                                        if (msg.ContentMessage == "true")
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                listFormChatPrivate.Remove(listFormChatPrivate.Find(x => x.PrivateChatName == msg.TargetName));
                                            });
                                        }
                                        break;

                                    case ChatLib.MessageType.ChatRoomJoin:     // Le serveur nous confirme que nous nous connectons à une Chat Room
                                        if (msg.ContentMessage == "true")
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                if (!listFormChatRoom.Exists(x => x.ChatRoomName == msg.TargetName))
                                                {
                                                    listFormChatRoom.Add(new FormChatRoom(msg.TargetName));
                                                }

                                                listFormChatRoom.Find(x => x.ChatRoomName == msg.TargetName).Show();
                                            });
                                        }
                                        break;


                                    case ChatLib.MessageType.ChatRoomCreate:     // Le serveur nous confirme que nous avons créé une Chat Room
                                        if (msg.ContentMessage == "true")
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                if (!this.listFormChatRoom.Exists(x => x.ChatRoomName == msg.TargetName))
                                                {
                                                    this.formNewRoom_OnCreateNewChatRoom(msg.TargetName);
                                                }
                                            });
                                        }

                                        break;

                                    case ChatLib.MessageType.ClientChatRoomMessage:     // A la reception d'un message
                                        // Verifier parmis toutes les Chat Rooms ouvertes dans lesquels le client est connecté
                                        // Transférer le message à cette chat room
                                        if (listFormChatRoom.Exists(x => x.ChatRoomName == msg.TargetName))
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                FormChatRoom chat = listFormChatRoom.Find(x => x.ChatRoomName == msg.TargetName);
                                                chat.OnReceivedMessage(msg);
                                            });
                                        }

                                        break;

                                    case ChatLib.MessageType.ClientChatRoomImage:     // A la reception d'un message de type image

                                        if (listFormChatRoom.Exists(x => x.ChatRoomName == msg.TargetName))
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                FormChatRoom chat = listFormChatRoom.Find(x => x.ChatRoomName == msg.TargetName);
                                                chat.OnReceivedMessage(msg);
                                            });
                                        }


                                        break;

                                    case ChatLib.MessageType.UpdateConnectedUsersInChatRoom:     // Le serveur nous informe que la liste des utilisateurs connectés à une Chat Room précise a été mise à jour

                                        if (listFormChatRoom.Exists(x => x.ChatRoomName == msg.TargetName))
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                FormChatRoom chat = listFormChatRoom.Find(x => x.ChatRoomName == msg.TargetName);
                                                chat.UpdateConnectedUsersInChatRoom(msg);
                                            });
                                        }

                                        break;

                                    case ChatLib.MessageType.UpdateChatRoomList:     // Le serveur nous indique que la liste des Chat Rooms a été mise à jour

                                        if (msg.ContentMessage != "false")
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                this.treeViewChatRooms.Nodes[0].Nodes.Clear();     // On vide la liste des Chat Rooms
                                            });

                                            foreach (string chatRoom in msg.ContentMessage.Split('\\'))
                                            {
                                                // On réaffiche la liste des Chat Rooms
                                                if (chatRoom.Length > 0)
                                                {
                                                    this.Invoke((MethodInvoker) delegate
                                                    {
                                                        this.formNewRoom_OnCreateNewChatRoom(chatRoom);
                                                    });
                                                }
                                            }
                                        }
                                        if (msg.ContentMessage == "false")
                                        {
                                            MessageBox.Show("You can't delete this Chat Room while users are still in it.");
                                        }

                                        break;

                                    case ChatLib.MessageType.PrivateChatCreate:     // Le serveur nous confirme la création d'une Chat Room privée

                                        FormChatPrivate privchat = new FormChatPrivate(msg.SenderName);
                                        if (!this.listFormChatPrivate.Exists(x => x.PrivateChatName == msg.SenderName))
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                this.listFormChatPrivate.Add(privchat);
                                                this.listFormChatPrivate.Find(x => x.PrivateChatName == privchat.PrivateChatName).Show();
                                            });
                                        }
                                        break;


                                    case ChatLib.MessageType.ClientPrivateMessage:     // A la réception d'un message privé

                                        if (listFormChatPrivate.Exists(x => x.PrivateChatName == msg.SenderName))
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                FormChatPrivate chat = listFormChatPrivate.Find(x => x.PrivateChatName == msg.SenderName);
                                                chat.OnReceivedMessage(msg);
                                            });
                                        }
                                        break;

                                    case ChatLib.MessageType.ClientPrivateImage:     // A la réception d'un message privé de type image

                                        if (listFormChatPrivate.Exists(x => x.PrivateChatName == msg.SenderName))
                                        {
                                            this.Invoke((MethodInvoker) delegate
                                            {
                                                FormChatPrivate chat = listFormChatPrivate.Find(x => x.PrivateChatName == msg.SenderName);
                                                chat.OnReceivedMessage(msg);
                                            });
                                        }
                                        break;

                                    case ChatLib.MessageType.UpdateConnectedUsers:     // Le serveur nous indique que la liste des utlisateurs connectés a été mise à jour
                                        string[] users = msg.ContentMessage.Split('\\');

                                        this.Invoke((MethodInvoker) delegate
                                        {
                                            this.treeViewClients.Nodes[0].Nodes.Clear();        // On vide la liste des utilisateurs connectés

                                            foreach (string s in users)
                                            {
                                                System.Diagnostics.Debug.WriteLine(s);

                                                if (s.Length > 0 && s != client.UserName)
                                                {
                                                    this.treeViewClients.Nodes[0].Nodes.Add(new TreeNode(s));
                                                }
                                            }

                                            this.treeViewClients.ExpandAll();
                                        });
                                        break;

                                    case ChatLib.MessageType.DisconnectFromServer:     // Le serveur nous confirme notre déconnexion
                                        if (msg.ContentMessage == "true")
                                        {
                                            FormMain.client = null;

                                            finish = true;
                                            if (!this.IsDisposed)
                                            {
                                                this.Invoke((MethodInvoker) delegate
                                                {
                                                    this.Text = "Chat Application";
                                                    this.menuStrip_Update();
                                                });
                                            }

                                            return;
                                        }
                                        break;
                                    }
                                }
                                catch (JsonReaderException)
                                {
                                }
                            }
                            else
                            {
                                return;
                            }
                        }
                    }
                    catch (SocketException)
                    {
                    }
                }
                else
                {
                    return;
                }
            }
        }
Example #26
0
        // Lorsque que l'on clique sur quitter
        /******************/
        /***** MENU STRIP *****/
        private void quitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // On coupe toutes les connexions
            foreach (FormChatRoom chatRoom in this.listFormChatRoom)
            {
                chatRoom.Close();
            }

            foreach (FormChatPrivate privateChatRoom in this.listFormChatPrivate)
            {
                privateChatRoom.Close();
            }

            listFormChatRoom.Clear();
            listFormChatPrivate.Clear();

            this.treeViewChatRooms.Nodes[0].Nodes.Clear();
            this.treeViewClients.Nodes[0].Nodes.Clear();

            if (client != null)
            {
                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.DisconnectFromServer, client.UserName, null, null);
                ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
            }
            System.Environment.Exit(0);
        }
Example #27
0
        //private void receiveMessage(object obj)
        //{
        //    string chatRoomName = (string)obj;
        //    byte[] buffer = new byte[ChatLib.ChatLib.MESSAGE_MAX_SIZE];
        //    while (true)
        //    {
        //        System.Diagnostics.Debug.WriteLine("FormNewRoom Waiting");
        //        int nbBytes = client.ClientSocket.Receive(buffer);
        //        System.Diagnostics.Debug.WriteLine("FormNewRoom received");
        //        if (nbBytes > 0)
        //        {
        //            try
        //            {
        //                ChatLib.MessageChat msg = ChatLib.ChatLib.createMessageFromString(ChatLib.ChatLib.GetString(buffer, nbBytes));
        //                if (msg.MessageType == ChatLib.MessageType.ChatRoomCreate)
        //                {
        //                    if (msg.ContentMessage == "true")
        //                    {
        //                        this.Invoke((MethodInvoker)delegate
        //                        {
        //                            this.OnCreateNewChatRoom(chatRoomName);
        //                            this.Close();
        //                        });
        //                    }
        //                    break;
        //                }
        //            }
        //            catch (JsonReaderException)
        //            {
        //            }
        //        }
        //    }
        //}
        private void buttonCreateChatRoom_Click(object sender, EventArgs e)
        {
            string chatRoomName = this.textBoxChatRoomName.Text.Trim();

            if (chatRoomName.Length > 0)
            {
                //t.Start(chatRoomName);

                ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.ChatRoomCreate, client.UserName, null, chatRoomName);
                if (msg != null)
                {
                    System.Diagnostics.Debug.WriteLine("Sending : " + msg.ToString());

                    ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);

                    //this.OnCreateNewChatRoom(chatRoomName);
                    this.Close();
                }
            }
            else
            {
                MessageBox.Show("Chat Room name is missing...");
            }
        }
Example #28
0
 // Lorsque l'on double clique sur un utilisateur, on lance une Chat Room privée
 private void treeViewClients_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
 {
     TreeNode treeNode = (TreeNode)e.Node;
     ChatLib.MessageChat msg = new ChatLib.MessageChat(ChatLib.MessageType.PrivateChatCreate, client.UserName, treeNode.Text,"");
     ChatLib.ChatLib.SendMessage(client.ClientSocket, msg);
 }
Example #29
0
        private void buttonPrivateChat_Click(object sender, EventArgs e)
        {
            if (this.listClient.SelectedItems.Count > 0)
            {
                ListViewItem item = this.listClient.SelectedItems[0];

                string clientPrivateName = item.Text;

                ChatLib.MessageChat message = new ChatLib.MessageChat(ChatLib.MessageType.PrivateChatCreate, this.client.UserName, clientPrivateName, null);
                ChatLib.ChatLib.SendMessage(client.ClientSocket, message);

            }
        }