/// <summary> /// Elimina a un usuario de la red del arbol de usuarios /// </summary> /// <param name="netUser">El usuario que salido de la red</param> public void removeUserHandler(NetUser netUser) { if (treeView.InvokeRequired) { NetUserCallback d = new NetUserCallback(removeUserHandler); this.Invoke(d, new object[] { netUser }); } else { int index = -1; foreach (TreeNode node in treeView.Nodes) { NetUser tagNetUser = (NetUser)node.Tag; if (tagNetUser.Id == netUser.Id) { index = node.Index; break; } } if (index != -1) { treeView.Nodes.RemoveAt(index); } } }
/// <summary> /// Agrega a un usuario de la red al árbol de usuarios /// </summary> /// <param name="netUser">El nuevo usuario que ha ingresado a la red</param> public void addUserHandler(NetUser netUser) { if (treeView.InvokeRequired) { NetUserCallback d = new NetUserCallback(addUserHandler); this.Invoke(d, new object[] { netUser }); } else { TreeNode newNode = new TreeNode(netUser.ToString()); newNode.Tag = netUser; newNode.ImageIndex = netUser.SignalQuality; newNode.SelectedImageIndex = netUser.SignalQuality; int index = -1; foreach (TreeNode node in treeView.Nodes) { NetUser tagNetUSer = (NetUser)node.Tag; if (tagNetUSer.Id == netUser.Id) { index = node.Index; break; } } if (index == -1) { treeView.Nodes.Add(newNode); } else { refreshUserHandler(netUser); } } }
/// <summary> /// Actualiza los datos de un usuario en el Árbol de usuarios /// </summary> /// <param name="netUser">El usuario que ha actualizado sus datos o estado</param> public void refreshUserHandler(NetUser netUser) { if (treeView.InvokeRequired) { NetUserCallback d = new NetUserCallback(refreshUserHandler); this.Invoke(d, new object[] { netUser }); } else { foreach (TreeNode node in treeView.Nodes) { NetUser tagNetUSer = (NetUser)node.Tag; if (tagNetUSer.Id == netUser.Id) { if (!node.Text.Equals(netUser.ToString())) { node.Text = netUser.ToString(); } if (!node.Tag.Equals(netUser)) { node.Tag = netUser; } if (!node.ImageIndex.Equals(tagNetUSer.SignalQuality)) { node.ImageIndex = tagNetUSer.SignalQuality; node.SelectedImageIndex = tagNetUSer.SignalQuality; } break; } } } }
/// <summary> /// Agrega a un usuario al grafo de la red /// </summary> /// <param name="netUser">El usuario de la red</param> public void addUserHandler(NetUser netUser) { if (viewer.InvokeRequired) { NetUserCallback d = new NetUserCallback(addUserHandler); this.Invoke(d, new object[] { netUser }); } else { NetUserNode netUserNode = new NetUserNode(); netUserNode.Id = netUser.Id; netUserNode.Name = netUser.Name; netUserNode.State = netUser.State; netUserNode.Quality = netUser.SignalQuality; for (int j = 0; j < netUser.NeighborhoodIds.Length; j++) { int index = netUsersNodes.IndexOf(new NetUserNode(netUser.NeighborhoodIds[j])); if (index != -1) { netUserNode.Links.Add(netUsersNodes[index]); } } netUsersNodes.Add(netUserNode); } }
/// <summary> /// Actualiza los datos del usuario local en el grafo de la red /// </summary> /// <param name="netUser">El usario local</param> public void refreshLocalUserHandler(NetUser netUser) { if (viewer.InvokeRequired) { NetUserCallback d = new NetUserCallback(refreshLocalUserHandler); this.Invoke(d, new object[] { netUser }); } else { TreeNode newNode = new TreeNode(netUser.ToString()); newNode.Tag = netUser; newNode.ImageIndex = 0; newNode.SelectedImageIndex = 0; int index = netUsersNodes.IndexOf(new NetUserNode(netUser.Id)); if (index == -1) { addUserHandler(netUser); } else { refreshUserHandler(netUser); } } }
/// <summary> /// Agrega un mensaje de texto a la ventana grupal /// </summary> /// <param name="netUser">El usuario autor del mensaje</param> /// <param name="message">El mensaje de texto</param> public void groupChatMessageReceived(NetUser netUser, String message) { if (textBoxText.InvokeRequired) { NetUserCallback d = new NetUserCallback(groupChatMessageReceived); this.Invoke(d, new object[] { netUser, message }); } else { textBoxText.AppendText("[" + (netUser != null ? netUser.Name : "unknown") + "] say: " + message + Environment.NewLine); } }
/// <summary> /// Agrega un archivo para descarga a la cola /// </summary> /// <param name="netUser">El usuario de la red dueño del archivo</param> /// <param name="fileHandlerId">El id de la transferencia</param> /// <param name="fileName">El nombre del archivo</param> public void downloadFileQueued(NetUser netUser, String fileHandlerId, String fileName) { if (dataGridView.InvokeRequired) { NetUserCallback d = new NetUserCallback(downloadFileQueued); this.Invoke(d, new object[] { netUser, fileHandlerId, fileName }); } else { DataGridViewRow dataGridViewRow = new DataGridViewRow(); dataGridView.Rows.Add(new Object[] { netUser.Name, fileName, 0, FileControlState.QUEUED, FileControlStateType.DOWNLOAD, fileHandlerId }); } }
/// <summary> /// Agrega a un usuario de la red al árbol de usuarios /// </summary> /// <param name="netUser">El nuevo usuario que ha ingresado a la red</param> public void addUserHandler(NetUser netUser) { if (treeView.InvokeRequired) { NetUserCallback d = new NetUserCallback(addUserHandler); this.Invoke(d, new object[] { netUser }); } else { TreeNode newNode = new TreeNode(netUser.ToString()); newNode.Tag = netUser; newNode.ImageIndex = netUser.SignalQuality; newNode.SelectedImageIndex = netUser.SignalQuality; treeView.Nodes.Add(newNode); } }
/// <summary> /// Elimina a un usuario del grafo de la red /// </summary> /// <param name="netUser">El usuario de la red</param> public void removeUserHandler(NetUser netUser) { if (viewer.InvokeRequired) { NetUserCallback d = new NetUserCallback(removeUserHandler); this.Invoke(d, new object[] { netUser }); } else { int index = netUsersNodes.IndexOf(new NetUserNode(netUser.Id)); if (index != -1) { netUsersNodes.RemoveAt(index); } } }
/// <summary> /// Ingresa o actualiza los datos del usuario local en el Árbol de usuarios /// </summary> /// <param name="netUser">El usario local</param> public void refreshLocalUserHandler(NetUser netUser) { if (treeView.InvokeRequired) { NetUserCallback d = new NetUserCallback(refreshLocalUserHandler); this.Invoke(d, new object[] { netUser }); } else { TreeNode newNode = new TreeNode(netUser.ToString()); newNode.Tag = netUser; newNode.ImageIndex = 0; newNode.SelectedImageIndex = 0; int index = -1; foreach (TreeNode node in treeView.Nodes) { NetUser tagNetUSer = (NetUser)node.Tag; if (tagNetUSer.Id == netUser.Id) { index = node.Index; break; } } if (index == -1) { treeView.Nodes.Add(newNode); } else { TreeNode node = treeView.Nodes[index]; NetUser tagNetUSer = (NetUser)node.Tag; if (!node.Text.Equals(netUser.ToString())) { node.Text = netUser.ToString(); } if (!node.Tag.Equals(netUser)) { node.Tag = netUser; } } } }
/// <summary> /// Encola a un archivo para transferencia (upload) /// </summary> /// <param name="netUser">El usuario de la red al cual se le debe transferir el archivo</param> /// <param name="fileHandlerId">El id de la transferencia</param> /// <param name="fileName">El nombre del archivo</param> public void uploadFileQueued(NetUser netUser, String fileHandlerId, String fileName) { if (treeView.InvokeRequired) { NetUserCallback d = new NetUserCallback(uploadFileQueued); this.Invoke(d, new object[] { netUser, fileHandlerId, fileName }); } else { FileItem fileItem = new FileItem(); fileItem.NetUserName = netUser.Name; fileItem.FileName = fileName; fileItem.Percent = 0; fileItem.State = FileControlState.QUEUED; fileItem.Type = FileControlStateType.UPLOAD; fileItem.FileHandlerId = fileHandlerId; fileList.Add(fileItem); refreshList(fileItem); } }
/// <summary> /// Elimina la lista de archivos de un usuario de la red de la ventana /// </summary> /// <param name="netUser">El usuario de la red</param> public void removeFileList(NetUser netUser) { if (treeView.InvokeRequired) { NetUserCallback d = new NetUserCallback(removeFileList); this.Invoke(d, new object[] { netUser }); } else { lock (thisLock) { for (int i = treeView.Nodes.Count - 1; i >= 0; i--) { TreeNode node = treeView.Nodes[i]; NetUserFile netUserFile = (NetUserFile)node.Tag; if (netUserFile.NetUser.Name.Equals(netUser.Name)) { treeView.Nodes.RemoveAt(i); } } } } }
/// <summary> /// Encola a un archivo para transferencia (upload) /// </summary> /// <param name="netUser">El usuario de la red al cual se le debe transferir el archivo</param> /// <param name="fileHandlerId">El id de la transferencia</param> /// <param name="fileName">El nombre del archivo</param> public void uploadFileQueued(NetUser netUser, String fileHandlerId, String fileName) { if (dataGridView.InvokeRequired) { NetUserCallback d = new NetUserCallback(uploadFileQueued); this.Invoke(d, new object[] { netUser, fileHandlerId, fileName }); } else { DataGridViewRow dataGridViewRow = new DataGridViewRow(); dataGridView.Rows.Add(new Object[] { netUser.Name, fileName, 0, FileControlState.QUEUED, FileControlStateType.UPLOAD, fileHandlerId }); } }