void CheckForFilterUpdate(object sender, RoutedEventArgs e) { ExtendedListBox list = sender as ExtendedListBox; if (list != null && ((DataTransfer.ShouldReloadFilters && DataTransfer.cFilter.Resource == list.Loader.Resource) || DataTransfer.IsGlobalFilter)) { FilterManager.SetupFilter(list); DataTransfer.ShouldReloadFilters = false; } }
private void ListBox_Loaded(object sender, RoutedEventArgs e) { ExtendedListBox list = sender as ExtendedListBox; if (list == null) { return; } var tag = list.Tag; ThreadPool.QueueUserWorkItem((threadcontext) => { TwitterResource Resource = new TwitterResource(); if (tag is TwitterResource) { Resource = (TwitterResource)tag; list.Resource = Resource; } Dispatcher.BeginInvoke(() => FilterManager.SetupFilter(list)); list.Loader.ActivateLoadMoreButton = true; list.Loader.TweetsToLoadPerRequest = (int)Config.TweetsPerRequest; list.Loader.LoadRetweetsAsMentions = (bool)Config.RetweetAsMentions; list.Loader.PropertyChanged += (sender1, e1) => { if (e1.PropertyName == "IsLoading") { if (list.Loader.IsLoading) { viewModel.LoadingCount++; } else { viewModel.LoadingCount--; } } }; viewModel.ScrollToTop += (sender1, e1) => { if (e1.BroadcastAll || e1.Resource == Resource) { list.ScrollToTop(); } }; viewModel.ReloadLists += (sender1, e1) => { if (e1.BroadcastAll || e1.Resource == Resource) { ThreadPool.QueueUserWorkItem((context) => list.AutoReload()); } }; viewModel.CheckIfCanResumePosition += (sender1, e1) => { if (e1.Resource == list.Loader.Resource && Config.ReloadOptions == ColumnReloadOptions.AskPosition) { list.TryTriggerResumeReading(); } }; list.ReadyToResumePosition += (sender1, e1) => { var selectedPivot = (TwitterResource)viewModel.SelectedPivot; if (list.Loader.Resource == selectedPivot) { Dispatcher.BeginInvoke(() => { long id; if (Config.ReadPositions.TryGetValue(selectedPivot.String, out id) && !list.VisibleItems.Any(x => x.Id == id)) { ShowResumePositionPrompt(list); } }); } }; list.Loader.LoadCacheAsync(); list.AutoReload(); Dispatcher.BeginInvoke(() => { list.Loaded -= ListBox_Loaded; list.Loaded += new RoutedEventHandler(CheckForFilterUpdate); }); GlobalEvents.FiltersChanged += (sender1, e1) => Dispatcher.BeginInvoke(() => FilterManager.SetupFilter(list)); }); }