Made search work on file system folders (download)

This commit is contained in:
Lars Brubaker 2015-08-25 13:04:14 -07:00
parent f2cce2fe5e
commit 959f85e144

View file

@ -141,7 +141,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
if (keywordFilter != value)
{
keywordFilter = value;
GetFilesAndCollectionsInCurrentDirectory();
GetFilesAndCollectionsInCurrentDirectory(keywordFilter.Trim() != "");
}
}
}
@ -315,45 +315,83 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider
});
}
private void GetFilesAndCollectionsInCurrentDirectory()
private async void GetFilesAndCollectionsInCurrentDirectory(bool recursive = false)
{
currentDirectoryDirectories.Clear();
try
List<string> newReadDirectoryDirectories = new List<string>();
List<string> newReadDirectoryFiles = new List<string>();
await Task.Run(() =>
{
string[] directories = Directory.GetDirectories(Path.Combine(rootPath, currentDirectory));
foreach (string directoryName in directories)
try
{
if (keywordFilter.Trim() == string.Empty
|| Path.GetFileNameWithoutExtension(directoryName).Contains(keywordFilter))
string[] directories = null;
if (recursive)
{
directories = Directory.GetDirectories(Path.Combine(rootPath, currentDirectory), "*.*", SearchOption.AllDirectories);
}
else
{
directories = Directory.GetDirectories(Path.Combine(rootPath, currentDirectory));
}
foreach (string directoryName in directories)
{
string subPath = directoryName.Substring(rootPath.Length + 1);
currentDirectoryDirectories.Add(subPath);
newReadDirectoryDirectories.Add(subPath);
}
}
}
catch (Exception)
{
}
currentDirectoryFiles.Clear();
try
{
string[] files = Directory.GetFiles(Path.Combine(rootPath, currentDirectory));
foreach (string filename in files)
catch (Exception)
{
if (ApplicationSettings.LibraryFilterFileExtensions.Contains(Path.GetExtension(filename).ToLower()))
}
try
{
string upperFilter = keywordFilter.ToUpper();
string[] files = Directory.GetFiles(Path.Combine(rootPath, currentDirectory));
foreach (string filename in files)
{
if (keywordFilter.Trim() == string.Empty
|| Path.GetFileNameWithoutExtension(filename).Contains(keywordFilter))
if (ApplicationSettings.LibraryFilterFileExtensions.Contains(Path.GetExtension(filename).ToLower()))
{
currentDirectoryFiles.Add(filename);
if (upperFilter.Trim() == string.Empty
|| Path.GetFileNameWithoutExtension(filename.ToUpper()).Contains(upperFilter))
{
newReadDirectoryFiles.Add(filename);
}
}
}
if (recursive)
{
foreach (string directory in newReadDirectoryDirectories)
{
string subDirectory = Path.Combine(rootPath, directory);
string[] subDirectoryFiles = Directory.GetFiles(Path.Combine(rootPath, currentDirectory));
foreach (string filename in subDirectoryFiles)
{
if (ApplicationSettings.LibraryFilterFileExtensions.Contains(Path.GetExtension(filename).ToLower()))
{
if (keywordFilter.Trim() == string.Empty
|| Path.GetFileNameWithoutExtension(filename.ToUpper()).Contains(upperFilter))
{
newReadDirectoryFiles.Add(filename);
}
}
}
}
}
}
}
catch (Exception)
catch (Exception)
{
}
});
if (recursive)
{
currentDirectoryDirectories.Clear();
}
else
{
currentDirectoryDirectories = newReadDirectoryDirectories;
}
currentDirectoryFiles = newReadDirectoryFiles;
OnDataReloaded(null);
}