/// <summary> /// Updates the display of a feed detail if anything has changed. /// </summary> /// <param name="feed"></param> /// <param name="feedDetail"></param> /// <param name="forceRefresh"></param> private void UpdateFeedDisplay(FeedStatus feed, FeedDetail feedDetail, bool forceRefresh) { var item = feedDetail.ListViewItem; if (forceRefresh || feed.Name != feedDetail.Name) { item.SubItems[0].Text = feed.Name; feedDetail.Name = feed.Name; } if (forceRefresh || feed.ConnectionStatus != feedDetail.ConnectionStatus) { item.SubItems[1].Text = feed.ConnectionStatusDescription; feedDetail.ConnectionStatus = feed.ConnectionStatus; } if (forceRefresh || feed.TotalMessages != feedDetail.TotalMessages) { item.SubItems[2].Text = feed.TotalMessages.ToString("N0"); feedDetail.TotalMessages = feed.TotalMessages; } if (forceRefresh || feed.TotalBadMessages != feedDetail.TotalBadMessages) { item.SubItems[3].Text = feed.TotalBadMessages.ToString("N0"); feedDetail.TotalBadMessages = feed.TotalBadMessages; } if (forceRefresh || feed.HasAircraftList != feedDetail.HasAircraftList || feed.TotalAircraft != feedDetail.AircraftCount) { item.SubItems[4].Text = feed.HasAircraftList ? feed.TotalAircraft.ToString("N0") : Strings.NotApplicableAbbr; feedDetail.AircraftCount = feed.TotalAircraft; } }
/// <summary> /// Updates all existing feeds in the list or adds new ones, removing existing ones from <paramref name="feedDetails"/>. /// </summary> /// <param name="feeds"></param> /// <param name="feedDetails"></param> private void AddOrUpdateExistingFeeds(FeedStatus[] feeds, List <FeedDetail> feedDetails) { foreach (var feed in feeds) { var feedDetail = feedDetails.FirstOrDefault(r => r.UniqueId == feed.FeedId); if (feedDetail != null) { feedDetail.HasPolarPlotter = feed.HasPolarPlot; feedDetail.HasAircraftList = feed.HasAircraftList; feedDetails.Remove(feedDetail); UpdateFeedDisplay(feed, feedDetail, forceRefresh: false); } else { feedDetail = new FeedDetail() { UniqueId = feed.FeedId, IsMergedFeed = feed.IsMergedFeed, HasPolarPlotter = feed.HasPolarPlot, HasAircraftList = feed.HasAircraftList, ListViewItem = new ListViewItem(new string[] { "", "", "", "", "" }), }; feedDetail.ListViewItem.Tag = feedDetail; UpdateFeedDisplay(feed, feedDetail, forceRefresh: true); listView.Items.Add(feedDetail.ListViewItem); } } }