/// <summary> /// Updates the search parameter. /// </summary> /// <param name="node">The node.</param> /// <remarks>Documented by Dev08, 2009-03-05</remarks> private void UpdateSearchAndRefreshList() { if (lmIndex == null) return; SearchParameter param = new SearchParameter(textBoxSearchBox.Text); param.SelectedConnectionString = GetSelectedConnectionString(); param.UncPath = GetSelectedSubPathFromUNC(); param.ShowLearningModulesOfSubFolder = learningModulesTreeViewControl.ShowLearningModulesOfSubFolder; param.AreAllConnectionSelected = selectedTreeViewNode == null ? false : selectedTreeViewNode.IsMainNode; RefreshListView(param, false); ResetStatisticsAndPreview(); }
private List<IIndexEntry> FilterList(List<IIndexEntry> items, SearchParameter searchParameter) { List<IIndexEntry> textFilteredItems = new List<IIndexEntry>(); if (searchParameter.FilterWords.Trim() == string.Empty) textFilteredItems.AddRange(items); else { string[] filterWords = searchParameter.FilterWords.ToLower().Split(' '); foreach (IIndexEntry entry in items) { if (entry is FolderIndexEntry) { textFilteredItems.Add(entry); continue; } bool wordLocatedInEntry = true; foreach (string word in filterWords) { if (word == string.Empty) continue; if (!(entry as LearningModulesIndexEntry).Contains(word)) { wordLocatedInEntry = false; break; } } if (wordLocatedInEntry) textFilteredItems.Add(entry); } } return textFilteredItems; }
private void RefreshListView(SearchParameter searchParameter, bool preserveSelection) { List<ListViewItem> oldSelection = new List<ListViewItem>(); foreach (ListViewItem item in listViewLearningModules.SelectedItems) oldSelection.Add(item); List<ListViewItem> oldFeedSelection = new List<ListViewItem>(); foreach (ListViewItem item in listViewFeed.SelectedItems) oldFeedSelection.Add(item); if (filterThread != null && filterThread.ThreadState == System.Threading.ThreadState.Running) filterThread.Abort(); filterThread = new Thread(new ThreadStart((MethodInvoker)delegate { if (this.ParentForm.Visible) { try { List<IIndexEntry> items = FilterList(actualItems, searchParameter); if (listViewLearningModules.InvokeRequired) listViewLearningModules.Invoke((MethodInvoker)delegate { LoadLearningModulesList(items, false); }); else LoadLearningModulesList(items, false); if (preserveSelection) listViewLearningModules.Invoke((MethodInvoker)delegate { oldSelection.ForEach(i => i.Selected = true); }); } catch (ThreadAbortException tae) { Trace.WriteLine(tae.Message); } catch (Exception ex) { Trace.WriteLine(ex.Message); } try { List<ListViewItem> items = FilterFeedList(actualModules, searchParameter); if (listViewFeed.InvokeRequired) listViewFeed.Invoke((MethodInvoker)delegate { LoadFeedList(items, false); }); else LoadFeedList(items, false); if (preserveSelection) listViewFeed.Invoke((MethodInvoker)delegate { oldFeedSelection.ForEach(i => i.Selected = true); }); } catch (ThreadAbortException tae) { Trace.WriteLine(tae.Message); } catch (Exception ex) { Trace.WriteLine(ex.Message); } } })); filterThread.Name = "LMPage Filter Thread"; filterThread.CurrentCulture = Thread.CurrentThread.CurrentCulture; filterThread.CurrentUICulture = Thread.CurrentThread.CurrentUICulture; filterThread.IsBackground = true; filterThread.Start(); }
private List<ListViewItem> FilterFeedList(List<ListViewItem> items, SearchParameter searchParameter) { List<ListViewItem> textFilteredItems = new List<ListViewItem>(); List<ListViewItem> textFilteredItemsCategoryResults = new List<ListViewItem>(); if (searchParameter.FilterWords.Trim() == string.Empty) textFilteredItems.AddRange(items); else { string[] filterWords = searchParameter.FilterWords.ToLower().Split(' '); foreach (ListViewItem entry in items) { bool wordLocatedInEntry = true; bool wordLocatedInCategory = true; foreach (string word in filterWords) { if (word == string.Empty) continue; if (!(entry.SubItems[0].Text.ToLower().Contains(word) || entry.SubItems[1].Text.ToLower().Contains(word) || entry.SubItems[2].Text.ToLower().Contains(word) || entry.SubItems[3].Text.ToLower().Contains(word) || entry.SubItems[4].Text.ToLower().Contains(word))) { wordLocatedInEntry = false; } if (!(entry.SubItems[2].Text.ToLower().Contains(word) || ((ModuleInfo)entry.Tag).Categories.Exists(c => FindInParentCategories(Convert.ToInt32(c), word)))) wordLocatedInCategory = false; } if (wordLocatedInEntry && !wordLocatedInCategory) textFilteredItems.Add(entry); else if (wordLocatedInCategory) textFilteredItemsCategoryResults.Add(entry); } } foreach (ListViewItem item in textFilteredItems) textFilteredItemsCategoryResults.Add(item); return textFilteredItemsCategoryResults; }