private bool filter(Result result, ILockerList <StringMatchFilter> filters, IDictionary <StringMatchFilter, int> lastAcceptedFilters = null)
        {
            bool allow = false;

            lock (filters.Locker)
            {
                StringMatchFilter lastAcceptedFilter = null;
                foreach (var filter in filters)
                {
                    if (!filter.Enabled ||
                        allow == (filter.Permission == FilterPermission.Allow))
                    {
                        continue;
                    }

                    if (!filter.Negative == checkFunc(result, filter))
                    {
                        lastAcceptedFilter = filter;
                        allow = filter.Permission == FilterPermission.Allow;
                    }
                }
                if (lastAcceptedFilters != null && lastAcceptedFilter != null)
                {
                    int count = (lastAcceptedFilters.ContainsKey(lastAcceptedFilter)) ? lastAcceptedFilters[lastAcceptedFilter] : 0;
                    lastAcceptedFilters[lastAcceptedFilter] = count + 1;
                }
            }
            return(allow);
        }
        private void addCompaniesToFilter(ILockerList <Result> results)
        {
            lock (results.Locker)
            {
                var sb = new StringBuilder(checkTextBox2.Text);
                foreach (var result in results)
                {
                    if (!result.Selected)
                    {
                        continue;
                    }
                    if (sb.Length > 0)
                    {
                        sb.AppendLine();
                    }
                    sb.Append("+-").Append(result.Company);
                }
                checkTextBox2.Text = sb.ToString();

                var filters = new SortedList <StringMatchFilter>(false, false);
                filters.Add(new Filter(".*", false, "Name", FilterPermission.Allow, FilterSearchType.Regex));
                filters.AddCollection(getCompanyFilters(checkTextBox2));
                jobSearcher.Filters = filters;
                jobSearcher.ReFilter();
            }
        }
 public void DeleteSelected(ILockerList <Result> results)
 {
     lock (results.Locker)
     {
         for (int i = results.Count - 1; i >= 0; i--)
         {
             if (results[i].Selected)
             {
                 results.RemoveAt(i);
             }
         }
     }
 }
 public void ReFilter(ILockerList <Result> results)
 {
     lock (results.Locker)
     {
         for (int i = results.Count - 1; i >= 0; i--)
         {
             var result = results[i];
             if (!filter(result, Filters))
             {
                 results.Remove(result);
             }
         }
     }
 }
 public void OpenInBrowser(ILockerList <Result> results)
 {
     lock (results.Locker)
     {
         foreach (var result in results)
         {
             if (!result.Selected)
             {
                 continue;
             }
             System.Diagnostics.Process.Start(result.Url);
         }
     }
 }
 public void MoveResultsTo(ILockerList <Result> from, ILockerList <Result> to)
 {
     lock (from.Locker)
     {
         for (int i = from.Count - 1; i >= 0; i--)
         {
             var result = from[i];
             if (!result.Selected)
             {
                 continue;
             }
             from.Remove(result);
             result.Selected = false;
             to.Add(result);
         }
     }
 }