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)); }