fix TopLevelDirectory search activation

This commit is contained in:
Jeremy Wu 2020-05-28 21:33:18 +10:00
parent c7642b73c0
commit 0c53d76fec
4 changed files with 36 additions and 12 deletions

View file

@ -185,5 +185,23 @@ namespace Flow.Launcher.Plugin.SharedCommands
return previousDirectoryPath;
}
///<summary>
/// Gets the previous level directory from a path string.
/// Does not check that previous level directory exists and returns
/// passed in string if is complete path
///</summary>
public static string GetPreviousLevelDirectoryIfPathIncomplete(string path)
{
if (!path.EndsWith("\\"))
{
// not full path, get previous level directory string
var indexOfSeparator = path.LastIndexOf('\\');
return path.Substring(0, indexOfSeparator + 1);
}
return path;
}
}
}

View file

@ -228,6 +228,19 @@ namespace Flow.Launcher.Test.Plugins
$"Actual path string is {previousDirectoryPath} {Environment.NewLine}");
}
[TestCase(@"C:\NonExistentFolder\SomeApp", @"C:\NonExistentFolder\")]
[TestCase(@"C:\NonExistentFolder\SomeApp\", @"C:\NonExistentFolder\SomeApp\")]
public void WhenGivenAPath_ThenShouldReturnThePreviousDirectoryPathIfIncompleteOrOriginalString(
string path, string expectedString)
{
var returnedPath = FilesFolders.GetPreviousLevelDirectoryIfPathIncomplete(path);
//Then
Assert.IsTrue(returnedPath == expectedString,
$"Expected path string: {expectedString} {Environment.NewLine} " +
$"Actual path string is {returnedPath} {Environment.NewLine}");
}
[TestCase("c:\\SomeFolder\\>", "scope='file:c:\\SomeFolder'")]
[TestCase("c:\\SomeFolder\\>SomeName", "(System.FileName LIKE 'SomeName%' " +
"OR CONTAINS(System.FileName,'\"SomeName*\"',1033)) AND " +

View file

@ -21,7 +21,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search.DirectoryInfo
{
var criteria = ConstructSearchCriteria(search);
if (search.IndexOfAny(Constants.SpecialSearchChars) >= 0)
if (search.LastIndexOf('>') > search.LastIndexOf('\\'))
return DirectorySearch(SearchOption.AllDirectories, query, search, criteria);
return DirectorySearch(SearchOption.TopDirectoryOnly, query, search, criteria);
@ -33,12 +33,11 @@ namespace Flow.Launcher.Plugin.Explorer.Search.DirectoryInfo
if (!search.EndsWith("\\"))
{
// not full path, get previous level directory string
var indexOfSeparator = search.LastIndexOf('\\');
incompleteName = search.Substring(indexOfSeparator + 1).ToLower();
if (incompleteName.StartsWith(">"))
if (incompleteName.StartsWith('>'))
incompleteName = "*" + incompleteName.Substring(1);
}
@ -51,15 +50,7 @@ namespace Flow.Launcher.Plugin.Explorer.Search.DirectoryInfo
{
var results = new List<Result>();
var path = search;
if (!search.EndsWith("\\"))
{
// not full path, get previous level directory string
var indexOfSeparator = search.LastIndexOf('\\');
path = search.Substring(0, indexOfSeparator + 1);
}
var path = FilesFolders.GetPreviousLevelDirectoryIfPathIncomplete(search);
var folderList = new List<Result>();
var fileList = new List<Result>();

View file

@ -108,6 +108,8 @@ namespace Flow.Launcher.Plugin.Explorer.Search
private bool WindowsIndexExists(string path)
{
path = FilesFolders.GetPreviousLevelDirectoryIfPathIncomplete(path);
return _indexSearch.PathIsIndexed(path);
}