private void ReorderOutgoingOffers() { var buffer = OutgoingOffers.ToList() .OrderByDescending(o => o.Time); OutgoingOffers.Clear(); foreach (var o in buffer) { OutgoingOffers.Add(o); } }
private void AppService_OnNewOffer(Core.Models.Offer offer) { log.Trace("New offer event"); var config = Config; if (config.OnlyShowOffersOfCurrentLeague && config.CurrentLeague != offer.League) { return; } if (!offer.IsOutgoing) { AudioService.Instance.PlayNotif1(); } App.Current.Dispatcher.Invoke(delegate { if (!offer.IsOutgoing) { if (Offers.Count >= 8) { OverflowOffers.Enqueue(new Offer(offer)); } else { Offers.Add(new Offer(offer)); } } else { if (OutgoingOffers.Count >= 8) { var buffer = OutgoingOffers.ToList(); OverflowOutgoingOffers.Enqueue(buffer.Last()); buffer.RemoveAt(buffer.Count - 1); OutgoingOffers.Clear(); buffer.ForEach(o => OutgoingOffers.Add(o)); OutgoingOffers.Add(new Offer(offer)); ReorderOutgoingOffers(); } else { OutgoingOffers.Add(new Offer(offer)); ReorderOutgoingOffers(); } } OnPropertyChanged("IsOffersFilterVisible"); OnPropertyChanged("IsOutgoingOffersFilterVisible"); }); }
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); } } }