private void Advertisements_MapChanged()

in BluetoothLEExplorer/BluetoothLEExplorer/ViewModels/AdvertisementMonitorPageViewModel.cs [226:262]


        private void Advertisements_MapChanged(Windows.Foundation.Collections.IObservableMap<string, ObservableBluetoothLEAdvertisement> sender, Windows.Foundation.Collections.IMapChangedEventArgs<string> @event)
        {
            lock (advertisementsLock)
            {
                if ((@event.CollectionChange == Windows.Foundation.Collections.CollectionChange.ItemInserted) ||
                    (@event.CollectionChange == Windows.Foundation.Collections.CollectionChange.ItemChanged))
                {
                    var advertisement = sender[@event.Key];

                    if (IsContentFilterMatch(Context.AdvertisementContentFilter, advertisement))
                    {
                        if (!AdvertisementsView.Contains(advertisement))
                        {
                            AdvertisementsView.Add(advertisement);
                        }
                        else
                        {
                            AdvertisementsView[AdvertisementsView.IndexOf(advertisement)].Update(advertisement);
                        }
                    }
                }
                else if (@event.CollectionChange == Windows.Foundation.Collections.CollectionChange.Reset)
                {
                    AdvertisementsView.Clear();
                }
                else if (@event.CollectionChange == Windows.Foundation.Collections.CollectionChange.ItemRemoved)
                {
                    foreach (var advertisement in AdvertisementsView)
                    {
                        if (advertisement.InternalHashString == @event.Key)
                        {
                            AdvertisementsView.Remove(advertisement);
                        }
                    }
                }
            }
        }