private async void UserList_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) { if (this.UserList.SelectedIndex >= 0) { ChatUserControl userControl = (ChatUserControl)this.UserList.SelectedItem; this.UserList.SelectedIndex = -1; await this.ShowUserDialog(userControl.User); } }
private async void CommandBinding_PageUp_Executed(object sender, ExecutedRoutedEventArgs e) { ChapIndex--; _chapid = bookdir.Volumelists[VolumeIndex].Chapterlist[ChapIndex].ChapId; await ReLoad(); ChatUserControl.ScrollToHome(); }
private async void CommandBinding_OpenDirDialog_Executed(object sender, ExecutedRoutedEventArgs e) { DirChoosePage dialog = new DirChoosePage(bookdir, _volumeid, _chapid); NavigationService.Navigate(dialog); await ReLoad(); ChatUserControl.ScrollToHome(); }
public async Task Add(UserViewModel user) { if (user != null) { await this.collectionChangeSemaphore.WaitAndRelease(() => { if (user != null && !this.existingUsers.ContainsKey(user.ID)) { this.cachedUserRoles[user.ID] = user.PrimarySortableRole; int insertIndex = 0; for (insertIndex = 0; insertIndex < this.collection.Count; insertIndex++) { ChatUserControl userControl = this.collection[insertIndex]; if (userControl != null) { UserViewModel currentUser = userControl.User; if (currentUser != null) { if (!this.cachedUserRoles.ContainsKey(currentUser.ID)) { this.cachedUserRoles[currentUser.ID] = currentUser.PrimarySortableRole; } if (this.cachedUserRoles[currentUser.ID] == this.cachedUserRoles[user.ID]) { if (!string.IsNullOrEmpty(user.UserName) && currentUser.UserName.CompareTo(user.UserName) > 0) { break; } } else if (this.cachedUserRoles[currentUser.ID] < this.cachedUserRoles[user.ID]) { break; } } } } ChatUserControl control = new ChatUserControl(user); this.existingUsers[user.ID] = control; if (insertIndex < this.collection.Count) { this.collection.Insert(insertIndex, control); } else { this.collection.Add(control); } } return(Task.FromResult(0)); }); } }
private async void ReportunAuthorized_Click(object sender, RoutedEventArgs e) { clickingImages = false; ChatUserControl control = new ChatUserControl(); control.setControlProperties(250, "SECURITY VIOLATION", "Unauthorized user was Reported successfully", "peach", null, false); ChatStack.Children.Add(control); // createsystemWarning("UNAUTHORIZED USER : REPORTED", 200, 200, "Unauthorized user was Reported successfully", false, false, "sdf", false, "sdf"); await Task.Delay(200); myScroll.ChangeView(0, myScroll.ExtentHeight, 1); }
private static void OnChatChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { GestorRedUserControl controlRed = (GestorRedUserControl)d; if (e.OldValue != null) { ChatUserControl controlChatOld = (ChatUserControl)e.NewValue; controlChatOld.EnviandoTexto -= new EventHandler <ChatChangedEventArgs>(controlRed.Chat_EnviarMensajeTexto); } ChatUserControl controlChatNew = (ChatUserControl)e.NewValue; controlChatNew.EnviandoTexto += new EventHandler <ChatChangedEventArgs>(controlRed.Chat_EnviarMensajeTexto); }
public void Execute(object parameter) { App.CurrentUser = App.UserModel.Users.SingleOrDefault(x => x.Email == LoginViewModel.Email); if (App.CurrentUser.Id == 1) { App.NetworkHelper.User_Id = 0; } else { App.NetworkHelper.User_Id = 1; } if (App.CurrentUser != null) { Task.Run(() => { App.NetworkHelper.ConnectToServer(); }); LoginViewModel.MyGrid.Children.Clear(); FirstChatViewModel firstChatViewModel = new FirstChatViewModel(); firstChatViewModel.IsClickedToChat = true; FirstChatUserControl firstChatUserControl = new FirstChatUserControl(firstChatViewModel); LoginViewModel.MyGrid.Children.Add(firstChatUserControl); var allchats = App.CurrentUser.AllConversations; ChatViewModel chatViewModel = new ChatViewModel(); chatViewModel.AllChats = new ObservableCollection <Chat>(); chatViewModel.FirstChatViewModel = firstChatViewModel; var count = App.UserModel.Users.Count; App.CurrentUser.AllConversations = new List <Conversation>(); for (int i = 0; i < count; i++) { Conversation conversation = new Conversation(); conversation.User = App.UserModel.Users[i]; conversation.AllMessages = new ObservableCollection <Message>(); App.CurrentUser.AllConversations.Add(conversation); Chat chat = new Chat() { Id = i + 1, ImageSource = @"/Images\personWhiteSmoke.png", User = App.CurrentUser.AllConversations[i].User, Message = new Message() //App.CurrentUser.AllConversations[i].AllMessages[App.CurrentUser.AllConversations[i].AllMessages.Count - 1] }; chatViewModel.AllChats.Add(chat); } ChatUserControl chatUserControl = new ChatUserControl(chatViewModel); firstChatViewModel.MyChatGrid.Children.Clear(); firstChatViewModel.MyChatGrid.Children.Add(chatUserControl); } }
private async void ScrollTextBtnClick(object sender, RoutedEventArgs e) { //IEnumerable<PersonGroup> personGroups = await FaceServiceHelper.ListPersonGroupsAsync(SettingsHelper.Instance.WorkspaceKey); //await FaceServiceHelper.TrainPersonGroupAsync(personGroups.FirstOrDefault().PersonGroupId); ChatUserControl control = new ChatUserControl(); control.setControlProperties(250, "SUCCESS", "A new User has been Authorized", "green", null, false); ChatStack.Children.Add(control); //createsystemWarning("AUTHORIZATION : SUCCESS", 200, 200, "A new User has been Authorized", false, false, "sdf", false, "dark"); await Task.Delay(200); myScroll.ChangeView(0, myScroll.ExtentHeight, 1); }
private async void AddPersonBtnclick(object sender, RoutedEventArgs e) { IEnumerable <PersonGroup> personGroups = await FaceServiceHelper.ListPersonGroupsAsync(SettingsHelper.Instance.WorkspaceKey); clickingImages = false; //Person[] personsInGroup = await FaceServiceHelper.GetPersonsAsync(personGroups.FirstOrDefault().PersonGroupId); //CreatePersonResult result = await FaceServiceHelper.CreatePersonAsync(personGroups.FirstOrDefault().PersonGroupId, "Saeed"); //foreach (var item in imagelist) //{ // AddPersistedFaceResult addResult; // addResult = await FaceServiceHelper.AddPersonFaceAsync( // personGroups.FirstOrDefault().PersonGroupId, // result.PersonId, // imageUrl: item, // userData: item, // targetFace: null); //} await FaceServiceHelper.TrainPersonGroupAsync(personGroups.FirstOrDefault().PersonGroupId); UnauthorizedGrid.Visibility = Visibility.Collapsed; ChatUserControl control = new ChatUserControl(); control.setControlProperties(250, "AUTHORIZATION : SUCCESS", "A new User has been Authorized", "green", null, false); ChatStack.Children.Add(control); //createsystemWarning("", 200, 200, "", false, false, "sdf", false, "sdf"); await Task.Delay(200); myScroll.ChangeView(0, myScroll.ExtentHeight, 1); }
public void Execute(object parameter) { ContactViewModel.MyGrid.Children.Clear(); FirstChatViewModel firstChatViewModel = new FirstChatViewModel(); firstChatViewModel.IsClickedToChat = true; FirstChatUserControl firstChatUserControl = new FirstChatUserControl(firstChatViewModel); ContactViewModel.MyGrid.Children.Add(firstChatUserControl); var allchats = App.CurrentUser.AllConversations; ChatViewModel chatViewModel = new ChatViewModel(); chatViewModel.AllChats = new ObservableCollection <Chat>(); chatViewModel.FirstChatViewModel = firstChatViewModel; var count = App.UserModel.Users.Count; App.CurrentUser.AllConversations = new List <Conversation>(); for (int i = 0; i < count; i++) { Conversation conversation = new Conversation(); conversation.User = App.UserModel.Users[i]; conversation.AllMessages = new ObservableCollection <Message>(); App.CurrentUser.AllConversations.Add(conversation); Chat chat = new Chat() { Id = i + 1, ImageSource = @"/Images\personWhiteSmoke.png", User = App.CurrentUser.AllConversations[i].User, Message = App.CurrentUser.AllConversations[i].AllMessages[App.CurrentUser.AllConversations[i].AllMessages.Count - 1] }; chatViewModel.AllChats.Add(chat); } ChatUserControl chatUserControl = new ChatUserControl(chatViewModel); firstChatViewModel.MyChatGrid.Children.Clear(); firstChatViewModel.MyChatGrid.Children.Add(chatUserControl); }
public void Execute(object parameter) { var correctCode = VerificationViewModel.VerificationCode; var userCode = VerificationViewModel.Code; if (correctCode == userCode) { App.UserModel.Users.Add(VerificationViewModel.NewUser); App.Config.Users = App.UserModel.Users; App.Config.SeriailizeWordsToJson(); VerificationViewModel.Notification = "You completed registriation successfully"; VerificationViewModel.MyGrid.Children.Clear(); FirstChatViewModel firstChatViewModel = new FirstChatViewModel(); firstChatViewModel.IsClickedToChat = true; FirstChatUserControl firstChatUserControl = new FirstChatUserControl(firstChatViewModel); VerificationViewModel.MyGrid.Children.Add(firstChatUserControl); ChatViewModel chatViewModel = new ChatViewModel(); chatViewModel.AllChats = new ObservableCollection <Chat>() { new Chat() { Id = 1 , User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 1, Content = "Salam brat", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" }, new Chat() { Id = 2, User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 2, Content = "sag ol qaqa sen necesen ?", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" } , new Chat() { Id = 3 , User = new User() { Id = 2, Email = "" , Username = "******" }, Message = new Message() { Id = 3, Content = "oldu qaqa", DateTime = DateTime.Now.ToShortTimeString(), IsRed = false }, ImageSource = @"/Images\personWhiteSmoke.png" } , new Chat() { Id = 1 , User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 1, Content = "Salam brat", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" }, new Chat() { Id = 2, User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 2, Content = "sag ol qaqa sen necesen ?", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" } , new Chat() { Id = 3 , User = new User() { Id = 2, Email = "" , Username = "******" }, Message = new Message() { Id = 3, Content = "oldu qaqa", DateTime = DateTime.Now.ToShortTimeString(), IsRed = false }, ImageSource = @"/Images\personWhiteSmoke.png" }, new Chat() { Id = 1 , User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 1, Content = "Salam brat", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" }, new Chat() { Id = 2, User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 2, Content = "sag ol qaqa sen necesen ?", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" } , new Chat() { Id = 3 , User = new User() { Id = 2, Email = "" , Username = "******" }, Message = new Message() { Id = 3, Content = "oldu qaqa", DateTime = DateTime.Now.ToShortTimeString(), IsRed = false }, ImageSource = @"/Images\personWhiteSmoke.png" } }; chatViewModel.FirstChatViewModel = firstChatViewModel; ChatUserControl chatUserControl = new ChatUserControl(chatViewModel); firstChatViewModel.MyChatGrid.Children.Clear(); firstChatViewModel.MyChatGrid.Children.Add(chatUserControl); } else { VerificationViewModel.Notification = "You verification code is not right please try again"; } }
public void Execute(object parameter) { if (!FirstChatViewModel.IsClickedToChat) { FirstChatViewModel.IsClickedToChat = true; FirstChatViewModel.IsClickedToCall = false; FirstChatViewModel.IsClickedToCamera = false; FirstChatViewModel.IsClickedToStatus = false; ChatViewModel chatViewModel = new ChatViewModel(); chatViewModel.FirstChatViewModel = FirstChatViewModel; chatViewModel.AllChats = new ObservableCollection <Chat>() { new Chat() { Id = 1 , User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 1, Content = "Salam brat", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" }, new Chat() { Id = 2, User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 2, Content = "sag ol qaqa sen necesen ?", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" } , new Chat() { Id = 3 , User = new User() { Id = 2, Email = "" , Username = "******" }, Message = new Message() { Id = 3, Content = "oldu qaqa", DateTime = DateTime.Now.ToShortTimeString(), IsRed = false }, ImageSource = @"/Images\personWhiteSmoke.png" } , new Chat() { Id = 1 , User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 1, Content = "Salam brat", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" }, new Chat() { Id = 2, User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 2, Content = "sag ol qaqa sen necesen ?", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" } , new Chat() { Id = 3 , User = new User() { Id = 2, Email = "" , Username = "******" }, Message = new Message() { Id = 3, Content = "oldu qaqa", DateTime = DateTime.Now.ToShortTimeString(), IsRed = false }, ImageSource = @"/Images\personWhiteSmoke.png" }, new Chat() { Id = 1 , User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 1, Content = "Salam brat", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" }, new Chat() { Id = 2, User = new User() { Id = 1, Email = "" , Username = "******" }, Message = new Message() { Id = 2, Content = "sag ol qaqa sen necesen ?", DateTime = DateTime.Now.ToShortTimeString(), IsRed = true }, ImageSource = @"/Images\personWhiteSmoke.png" } , new Chat() { Id = 3 , User = new User() { Id = 2, Email = "" , Username = "******" }, Message = new Message() { Id = 3, Content = "oldu qaqa", DateTime = DateTime.Now.ToShortTimeString(), IsRed = false }, ImageSource = @"/Images\personWhiteSmoke.png" } }; ChatUserControl chatUserControl = new ChatUserControl(chatViewModel); FirstChatViewModel.MyChatGrid.Children.Clear(); FirstChatViewModel.MyChatGrid.Children.Add(chatUserControl); } }
private async Task ProcessCameraCapture(ImageAnalyzer e) { try { if (e == null) { this.lastDetectedFaceSample = null; this.lastIdentifiedPersonSample = null; this.lastSimilarPersistedFaceSample = null; this.lastEmotionSample = null; this.debugText.Text = ""; this.isProcessingPhoto = false; return; } await Task.WhenAll(e.DetectFacesAsync(detectFaceAttributes: true)); //await Task.WhenAll(e.DetectFacesAsync(detectFaceAttributes: true), e.AnalyzeImageAsync(detectCelebrities: false)); DateTime start = DateTime.Now; await Task.Run(() => SavePicturesToServer(e)); // Compute Emotion, Age and Gender //await Task.WhenAll(e.DetectEmotionAsync(), e.DetectFacesAsync(detectFaceAttributes: true)); //check tags //foreach (var item in e.AnalysisResult.Description.Tags) //{ // if (item.Contains("fire")) // { // isfiredetected = true; // } //} if (Constants.isFireDetected) { if (isfiredetected) { var stream = new InMemoryRandomAccessStream(); await stream.WriteAsync(e.Data.AsBuffer()); stream.Seek(0); await fireimage.SetSourceAsync(stream); await Task.Delay(300); ChatUserControl control = new ChatUserControl(); control.setControlProperties(500, "HAZARD", "Fire detected in sector 7", "peach", fireimage, true); ChatStack.Children.Add(control); // createsystemWarning("SYSTEM : ALERT", 400, 400, "Fire Detected in the meeting room", false, false, "sdf", true, "dark"); await Task.Delay(200); myScroll.ChangeView(0, myScroll.ExtentHeight, 1); isfiredetected = false; } } if (e.DetectedFaces == null || !e.DetectedFaces.Any()) { this.lastDetectedFaceSample = null; LastPersistedCount = 0; } else { this.lastDetectedFaceSample = e.DetectedFaces; //analysis image can be taken here and done if (!ishelmet) { ishelmet = true; ChatUserControl control = new ChatUserControl(); control.setControlProperties(280, "SAFETY VIOLATION", "Personnel with no Helmet", "blue", null, false); ChatStack.Children.Add(control); await Task.Delay(200); myScroll.ChangeView(0, myScroll.ExtentHeight, 1); var data = await getData("http://gitex2017backend.azurewebsites.net/api/ServiceRequest/AnswerQuestion?Answer=Personnel with no Helmet&Session=" + SessionID); } if (LastUpdatedDateTime.AddMinutes(4) < DateTime.Now) { ishelmet = true; } } // Compute Face Identification and Unique Face Ids await Task.WhenAll(e.IdentifyFacesAsync(), e.FindSimilarPersistedFacesAsync()); if (!e.IdentifiedPersons.Any()) { this.lastIdentifiedPersonSample = null; } else { this.lastIdentifiedPersonSample = e.DetectedFaces.Select(f => new Tuple <Face, IdentifiedPerson>(f, e.IdentifiedPersons.FirstOrDefault(p => p.FaceId == f.FaceId))); } if (!e.SimilarFaceMatches.Any()) { this.lastSimilarPersistedFaceSample = null; } else { this.lastSimilarPersistedFaceSample = e.SimilarFaceMatches; } int count = 0; unauth = true; if (lastIdentifiedPersonSample == null && e.DetectedFaces.Count() > 0) { var croppedimage = await GetPrimaryFaceFromCameraCaptureAsync(e, e.DetectedFaces.FirstOrDefault().FaceRectangle); if (croppedimage != null) { this.OnImageSearchCompleted(croppedimage); } } else { foreach (var item in lastIdentifiedPersonSample) { try { if (item.Item2 == null) { count++; var croppedImage = e; croppedImage = await GetPrimaryFaceFromCameraCaptureAsync(e, item.Item1.FaceRectangle); if (croppedImage != null) { this.OnImageSearchCompleted(croppedImage); } } } catch (Exception ex) { } } } if (!unauth) { unauth = true; ChatUserControl control = new ChatUserControl(); control.setControlProperties(200, "SECURITY VIOLATION", "Unauthorized personnel on Sector 7", "peach", null, false); ChatStack.Children.Add(control); myScroll.ChangeView(0, myScroll.ExtentHeight, 1); } if (LastPersistedCount < count) { // PopToast(string.Format("{0} Unauthorized faces found", count)); } LastPersistedCount = count; //this.UpdateDemographics(e); this.debugText.Text = string.Format("Latency: {0}ms", (int)(DateTime.Now - start).TotalMilliseconds); this.ErrorText.Text = e.ErrorMessage; this.isProcessingPhoto = false; } catch (Exception ex) { this.isProcessingPhoto = false; } }
private async void LoadingChats(object sender, object e) { try { //Calling the webservices CurrentTime.Text = DateTime.Now.ToString(@"HH:mm:ss"); await Task.Run(() => GetMaterials()); await Task.Run(() => getNewChats()); if (messages != null && messages.Count > 0) { ChatUserControl control = new ChatUserControl(); control.setControlProperties(350, "USER", messages.FirstOrDefault().Question, "green", null, false); ChatStack.Children.Add(control); await Task.Delay(200); myScroll.ChangeView(0, myScroll.ExtentHeight, 1); } } catch (Exception ex) { } try { //if any answer do it here if (PenQuestions != null && PenQuestions.Count > 0) { switch (PenQuestions.FirstOrDefault().Type) { case "person": var count = lastIdentifiedPersonSample.Count(); if (count > 0) { foreach (var item in lastIdentifiedPersonSample) { if (item.Item2 != null) { if (item.Item2.Person.Name.ToLower().Contains("rami")) { answertext = "Yes,Rami is on site in sector 7"; } } } if (answertext == "") { answertext = "No, Rami is not currently on site in Sector 7"; } } break; case "object": break; case "hammer": if (Constants.materials.Count > 0) { foreach (var item in Constants.materials) { if (item.Confidence.ToLower().Contains("hammer")) { ishammer = true; } } } if (ishammer) { answertext = "Yes, the Hammer is on stand in Sector 7"; } else { answertext = "No, The Hammer is not detected in Sector 7"; } break; default: answertext = "Sorry, I cannot detect right now"; PenQuestions.Clear(); break; } } if (answertext != "") { ChatUserControl control = new ChatUserControl(); control.setControlProperties(280, "USER RESPONSE", answertext, "blue", null, false); ChatStack.Children.Add(control); await Task.Delay(200); myScroll.ChangeView(0, myScroll.ExtentHeight, 1); } } catch (Exception ex) { } }
private void ClientListener(object client) { TcpClient tcpClient = (TcpClient)client; NetworkStream clientStream = tcpClient.GetStream(); IFormatter formatter = new BinaryFormatter(); String userTreadName = ""; // TEMP //ChatMessage cms = new ChatMessage("Gancho", "1", "test message 1"); //this.sendToTcpClient(cms, tcpClient); //System.Threading.Thread.Sleep(5000); //cms = new ChatMessage("Gancho", "1", "test message 2"); //this.sendToTcpClient(cms, tcpClient); //System.Threading.Thread.Sleep(5000); //cms = new ChatMessage("Gancho", "", "test message 3"); //this.sendToTcpClient(cms, tcpClient); while (true) { try { Object userObj = getFromClient(tcpClient); if (userObj is ChatUserControl) { String userName = ((ChatUserControl)userObj).UserName; Boolean add = ((ChatUserControl)userObj).Active; if (add) { if (userName == "Admin" || this.userList.ContainsKey(userName)) { ChatMessage cm = new ChatMessage("Admin", "", "Name already taken"); this.sendToTcpClient(cm, tcpClient); break; } this.userList.Add(userName, tcpClient); userTreadName = userName; this.mainW.AddTextRow(userName + " logged"); this.sendToTcpClient(new ChatMessage("Admin", "", "Welcome, " + userName + "!"), tcpClient); ChatUserControl cc; foreach (KeyValuePair <string, TcpClient> item in this.userList) { cc = new ChatUserControl(item.Key, true); this.sendToTcpClient(cc, tcpClient); //send the user to other users list if (!item.Key.Equals(userName)) { cc = new ChatUserControl(userName, true); this.sendToClient(cc, item.Key); } } } else { //logout event ChatUserControl cc; this.userList.Remove(userName); this.mainW.AddTextRow(userName + " logged out"); foreach (KeyValuePair <string, TcpClient> item in this.userList) { cc = new ChatUserControl(userName, false); this.sendToClient(cc, item.Key); } break; } } else if (userObj is ChatMessage) { ChatMessage cm = ((ChatMessage)userObj); String sender = cm.SenderName; String receiver = cm.ReceiverName; String message = cm.Message; if (receiver.Equals("Admin")) { //@TODO //Action message //DO: Auth, Topic, Ban, Rename ... } else if (receiver.Equals("")) { //broadcast to all this.mainW.AddTextRow(sender + " broadcast a message"); foreach (KeyValuePair <string, TcpClient> item in this.userList) { this.sendToTcpClient(cm, item.Value); } } else { //private message - forward this.mainW.AddTextRow("Private: " + sender + "->" + receiver); if (this.userList.ContainsKey(receiver)) { this.sendToClient(userObj, receiver); } else { cm = new ChatMessage(receiver, sender, "Admin: User is offline!"); this.sendToTcpClient(cm, tcpClient); } } } else { //error; break; } } catch { //a socket error has occured this.mainW.AddTextRow("Socket error for: " + userTreadName); userList.Remove(userTreadName); break; } // Console.WriteLine("To: " + tcpClient.Client.LocalEndPoint); // Console.WriteLine("From: " + tcpClient.Client.RemoteEndPoint); } // tcpClient.Close(); }