//Blink and add to notification list if messaged void ChatClient_OnMessage(object sender, jabber.protocol.client.Message msg) { //If is special message, don't show popup if (msg.Subject != null) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { ChatSubjects subject = (ChatSubjects)Enum.Parse(typeof(ChatSubjects), msg.Subject, true); if ((subject == ChatSubjects.PRACTICE_GAME_INVITE || subject == ChatSubjects.GAME_INVITE) && Client.NotificationContainer.Visibility != System.Windows.Visibility.Visible) { NotificationButton.Content = "."; } })); return; } if (Client.AllPlayers.ContainsKey(msg.From.User) && !String.IsNullOrWhiteSpace(msg.Body)) { ChatPlayerItem chatItem = Client.AllPlayers[msg.From.User]; Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { NotificationChatPlayer player = null; foreach (NotificationChatPlayer x in ChatListView.Items) { if (x.PlayerName == chatItem.Username) { player = x; break; } } if (player == null) { player = new NotificationChatPlayer(); player.Tag = chatItem; player.PlayerName = chatItem.Username; player.Margin = new Thickness(1, 0, 1, 0); player.PlayerLabelName.Content = chatItem.Username; Client.ChatListView.Items.Add(player); } if (Client.ChatItem != null) { if ((string)Client.ChatItem.PlayerLabelName.Content != chatItem.Username) { player.BlinkRectangle.Visibility = System.Windows.Visibility.Visible; } } else { player.BlinkRectangle.Visibility = System.Windows.Visibility.Visible; } })); } }
//Blink and add to notification list if messaged private void XmppConnection_OnMessage(object sender, Message msg) { //If is special message, don't show popup if (msg.Subject != null) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { var subject = (ChatSubjects)Enum.Parse(typeof(ChatSubjects), msg.Subject, true); if ((subject == ChatSubjects.PRACTICE_GAME_INVITE || subject == ChatSubjects.GAME_INVITE) && Client.NotificationContainer.Visibility != Visibility.Visible) { NotificationButton.Content = "."; } })); return; } if (!Client.AllPlayers.ContainsKey(msg.From.User) || string.IsNullOrWhiteSpace(msg.Body)) return; if (msg.Body.ToLower().Contains("elo") && msg.Body.ToLower().Contains("boost")) return; ChatPlayerItem chatItem = Client.AllPlayers[msg.From.User]; Dispatcher.BeginInvoke(DispatcherPriority.Input, new ThreadStart(() => { NotificationChatPlayer player = ChatListView.Items.Cast<object>() .Where(i => i.GetType() == typeof(NotificationChatPlayer)) .Cast<NotificationChatPlayer>() .FirstOrDefault(x => x.PlayerName == chatItem.Username); if (player == null) { player = new NotificationChatPlayer { Tag = chatItem, PlayerName = chatItem.Username, Margin = new Thickness(1, 0, 1, 0), PlayerLabelName = { Content = chatItem.Username } }; Client.ChatListView.Items.Add(player); } if (Client.ChatItem != null) { if ((string)Client.ChatItem.PlayerLabelName.Content != chatItem.Username) { player.BlinkRectangle.Visibility = Visibility.Visible; } } else player.BlinkRectangle.Visibility = Visibility.Visible; })); }
private void CloseButton_Click(object sender, RoutedEventArgs e) { NotificationChatPlayer tempPlayer = Client.ChatListView.Items.Cast <object>() .Where(i => i.GetType() == typeof(NotificationChatPlayer)) .Cast <NotificationChatPlayer>() .FirstOrDefault(x => x.PlayerLabelName.Content == Client.ChatItem.PlayerLabelName.Content); Client.MainGrid.Children.Remove(Client.ChatItem); Client.ChatClient.OnMessage -= Client.ChatItem.ChatClient_OnMessage; Client.ChatItem = null; if (tempPlayer != null) { Client.ChatListView.Items.Remove(tempPlayer); } }
private void CloseButton_Click(object sender, RoutedEventArgs e) { NotificationChatPlayer tempPlayer = null; foreach (NotificationChatPlayer x in Client.ChatListView.Items) { if (x.PlayerLabelName.Content == Client.ChatItem.PlayerLabelName.Content) { tempPlayer = x; break; } } Client.MainGrid.Children.Remove(Client.ChatItem); Client.ChatClient.OnMessage -= Client.ChatItem.ChatClient_OnMessage; Client.ChatItem = null; Client.ChatListView.Items.Remove(tempPlayer); }
private void ChatListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count > 0) { ChatPlayer player = (ChatPlayer)e.AddedItems[0]; ChatListView.SelectedIndex = -1; ChatPlayerItem playerItem = (ChatPlayerItem)player.Tag; LastPlayerItem = playerItem; foreach (NotificationChatPlayer x in Client.ChatListView.Items) { if ((string)x.PlayerLabelName.Content == playerItem.Username) return; } NotificationChatPlayer ChatPlayer = new NotificationChatPlayer(); ChatPlayer.Tag = playerItem; ChatPlayer.PlayerName = playerItem.Username; ChatPlayer.Margin = new Thickness(1, 0, 1, 0); ChatPlayer.PlayerLabelName.Content = playerItem.Username; Client.ChatListView.Items.Add(ChatPlayer); } }
private void PlayersListView_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (selection.AddedItems.Count <= 0) return; var player = (ChatPlayer)selection.AddedItems[0]; ((ListView)e.Source).SelectedIndex = -1; var playerItem = (ChatPlayerItem)player.Tag; List<NotificationChatPlayer> items = new List<NotificationChatPlayer>(); foreach (object x in Client.ChatListView.Items) { if (x.GetType() == typeof(NotificationChatPlayer)) items.Add((NotificationChatPlayer)x); } if (items.Any(x => (string)x.PlayerLabelName.Content == playerItem.Username)) return; var chatPlayer = new NotificationChatPlayer { Tag = playerItem, PlayerName = playerItem.Username, Margin = new Thickness(1, 0, 1, 0), PlayerLabelName = { Content = playerItem.Username } }; Client.ChatListView.Items.Add(chatPlayer); }