private void AddConversation(IrcConversationViewModel conversation)
 {
     Locator.Get <IUIService>().Execute(() =>
     {
         if (!this.Conversations.Contains(conversation))
         {
             this.Conversations.Add(conversation);
         }
     });
 }
        private void ProcessMessage(Message message, IrcConversationViewModel conversation)
        {
            if (this.ShouldNotify(message, conversation))
            {
                string text = Locator.Get <ITranslationService>().Translate("Conversation", "HL", message.Sender.Nickname);
                Locator.Get <INotificationService>().Notify(text);

                if (!this.IsSelected)
                {
                    this.HasHighlightedUnreadMessages = true;
                }
            }

            if (!this.IsSelected && !message.IsInformationMessage)
            {
                this.HasUnreadMessages = true;
            }
        }
        private void RemoveConversation(IrcConversationViewModel conversation)
        {
            if (!conversation.CanBeClosed)
            {
                return;
            }

            Locator.Get <IUIService>().Execute(() =>
            {
                if (this.SelectedConversation == conversation)
                {
                    this.SelectedConversation = this.Conversations.TakeWhile(c => c != conversation)
                                                .Last(c => c.IsVisible);
                }

                this.Conversations.Remove(conversation);
                conversation.Dispose();
            });
        }
 private bool IsConversationVisible(IrcConversationViewModel conversation)
 {
     return(conversation.IsSelected &&
            this.IsSelected &&
            Locator.Get <IUIService>().IsAppToForeground());
 }
 private bool ShouldNotify(Message message, IrcConversationViewModel conversation)
 {
     return(message.Sender != null &&
            (message.IsImportantMessage || conversation is IrcUserViewModel) &&
            !IsConversationVisible(conversation));
 }