private void NotificationsClient_Notification(object sender, OnNotificationArgs e) { ListViewItem itemDateTime = new ListViewItem { Tag = e, ImageKey = e.Type.GetAttribute <ImageKeyAttribute>().ImageKey, UseItemStyleForSubItems = true, BackColor = (e.ContainsUrls) ? Color.FromArgb(179, 209, 255) : Color.FromArgb(140, 255, 102), Text = e.DateTime.Humanize(false), }; ListViewItem.ListViewSubItem itemFrom = new ListViewItem.ListViewSubItem { Text = e.From }; itemDateTime.SubItems.Add(itemFrom); ListViewItem.ListViewSubItem itemMessage = new ListViewItem.ListViewSubItem { Text = e.Message }; itemDateTime.SubItems.Add(itemMessage); Invoke(new Action(() => { MessagesListView.BeginUpdate(); if (MessagesListView.Items.Count >= SettingsManager.Configuration.Notifications.MaximumNotifications) { MessagesListView.Items.RemoveAt(MessagesListView.Items.Count - 1);; } MessagesListView.Items.Insert(0, itemDateTime); MessagesListView.EndUpdate(); })); }
private void UpdateMessagesTimer_Tick(object sender, EventArgs e) { MessagesListView.BeginUpdate(); foreach (ListViewItem item in MessagesListView.Items) { UpdateMessage(item); } MessagesListView.EndUpdate(); }
private void NotificationsClient_ChangingChannel(object sender, OnChangingChannel e) => Invoke(new Action(() => { try { if (e.State == ChangingChannelState.Started) { TwitchChannelLabel.Text = string.Empty; ChangingChannelLabel.Text = $"Connecting to {e.JoiningName}..."; ChangingChannelLabel.Visible = true; } else if (e.State == ChangingChannelState.Finished) { TwitchChannelLabel.Text = e.JoiningName; MessagesListView.BeginUpdate(); MessagesListView.Items.Clear(); MessagesListView.EndUpdate(); ChangingChannelLabel.Visible = false; } Application.DoEvents(); } catch (Exception ex) { LoggingManager.Log.Error(ex); } }));