/// <summary> /// Background task work method. /// Computes values and updates fields. /// </summary> private void DoComputeRadicalAvailability(object sender, DoWorkEventArgs e) { // Lock to allow only one of these operations at a time. lock (_updateLock) { // Apply filter and select the distinct radicals from the resulting kanji. RadicalEntity[] availableRadicals = _radicalBusiness.GetAvailableRadicals(_filter) .ToArray(); foreach (FilteringRadical radical in _radicals) { radical.IsRelevant = radical.Reference.DoesMatch(availableRadicals); } // Sort if wanted. if (_comparer.SortByRelevance) { DispatcherHelper.Invoke(() => { Radicals.Refresh(); }); } } }
public override bool IsEmpty() { return(string.IsNullOrWhiteSpace(MainFilter) && string.IsNullOrWhiteSpace(TextFilter) && JlptLevel > Levels.MaxJlptLevel && WkLevel < Levels.MinWkLevel && !Radicals.Any()); }
/// <summary> /// Called when the sort mode is changed. /// </summary> /// <param name="value">New sort mode value.</param> private void OnSetRadicalSortMode(RadicalSortModeEnum value) { if (RadicalSortMode != value) { RadicalSortMode = value; _comparer.SortMode = value; Kanji.Interface.Properties.Settings.Default.RadicalSortMode = value; DispatcherHelper.InvokeAsync(() => { Radicals.Refresh(); }); } }