private void applyNewChallengeFiltering(ChallengeViewFilter viewfilter, CompletedBehaviour completedBehaviour) { if (!isInitialized) { return; } if (backupList == null) { backupList = new List<ChallengeView>(); } Application.Current.Dispatcher.Invoke( () => { //restore original list if (backupList.Count > 0 && ChallengeViews.Count < backupList.Count) { challengeViews.Clear(); foreach (var item in backupList) { challengeViews.Add(item); } } //fill backup list with all items backupList.Clear(); foreach (var item in challengeViews) { backupList.Add(item); } var visibleViews = viewfilter.calculateVisibleViews(backupList); //remove non matching items challengeViews.Clear(); foreach (var item in backupList) { if (completedBehaviour == CompletedBehaviour.HIDE && item.IsDone) { continue; } if (visibleViews.Contains(item.Id)) { challengeViews.Add(item); } } if (completedBehaviour == CompletedBehaviour.SORT_TO_END) { doAutoSort(); } }); }
public void changeCompletedBehaviour(CompletedBehaviour newBehaviour) { completedBehaviour = newBehaviour; var challengeFilter = new RegexFilter(filterText); applyNewChallengeFiltering(challengeFilter, newBehaviour); if (newBehaviour == CompletedBehaviour.SORT_TO_END) { doAutoSort(); } }