/// <summary> /// Elimina un contacto /// </summary> private void RemoveContact(JabberConnection objConnection, JabberContact objContact) { if (objConnection != null) { if (objContact != null) { if (Bau.Controls.Forms.Helper.ShowQuestion(ParentForm, $"¿Realmente desea eliminar al contacto {objContact.FullName}?")) objConnection.DeleteContact(objContact); } else if (Bau.Controls.Forms.Helper.ShowQuestion(ParentForm, $"¿Realmente desea eliminar la conexión {objConnection.Host.Address} - usuario {objConnection.User.Login}")) { // Desconecta la conexión objConnection.Disconnect(); // Elimina la conexión Manager.Connections.Remove(objConnection); // Actualiza el árbol LoadContacts(Manager); } } }
/// <summary> /// Comprueba si dos contactos son iguales /// </summary> public bool EqualsTo(JabberContact objUser) { return Host.EqualsIgnoreCase(objUser.Host) && Login.EqualsIgnoreCase(objUser.Login); }
/// <summary> /// Abre el formulario de modificación de contacto /// </summary> private void OpenFormUpdateContact(JabberContact objContact) { JabberConnection objConnection = GetSelectedConnection(); if (objConnection == null) Bau.Controls.Forms.Helper.ShowMessage(ParentForm, "Seleccione una conexión"); else { frmContact frmNewContact = new frmContact(); // Asigna las propiedades frmNewContact.Jid = objContact?.Jid; frmNewContact.ContactName = objContact?.Name; // Abre el formulario frmNewContact.ShowDialog(); // Si todo es correcto ... if (frmNewContact.DialogResult == DialogResult.OK) objConnection.AddContact(frmNewContact.Jid, frmNewContact.ContactName); } }
/// <summary> /// Log de datos de contacto /// </summary> private void LogContact(JabberContact objContact) { LogText($"[{DateTime.Now}] {objContact.FullName}:"); }
/// <summary> /// Inicializa el control /// </summary> public void InitControl(JabberConnection objConnection, JabberContact objContact) { Connection = objConnection; Contact = objContact; }
/// <summary> /// Prepara el formulario para enviar un mensaje de chat /// </summary> private UC.Chat PrepareChat(JabberConnection objConnection, JabberContact objContact) { UC.Chat udtChat = null; // Añade u obtiene el control de chat adecuado if (objConnection != null && objContact != null) { int intIndex = GetChatTabIndex(objConnection, objContact); if (intIndex >= 0) { // Selecciona el tab de chat tabChat.SelectedIndex = intIndex; // Obtiene el control foreach (Control ctlControl in tabChat.TabPages[intIndex].Controls) if (ctlControl is UC.Chat) udtChat = ctlControl as UC.Chat; } else { string strKey = GetChatKey(objConnection, objContact); // Crea un nuevo control de chat udtChat = new UC.Chat(); // Inicaliza el control udtChat.InitControl(objConnection, objContact); udtChat.CloseRequest += (objSender, objEventArgs) => { CloseChat(strKey); }; // Lo añade a la ficha tabChat.TabPages.Add(objContact.Login); tabChat.TabPages[tabChat.TabPages.Count - 1].Controls.Add(udtChat); tabChat.TabPages[tabChat.TabPages.Count - 1].Tag = strKey; tabChat.SelectedIndex = tabChat.TabPages.Count - 1; // y por último ocupa toda la ficha udtChat.Dock = DockStyle.Fill; } } // Devuelve el control return udtChat; }
/// <summary> /// Obtiene el índice de la ficha con el chat de un contacto /// </summary> private int GetChatTabIndex(JabberConnection objConnection, JabberContact objContact) { return GetChatTabIndex(GetChatKey(objConnection, objContact)); }
/// <summary> /// Obtiene la clave de una ficha de chat /// </summary> private string GetChatKey(JabberConnection objConnection, JabberContact objContact) { return $"{objConnection.Host.Address}_{objContact.FullJid}"; }