/// <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);
                }
            }
        }
示例#3
0
 /// <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);
            }
        }
示例#5
0
 /// <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();
 }
示例#6
0
 /// <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 + ":");
 }
示例#7
0
 /// <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);
     }
 }
示例#8
0
 /// <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);
     }
 }
示例#9
0
 /// <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;
     }
 }
示例#11
0
        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);
        }
示例#14
0
 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);
 }