public void FilterOffers(string searchText, bool applyToOutgoing = true) { log.Trace($"Filtering {(applyToOutgoing ? "Outgoing" : "Incoming")} offers with {searchText}"); searchText = searchText.ToLower().Trim(); ResetFilter(applyToOutgoing); if (applyToOutgoing) { var results = OutgoingOffers.ToList().FindAll(e => e.ItemName.ToLower().IndexOf(searchText) != -1 || e.PlayerName.ToLower().IndexOf(searchText) != -1); if (_outgoingOffers == null) { _outgoingOffers = new Offer[OutgoingOffers.Count]; } OutgoingOffers.CopyTo(_outgoingOffers, 0); OutgoingOffers.Clear(); foreach (var r in results) { OutgoingOffers.Add(r); } } else { var results = Offers.ToList().FindAll(e => e.ItemName.ToLower().IndexOf(searchText) != -1 || e.PlayerName.ToLower().IndexOf(searchText) != -1); if (_offers == null) { _offers = new Offer[Offers.Count]; } Offers.CopyTo(_offers, 0); Offers.Clear(); foreach (var r in results) { Offers.Add(r); } } }
private void UpdateOffers() { log.Trace("Updating offers"); Offer[] buffer = new Offer[Offers.Count]; Offers.CopyTo(buffer, 0); Offers.Clear(); foreach (var o in buffer) { Offers.Add(o); } Offer[] buffer2 = new Offer[OutgoingOffers.Count]; OutgoingOffers.CopyTo(buffer2, 0); OutgoingOffers.Clear(); foreach (var o in buffer2) { OutgoingOffers.Add(o); } OnPropertyChanged("IsOffersFilterVisible"); OnPropertyChanged("IsOutgoingOffersFilterVisible"); }