From f61a459fa2396a368838e61e1cb5fad180466619 Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Mon, 11 Jan 2016 17:28:59 -0800 Subject: [PATCH] Made the file library provider search match the cloud search and work in subdirectories correctly. --- Library/Provider/LibraryProviderFileSystem.cs | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Library/Provider/LibraryProviderFileSystem.cs b/Library/Provider/LibraryProviderFileSystem.cs index 93663a2e7..7259c2e5c 100644 --- a/Library/Provider/LibraryProviderFileSystem.cs +++ b/Library/Provider/LibraryProviderFileSystem.cs @@ -379,7 +379,7 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider if (ApplicationSettings.LibraryFilterFileExtensions.Contains(Path.GetExtension(filename).ToLower())) { if (upperFilter.Trim() == string.Empty - || Path.GetFileNameWithoutExtension(filename.ToUpper()).Contains(upperFilter)) + || FileNameContainsFilter(filename, upperFilter)) { newReadDirectoryFiles.Add(filename); } @@ -390,13 +390,13 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider foreach (string directory in newReadDirectoryDirectories) { string subDirectory = Path.Combine(rootPath, directory); - string[] subDirectoryFiles = Directory.GetFiles(Path.Combine(rootPath, currentDirectory)); + string[] subDirectoryFiles = Directory.GetFiles(subDirectory); foreach (string filename in subDirectoryFiles) { if (ApplicationSettings.LibraryFilterFileExtensions.Contains(Path.GetExtension(filename).ToLower())) { if (keywordFilter.Trim() == string.Empty - || Path.GetFileNameWithoutExtension(filename.ToUpper()).Contains(upperFilter)) + || FileNameContainsFilter(filename, upperFilter) ) { newReadDirectoryFiles.Add(filename); } @@ -424,6 +424,20 @@ namespace MatterHackers.MatterControl.PrintLibrary.Provider OnDataReloaded(null); } + private bool FileNameContainsFilter(string filename, string upperFilter) + { + string[] mustContains = upperFilter.Split(' '); + foreach (string check in mustContains) + { + if(!Path.GetFileNameWithoutExtension(filename.ToUpper().Replace('_', ' ')).Contains(check)) + { + return false; + } + } + + return true; + } + private string GetPathFromLocator(List providerLocator) { string pathWithDot = Path.Combine(rootPath, providerLocator[providerLocator.Count - 1].Key);