/// <summary> /// Abre una ventana de chat /// </summary> private void OpenChatWindow(JabberConnection connection, JabberContact contact, string message) { if (XmppClient.ChatsOpen.Add(connection, contact)) { BauMessengerViewModel.Instance.ViewsController.OpenChatView(new Chat.ChatViewModel(connection, contact, message)); } }
/// <summary> /// Graba los datos de la cuenta /// </summary> protected override void Save() { if (ValidateData()) { bool isNew = Contact == null; bool added = false; // Asigna los datos de la cuenta Contact = new JabberContact(Connection.Host.Address, Jid, null, NickName); // Crea el contacto try { // Añade el contacto Connection.AddContact(Jid, NickName); // Indica que se ha añadido added = true; } catch (Exception exception) { BauMessengerViewModel.Instance.ControllerWindow.ShowMessage ($"Error al añadir el contacto a la cuenta.{Environment.NewLine}{exception.Message}"); } // Cierra el formulario if (added) { // Indica que no ha habido modificaciones IsUpdated = false; SaveCommand.OnCanExecuteChanged(); // Cierra el formulario RaiseEventClose(true); } } }
/// <summary> /// Trata el mensaje recibido /// </summary> private void TreatMessageReceived(JabberContact contact, string message) { if (contact.EqualsTo(Contact)) { ShowMessage(contact, message); } }
/// <summary> /// Elimina un chat de la colección /// </summary> internal void Remove(JabberConnection connection, JabberContact contact) { int index = IndexOf(connection, contact); if (index >= 0) { Chats.RemoveAt(index); } }
/// <summary> /// Muestra el estado /// </summary> private void ShowStatus(JabberContact contact, JabberContactStatus.Availability status, string message) { // Añade la cabecera ShowHeader(contact); // Añade el mensaje _rtfBuilder.SetColor(RtfTextBuilder.RtfColor.Olive); _rtfBuilder.AddText($"ha cambiado su estado a {status.ToString()} - {message}"); // Muestra el Rtf ShowRtf(); }
/// <summary> /// Muestra la cabecera con la hora /// </summary> private void ShowHeader(JabberContact contact) { // Añade un párrafo _rtfBuilder.AddParagraph(); // Añade la hora _rtfBuilder.SetColor(); _rtfBuilder.AddText(string.Format("[{0:HH:mm}]", DateTime.Now), true); // Añade el contacto _rtfBuilder.SetColor(GetColorHeader(contact)); _rtfBuilder.AddText(contact.FullJid + ":"); }
/// <summary> /// Obtiene el color para la cabecera de un contacto (su nombre) /// </summary> private RtfTextBuilder.RtfColor GetColorHeader(JabberContact contact) { if (contact.EqualsTo(Connection.User)) { return(RtfTextBuilder.RtfColor.Blue); } else { return(RtfTextBuilder.RtfColor.Red); } }
/// <summary> /// Obtiene el color para el mensaje de un contacto /// </summary> private RtfTextBuilder.RtfColor GetColorMessage(JabberContact contact) { if (contact.EqualsTo(Connection.User)) { return(RtfTextBuilder.RtfColor.Gray); } else { return(RtfTextBuilder.RtfColor.Black); } }
/// <summary> /// Muestra el mensaje /// </summary> private void ShowMessage(JabberContact contact, string message) { // Añade la cabecera ShowHeader(contact); // Añade el cuerpo del mensaje _rtfBuilder.AddNewLine(); _rtfBuilder.AddTab(); _rtfBuilder.SetColor(GetColorMessage(contact)); _rtfBuilder.AddText(message); // Muestra el Rtf ShowRtf(); }
public ContactViewModel(JabberConnection connection, JabberContact contact) { // Guarda las propiedades Connection = connection; Contact = contact; // Asigna las propiedades del contacto if (contact != null) { Jid = contact.Jid; NickName = contact.Name; } }
void presenceHandlerMethod(PresenceStanza presence) { //Console.WriteLine("Presence from " + presence.From); JabberContact contact = Roster[presence.From]; if (contact != null) { contact.UpdatePresence(presence); } else { //Console.WriteLine("Unknown contact " + presence.From); } }
/// <summary> /// Añade una conexión /// </summary> internal bool Add(JabberConnection connection, JabberContact contact) { bool added = false; // Añade el chat si no existía if (!Exists(connection, contact)) { // Añade el chat Chats.Add(GetKey(connection, contact)); // Indica que se ha añadido added = true; } // Devuelve el valor que indica si se ha añadido return(added); }
/// <summary> /// Obtiene el índice de una conexión /// </summary> internal int IndexOf(JabberConnection connection, JabberContact contact) { string key = GetKey(connection, contact); // Busca el índice for (int index = 0; index < Chats.Count; index++) { if (Chats[index].EqualsIgnoreCase(key)) { return(index); } } // Si ha llegado hasta aquí es porque no ha encontrado nada return(-1); }
public ChatViewModel(JabberConnection connection, JabberContact contact, string message) : base(false) { // Inicializa las propiedades Connection = connection; Contact = contact; // Inicializa los comandos SendMessageCommand = new BaseCommand("Enviar mensaje", parameter => ExecuteAction(nameof(SendMessageCommand), parameter), parameter => CanExecuteAction(nameof(SendMessageCommand), parameter)) .AddListener(this, nameof(MessageToSend)); // Inicializa la variable que actúa como manager de XMPP en el árbol XmppClient = BauMessengerViewModel.Instance.BauMessenger; // Añade los manejadores de eventos XmppClient.ManagerJabber.MessageReceived += (sender, evntArgs) => TreatMessageReceived(evntArgs.Contact, evntArgs.Body); XmppClient.ManagerJabber.ChangedStatus += (sender, evntArgs) => TreatChangedStatus(evntArgs); XmppClient.ManagerJabber.ChangedUserStatus += (sender, evntArgs) => SetUserStatus(evntArgs.Connection, evntArgs.User.Status.Status, evntArgs.User.Status.Message); // Añade el mensaje inicial if (!message.IsEmpty()) { ShowMessage(Contact, message); } }
/// <summary> /// Obtiene la clave del chat /// </summary> private string GetKey(JabberConnection connection, JabberContact contact) { return($"{connection.Host.Address}_{connection.User.Jid}_{contact.Jid}"); }
public ContactNodeViewModel(GroupNodeViewModel parent, JabberContact contact) : base(contact.FullJid, contact.FullName, contact, parent, false) { Contact = contact; Availability = contact.Status.Status; SetImage(); }
/// <summary> /// Comprueba si existe una conexión /// </summary> internal bool Exists(JabberConnection connection, JabberContact contact) { return(IndexOf(connection, contact) >= 0); }