public SearchViewModel(Search search, SearchRepository repo, NotificationViewModel notif, ItemRepository itemRepo, LogsViewModel logs, Dispatcher dispatcher) { _search = search; URL = SearchURL; AutoStart = SearchAutoStart; Index = SearchIndex; _searchRepository = repo; _notifVM = notif; sList = new SearchEngine(itemRepo, _search, logs, dispatcher); _notifVM.RegisterSearchEvents(sList); }
public void UnregisterSearchEvents(SearchEngine sList) { sList.SearchStarted -= OnSearchStarted; sList.SearchFinished -= OnSearchFinished; sList.SearchStopped -= OnSearchStopped; }
void SearchStopped(SearchEngine sList) { lock ("ItemLists") { foreach (ItemPriceList list in sList.SearchItemL) { if (LocalList.ContainsKey(list.ItemName)) { List<ItemVend> ToRemove = new List<ItemVend>(); foreach (ItemVend item in list.ItemPriceL) { if (LocalList[list.ItemName].ItemPriceL.Contains(item)) { ToRemove.Add(item); } } foreach (ItemVend item in ToRemove) { LocalList[list.ItemName].ItemPriceL.Remove(item); } if (LocalList[list.ItemName].ItemPriceL.Count == 0) { LocalList.Remove(list.ItemName); } } } } sList.Dispose(); }
void SearchFinished(SearchEngine sList) { lock ("ItemLists") { foreach (ItemPriceList list in sList.SearchItemL) { if (LocalList.ContainsKey(list.ItemName)) { List<ItemVend> ToAdd = new List<ItemVend>(); foreach (ItemVend item in list.ItemPriceL) { if (!LocalList[list.ItemName].ItemPriceL.Contains(item)) { ToAdd.Add(item); } } foreach (ItemVend item in ToAdd) { LocalList[list.ItemName].ItemPriceL.Add(item); } } else { LocalList.Add(list.ItemName, list); } } } if (Text != OldText) { OldText = Text; Commit(); ShowWindow(); } }
void DispatchSearchStopped(SearchEngine sList) { Action del = () => SearchStopped(sList); _dispatcher.Invoke(del); }