private void button2_Click(object sender, RoutedEventArgs e) { CancelAction = false; ConditionalSelectParameters.FileNameFilterTypes fnf = (ConditionalSelectParameters.FileNameFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.FileNameFilterTypes), ((ConditionalSelectComboBoxItem)namefilter.SelectedItem).IdentifyingName); ConditionalSelectParameters.FileSizeFilterTypes fsf = (ConditionalSelectParameters.FileSizeFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.FileSizeFilterTypes), ((ConditionalSelectComboBoxItem)sizefilter.SelectedItem).IdentifyingName); FriendlySizeConverter.FileSizeMeasurements sd1 = (FriendlySizeConverter.FileSizeMeasurements)Enum.Parse(typeof(FriendlySizeConverter.FileSizeMeasurements), ((ConditionalSelectComboBoxItem)sizebox1.SelectedItem).IdentifyingName); FriendlySizeConverter.FileSizeMeasurements sd2 = (FriendlySizeConverter.FileSizeMeasurements)Enum.Parse(typeof(FriendlySizeConverter.FileSizeMeasurements), ((ConditionalSelectComboBoxItem)sizebox2.SelectedItem).IdentifyingName); ConditionalSelectParameters.DateFilterTypes dcf = (ConditionalSelectParameters.DateFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.DateFilterTypes), ((ConditionalSelectComboBoxItem)dcfilter.SelectedItem).IdentifyingName); ConditionalSelectParameters.DateFilterTypes dmf = (ConditionalSelectParameters.DateFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.DateFilterTypes), ((ConditionalSelectComboBoxItem)dmfilter.SelectedItem).IdentifyingName); ConditionalSelectParameters.DateFilterTypes daf = (ConditionalSelectParameters.DateFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.DateFilterTypes), ((ConditionalSelectComboBoxItem)dafilter.SelectedItem).IdentifyingName); csd = new ConditionalSelectData( new ConditionalSelectParameters.FileNameParameters(namequery.Text, fnf, namecase.IsChecked.Value), new ConditionalSelectParameters.FileSizeParameters(FriendlySizeConverter.GetByteLength( Convert.ToDouble(sizequery1.Text.Replace(",", ci.NumberFormat.NumberDecimalSeparator).Replace( ".", ci.NumberFormat.NumberDecimalSeparator)), sd1), FriendlySizeConverter.GetByteLength(Convert.ToDouble(sizequery2.Text.Replace( ",", ci.NumberFormat.NumberDecimalSeparator).Replace( ".", ci.NumberFormat.NumberDecimalSeparator)), sd2), fsf), new ConditionalSelectParameters.DateParameters(dcquery.SelectedDate.Value.Date, dcf), new ConditionalSelectParameters.DateParameters(dmquery.SelectedDate.Value.Date, dmf), new ConditionalSelectParameters.DateParameters(daquery.SelectedDate.Value.Date, daf), namecheck.IsChecked.Value, sizecheck.IsChecked.Value, dccheck.IsChecked.Value, dmcheck.IsChecked.Value, dacheck.IsChecked.Value); this.Close(); }
private void ConditionallySelectFiles(ConditionalSelectData csd) { if (csd == null) { return; } ShellObjectCollection shells = Explorer.Items; ShellObjectCollection l1shells = new ShellObjectCollection(); ShellObjectCollection l2shells = new ShellObjectCollection(); ShellObjectCollection l3shells = new ShellObjectCollection(); ShellObjectCollection l4shells = new ShellObjectCollection(); ShellObjectCollection l5shells = new ShellObjectCollection(); Explorer.DeSelectAllItems(); if (csd.FilterByFileName == true) { foreach (ShellObject item in shells) { if (Directory.Exists(item.ParsingName) == false) { FileInfo data = new FileInfo(item.ParsingName); if (csd.FileNameData.matchCase == true) { switch (csd.FileNameData.filter) { case ConditionalSelectParameters.FileNameFilterTypes.Contains: if (data.Name.Contains(csd.FileNameData.query) == true) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.StartsWith: if (data.Name.StartsWith(csd.FileNameData.query) == true) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.EndsWith: if (data.Name.EndsWith(csd.FileNameData.query) == true) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.Equals: if (data.Name == csd.FileNameData.query) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.DoesNotContain: if (data.Name.Contains(csd.FileNameData.query) == false) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.NotEqualTo: if (data.Name != csd.FileNameData.query) l1shells.Add(item); break; default: break; } } else { switch (csd.FileNameData.filter) { case ConditionalSelectParameters.FileNameFilterTypes.Contains: if (data.Name.ToLower().Contains(csd.FileNameData.query.ToLower()) == true) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.StartsWith: if (data.Name.ToLower().StartsWith(csd.FileNameData.query.ToLower()) == true) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.EndsWith: if (data.Name.ToLower().EndsWith(csd.FileNameData.query.ToLower()) == true) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.Equals: if (data.Name.ToLower() == csd.FileNameData.query.ToLower()) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.DoesNotContain: if (data.Name.ToLower().Contains(csd.FileNameData.query.ToLower()) == false) l1shells.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.NotEqualTo: if (data.Name.ToLower() != csd.FileNameData.query.ToLower()) l1shells.Add(item); break; default: break; } } } } } else { foreach (ShellObject item in shells) { if (Directory.Exists(item.ParsingName) == false) { l1shells.Add(item); } } } if (csd.FilterByFileSize == true) { foreach (ShellObject item in l1shells) { FileInfo data = new FileInfo(item.ParsingName); switch (csd.FileSizeData.filter) { case ConditionalSelectParameters.FileSizeFilterTypes.LargerThan: if (data.Length > csd.FileSizeData.query1) l2shells.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.SmallerThan: if (data.Length < csd.FileSizeData.query1) l2shells.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.Equals: if (data.Length == csd.FileSizeData.query1) l2shells.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.Between: long smallbound; long largebound; if (csd.FileSizeData.query2 > csd.FileSizeData.query1) { smallbound = csd.FileSizeData.query1; largebound = csd.FileSizeData.query2; } else { if (csd.FileSizeData.query2 < csd.FileSizeData.query1) { smallbound = csd.FileSizeData.query2; largebound = csd.FileSizeData.query1; } else { // they are the same, use Equal code //MessageBox.Show("Could not continue Conditional Select operation. When searching for files that is between a certain size, make sure the upper and lower bounds of the search parameters are not the same.", "BetterExplorer Conditional Select - Filter by File Size", MessageBoxButton.OK, MessageBoxImage.Error); //return; if (data.Length == csd.FileSizeData.query1) l2shells.Add(item); break; } } if (data.Length > smallbound) if (data.Length < largebound) l2shells.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.NotEqualTo: if (data.Length != csd.FileSizeData.query1) l2shells.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.NotBetween: long smallbound2; long largebound2; if (csd.FileSizeData.query2 > csd.FileSizeData.query1) { smallbound2 = csd.FileSizeData.query1; largebound2 = csd.FileSizeData.query2; } else { if (csd.FileSizeData.query2 < csd.FileSizeData.query1) { smallbound2 = csd.FileSizeData.query2; largebound2 = csd.FileSizeData.query1; } else { // they are the same, use Unequal code if (data.Length != csd.FileSizeData.query1) l2shells.Add(item); break; //MessageBox.Show("Could not continue Conditional Select operation. When searching for files that is not between a certain size, make sure the upper and lower bounds of the search parameters are not the same.", "BetterExplorer Conditional Select - Filter by File Size", MessageBoxButton.OK, MessageBoxImage.Error); //return; } } if (data.Length < smallbound2 || data.Length > largebound2) l2shells.Add(item); break; default: break; } } } else { foreach (ShellObject item in l1shells) { l2shells.Add(item); } } if (csd.FilterByDateCreated == true) { foreach (ShellObject item in FilterByCreateDate(l2shells, csd.DateCreatedData.queryDate, csd.DateCreatedData.filter)) { l3shells.Add(item); } } else { foreach (ShellObject item in l2shells) { l3shells.Add(item); } } if (csd.FilterByDateModified == true) { foreach (ShellObject item in FilterByWriteDate(l3shells, csd.DateModifiedData.queryDate, csd.DateModifiedData.filter)) { l4shells.Add(item); } } else { foreach (ShellObject item in l2shells) { l4shells.Add(item); } } if (csd.FilterByDateAccessed == true) { foreach (ShellObject item in FilterByAccessDate(l4shells, csd.DateAccessedData.queryDate, csd.DateAccessedData.filter)) { l5shells.Add(item); } } else { foreach (ShellObject item in l4shells) { l5shells.Add(item); } } List<ShellObject> sel = new List<ShellObject>(); foreach (ShellObject item in l5shells) { // this is where the code should be to select multiple files. // // However, the Explorer control does not support selecting multiple files. Explorer.SelectItem(item); } Explorer.Focus(); }
private void ConditionallySelectFiles(ConditionalSelectData csd, ShellView ShellListView) { if (csd == null) { return; } //The following items are added var Matches_Name = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var Matches_Size = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var Matches_DateCreated = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var Matches_DateLastModified = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var Matches_LastAccessed = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); ShellListView.DeSelectAllItems(); if (csd.FilterByFileName) { foreach (var item in ShellListView.Items) { var data = new FileInfo(item.ParsingName); string ToFind = csd.FileNameData.matchCase ? data.Name : data.Name.ToLowerInvariant(); switch (csd.FileNameData.filter) { case ConditionalSelectParameters.FileNameFilterTypes.Contains: if (ToFind.Contains(csd.FileNameData.matchCase ? csd.FileNameData.query : csd.FileNameData.query.ToLowerInvariant())) { Matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.StartsWith: if (ToFind.StartsWith(csd.FileNameData.query)) { Matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.EndsWith: if (ToFind.EndsWith(csd.FileNameData.query)) { Matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.Equals: if (ToFind == csd.FileNameData.query) { Matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.DoesNotContain: if (!ToFind.Contains(csd.FileNameData.query)) { Matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.NotEqualTo: if (ToFind != csd.FileNameData.query) { Matches_Name.Add(item); } break; default: break; } } } else { //Matches_Name.AddRange(shells.Where((x) => !Directory.Exists(x.ParsingName))); } if (csd.FilterByFileSize) { foreach (var item in Matches_Name) { FileInfo data = new FileInfo(item.ParsingName); switch (csd.FileSizeData.filter) { case ConditionalSelectParameters.FileSizeFilterTypes.LargerThan: if (data.Length > csd.FileSizeData.query1) { Matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.SmallerThan: if (data.Length < csd.FileSizeData.query1) { Matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.Equals: if (data.Length == csd.FileSizeData.query1) { Matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.Between: long largebound, smallbound; if (csd.FileSizeData.query2 > csd.FileSizeData.query1) { smallbound = csd.FileSizeData.query1; largebound = csd.FileSizeData.query2; } else if (csd.FileSizeData.query2 < csd.FileSizeData.query1) { smallbound = csd.FileSizeData.query2; largebound = csd.FileSizeData.query1; } else { if (data.Length == csd.FileSizeData.query1) { Matches_Size.Add(item); } break; } if (data.Length > smallbound && data.Length < largebound) { Matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.NotEqualTo: if (data.Length != csd.FileSizeData.query1) { Matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.NotBetween: long largebound2, smallbound2; if (csd.FileSizeData.query2 > csd.FileSizeData.query1) { smallbound2 = csd.FileSizeData.query1; largebound2 = csd.FileSizeData.query2; } else if (csd.FileSizeData.query2 < csd.FileSizeData.query1) { smallbound2 = csd.FileSizeData.query2; largebound2 = csd.FileSizeData.query1; } else { // they are the same, use Unequal code if (data.Length != csd.FileSizeData.query1) { Matches_Size.Add(item); } break; } if (data.Length < smallbound2 || data.Length > largebound2) { Matches_Size.Add(item); } break; default: break; } } } else { Matches_Size.AddRange(Matches_Name); } if (csd.FilterByDateCreated) { Func <FileInfo, DateTime> GetCreateDate = (x) => x.CreationTimeUtc; foreach (var item in !csd.FilterByDateCreated ? Matches_Size : DateFilter(Matches_Size, csd.DateCreatedData, GetCreateDate)) { Matches_DateCreated.Add(item); } } if (csd.FilterByDateModified) { Func <FileInfo, DateTime> GetDateModified = (x) => x.LastWriteTimeUtc; foreach (var item in !csd.FilterByDateModified ? Matches_Size : DateFilter(Matches_DateCreated, csd.DateModifiedData, GetDateModified)) { Matches_DateLastModified.Add(item); } } if (csd.FilterByDateAccessed) { Func <FileInfo, DateTime> GetDateAccessed = (x) => x.LastAccessTimeUtc; foreach (var item in !csd.FilterByDateAccessed ? Matches_DateLastModified : DateFilter(Matches_DateLastModified, csd.DateAccessedData, GetDateAccessed)) { Matches_LastAccessed.Add(item); } } //ShellListView.SelectItems(Matches_LastAccessed.ToArray()); //TODO: Inline these!!! /* * ShellListView.SelectedItems.Clear(); * ShellListView.SelectedItems.AddRange(Matches_Name); * ShellListView.SelectedItems.AddRange(Matches_Size); * ShellListView.SelectedItems.AddRange(Matches_DateCreated); * ShellListView.SelectedItems.AddRange(Matches_DateLastModified); * ShellListView.SelectedItems.AddRange(Matches_LastAccessed); */ /* * var Indexes = new List<int>(); * Indexes.AddRange(Matches_Name.Select(x => x.ItemIndex)); * Indexes.AddRange(Matches_Size.Select(x => x.ItemIndex)); * Indexes.AddRange(Matches_DateCreated.Select(x => x.ItemIndex)); * Indexes.AddRange(Matches_DateLastModified.Select(x => x.ItemIndex)); * Indexes.AddRange(Matches_LastAccessed.Select(x => x.ItemIndex)); * * foreach (var item in Indexes) { * ShellListView.SelectItemByIndex(item); * } */ var SelectedItems = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); SelectedItems.AddRange(Matches_Name); SelectedItems.AddRange(Matches_Size); SelectedItems.AddRange(Matches_DateCreated); SelectedItems.AddRange(Matches_DateLastModified); SelectedItems.AddRange(Matches_LastAccessed); ShellListView.SelectItems(SelectedItems.ToArray()); ShellListView.Focus(); }
private void button2_Click(object sender, RoutedEventArgs e) { CancelAction = false; ConditionalSelectParameters.FileNameFilterTypes fnf = (ConditionalSelectParameters.FileNameFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.FileNameFilterTypes), ((ConditionalSelectComboBoxItem)namefilter.SelectedItem).IdentifyingName); ConditionalSelectParameters.FileSizeFilterTypes fsf = (ConditionalSelectParameters.FileSizeFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.FileSizeFilterTypes), ((ConditionalSelectComboBoxItem)sizefilter.SelectedItem).IdentifyingName); FriendlySizeConverter.FileSizeMeasurements sd1 = (FriendlySizeConverter.FileSizeMeasurements)Enum.Parse(typeof(FriendlySizeConverter.FileSizeMeasurements), ((ConditionalSelectComboBoxItem)sizebox1.SelectedItem).IdentifyingName); FriendlySizeConverter.FileSizeMeasurements sd2 = (FriendlySizeConverter.FileSizeMeasurements)Enum.Parse(typeof(FriendlySizeConverter.FileSizeMeasurements), ((ConditionalSelectComboBoxItem)sizebox2.SelectedItem).IdentifyingName); ConditionalSelectParameters.DateFilterTypes dcf = (ConditionalSelectParameters.DateFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.DateFilterTypes), ((ConditionalSelectComboBoxItem)dcfilter.SelectedItem).IdentifyingName); ConditionalSelectParameters.DateFilterTypes dmf = (ConditionalSelectParameters.DateFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.DateFilterTypes), ((ConditionalSelectComboBoxItem)dmfilter.SelectedItem).IdentifyingName); ConditionalSelectParameters.DateFilterTypes daf = (ConditionalSelectParameters.DateFilterTypes)Enum.Parse(typeof(ConditionalSelectParameters.DateFilterTypes), ((ConditionalSelectComboBoxItem)dafilter.SelectedItem).IdentifyingName); csd = new ConditionalSelectData( new ConditionalSelectParameters.FileNameParameters(namequery.Text, fnf, namecase.IsChecked.Value), new ConditionalSelectParameters.FileSizeParameters(FriendlySizeConverter.GetByteLength( Convert.ToDouble(sizequery1.Text.Replace(",",ci.NumberFormat.NumberDecimalSeparator).Replace( ".",ci.NumberFormat.NumberDecimalSeparator)), sd1), FriendlySizeConverter.GetByteLength(Convert.ToDouble(sizequery2.Text.Replace( ",", ci.NumberFormat.NumberDecimalSeparator).Replace( ".", ci.NumberFormat.NumberDecimalSeparator)), sd2), fsf), new ConditionalSelectParameters.DateParameters(dcquery.SelectedDate.Value.Date, dcf), new ConditionalSelectParameters.DateParameters(dmquery.SelectedDate.Value.Date, dmf), new ConditionalSelectParameters.DateParameters(daquery.SelectedDate.Value.Date, daf), namecheck.IsChecked.Value, sizecheck.IsChecked.Value, dccheck.IsChecked.Value, dmcheck.IsChecked.Value, dacheck.IsChecked.Value); this.Close(); }
private void ConditionallySelectFiles(ConditionalSelectData csd, ShellView ShellListView) { if (csd == null) return; //The following items are added var Matches_Name = new List<BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var Matches_Size = new List<BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var Matches_DateCreated = new List<BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var Matches_DateLastModified = new List<BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var Matches_LastAccessed = new List<BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); ShellListView.DeSelectAllItems(); if (csd.FilterByFileName) { foreach (var item in ShellListView.Items) { var data = new FileInfo(item.ParsingName); string ToFind = csd.FileNameData.matchCase ? data.Name : data.Name.ToLowerInvariant(); switch (csd.FileNameData.filter) { case ConditionalSelectParameters.FileNameFilterTypes.Contains: if (ToFind.Contains(csd.FileNameData.matchCase ? csd.FileNameData.query : csd.FileNameData.query.ToLowerInvariant())) Matches_Name.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.StartsWith: if (ToFind.StartsWith(csd.FileNameData.query)) Matches_Name.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.EndsWith: if (ToFind.EndsWith(csd.FileNameData.query)) Matches_Name.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.Equals: if (ToFind == csd.FileNameData.query) Matches_Name.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.DoesNotContain: if (!ToFind.Contains(csd.FileNameData.query)) Matches_Name.Add(item); break; case ConditionalSelectParameters.FileNameFilterTypes.NotEqualTo: if (ToFind != csd.FileNameData.query) Matches_Name.Add(item); break; default: break; } } } else { //Matches_Name.AddRange(shells.Where((x) => !Directory.Exists(x.ParsingName))); } if (csd.FilterByFileSize) { foreach (var item in Matches_Name) { var data = new FileInfo(item.ParsingName); switch (csd.FileSizeData.filter) { case ConditionalSelectParameters.FileSizeFilterTypes.LargerThan: if (data.Length > csd.FileSizeData.query1) Matches_Size.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.SmallerThan: if (data.Length < csd.FileSizeData.query1) Matches_Size.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.Equals: if (data.Length == csd.FileSizeData.query1) Matches_Size.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.Between: long largebound, smallbound; if (csd.FileSizeData.query2 > csd.FileSizeData.query1) { smallbound = csd.FileSizeData.query1; largebound = csd.FileSizeData.query2; } else if (csd.FileSizeData.query2 < csd.FileSizeData.query1) { smallbound = csd.FileSizeData.query2; largebound = csd.FileSizeData.query1; } else { if (data.Length == csd.FileSizeData.query1) Matches_Size.Add(item); break; } if (data.Length > smallbound && data.Length < largebound) Matches_Size.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.NotEqualTo: if (data.Length != csd.FileSizeData.query1) Matches_Size.Add(item); break; case ConditionalSelectParameters.FileSizeFilterTypes.NotBetween: long largebound2, smallbound2; if (csd.FileSizeData.query2 > csd.FileSizeData.query1) { smallbound2 = csd.FileSizeData.query1; largebound2 = csd.FileSizeData.query2; } else if (csd.FileSizeData.query2 < csd.FileSizeData.query1) { smallbound2 = csd.FileSizeData.query2; largebound2 = csd.FileSizeData.query1; } else { // they are the same, use Unequal code if (data.Length != csd.FileSizeData.query1) Matches_Size.Add(item); break; } if (data.Length < smallbound2 || data.Length > largebound2) Matches_Size.Add(item); break; default: break; } } } else { Matches_Size.AddRange(Matches_Name); } if (csd.FilterByDateCreated) Matches_DateCreated.AddRange(!csd.FilterByDateCreated ? Matches_Size : DateFilter(Matches_Size, csd.DateCreatedData, x => x.CreationTimeUtc)); if (csd.FilterByDateModified) Matches_DateLastModified.AddRange(!csd.FilterByDateModified ? Matches_Size : DateFilter(Matches_DateCreated, csd.DateModifiedData, x => x.LastWriteTimeUtc)); if (csd.FilterByDateAccessed) Matches_LastAccessed.AddRange(!csd.FilterByDateAccessed ? Matches_DateLastModified : DateFilter(Matches_DateLastModified, csd.DateAccessedData, x => x.LastAccessTimeUtc)); ShellListView.SelectItems( Matches_Name. Union(Matches_Size). Union(Matches_Size). Union(Matches_DateCreated). Union(Matches_DateLastModified). Union(Matches_LastAccessed ).ToArray()); ShellListView.Focus(); }
private void ConditionallySelectFiles(ConditionalSelectData csdItem, ShellView shellListView) { if (csdItem == null) { return; } //The following items are added var matches_Name = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var matches_Size = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var matches_DateCreated = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var matches_DateLastModified = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); var matches_LastAccessed = new List <BExplorer.Shell._Plugin_Interfaces.IListItemEx>(); shellListView.DeSelectAllItems(); if (csdItem.FilterByFileName) { foreach (var item in shellListView.Items) { var data = new FileInfo(item.ParsingName); string ToFind = csdItem.FileNameData.matchCase ? data.Name : data.Name.ToLowerInvariant(); switch (csdItem.FileNameData.filter) { case ConditionalSelectParameters.FileNameFilterTypes.Contains: if (ToFind.Contains(csdItem.FileNameData.matchCase ? csdItem.FileNameData.query : csdItem.FileNameData.query.ToLowerInvariant())) { matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.StartsWith: if (ToFind.StartsWith(csdItem.FileNameData.query)) { matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.EndsWith: if (ToFind.EndsWith(csdItem.FileNameData.query)) { matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.Equals: if (ToFind == csdItem.FileNameData.query) { matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.DoesNotContain: if (!ToFind.Contains(csdItem.FileNameData.query)) { matches_Name.Add(item); } break; case ConditionalSelectParameters.FileNameFilterTypes.NotEqualTo: if (ToFind != csdItem.FileNameData.query) { matches_Name.Add(item); } break; default: break; } } } else { //Matches_Name.AddRange(shells.Where((x) => !Directory.Exists(x.ParsingName))); } if (csdItem.FilterByFileSize) { foreach (var item in shellListView.Items.Where(w => !w.IsFolder && w.IsFileSystem)) { var data = new FileInfo(item.ParsingName); switch (csdItem.FileSizeData.filter) { case ConditionalSelectParameters.FileSizeFilterTypes.LargerThan: if (data.Length > csdItem.FileSizeData.query1) { matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.SmallerThan: if (data.Length < csdItem.FileSizeData.query1) { matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.Equals: if (data.Length == csdItem.FileSizeData.query1) { matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.Between: long largebound, smallbound; if (csdItem.FileSizeData.query2 > csdItem.FileSizeData.query1) { smallbound = csdItem.FileSizeData.query1; largebound = csdItem.FileSizeData.query2; } else if (csdItem.FileSizeData.query2 < csdItem.FileSizeData.query1) { smallbound = csdItem.FileSizeData.query2; largebound = csdItem.FileSizeData.query1; } else { if (data.Length == csdItem.FileSizeData.query1) { matches_Size.Add(item); } break; } if (data.Length > smallbound && data.Length < largebound) { matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.NotEqualTo: if (data.Length != csdItem.FileSizeData.query1) { matches_Size.Add(item); } break; case ConditionalSelectParameters.FileSizeFilterTypes.NotBetween: long largebound2, smallbound2; if (csdItem.FileSizeData.query2 > csdItem.FileSizeData.query1) { smallbound2 = csdItem.FileSizeData.query1; largebound2 = csdItem.FileSizeData.query2; } else if (csdItem.FileSizeData.query2 < csdItem.FileSizeData.query1) { smallbound2 = csdItem.FileSizeData.query2; largebound2 = csdItem.FileSizeData.query1; } else { // they are the same, use Unequal code if (data.Length != csdItem.FileSizeData.query1) { matches_Size.Add(item); } break; } if (data.Length < smallbound2 || data.Length > largebound2) { matches_Size.Add(item); } break; default: break; } } } else { matches_Size.AddRange(matches_Name); } if (csdItem.FilterByDateCreated) { matches_DateCreated.AddRange(!csdItem.FilterByDateCreated ? matches_Size : this.DateFilter(shellListView.Items, csdItem.DateCreatedData, x => x.CreationTimeUtc)); } if (csdItem.FilterByDateModified) { matches_DateLastModified.AddRange(!csdItem.FilterByDateModified ? matches_Size : this.DateFilter(shellListView.Items, csdItem.DateModifiedData, x => x.LastWriteTimeUtc)); } if (csdItem.FilterByDateAccessed) { matches_LastAccessed.AddRange(!csdItem.FilterByDateAccessed ? matches_DateLastModified : this.DateFilter(shellListView.Items, csdItem.DateAccessedData, x => x.LastAccessTimeUtc)); } shellListView.SelectItems( matches_Name. Union(matches_Size). Union(matches_Size). Union(matches_DateCreated). Union(matches_DateLastModified). Union(matches_LastAccessed ).ToArray()); shellListView.Focus(false, true); }