2020-06-09 10:12:49 +00:00
|
|
|
|
using System;
|
2020-05-24 22:14:21 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
|
2021-01-26 09:31:55 +00:00
|
|
|
|
namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink
|
2020-05-24 22:14:21 +00:00
|
|
|
|
{
|
2021-01-26 09:31:55 +00:00
|
|
|
|
public class QuickAccess
|
2020-05-24 22:14:21 +00:00
|
|
|
|
{
|
2021-01-25 08:18:13 +00:00
|
|
|
|
private readonly ResultManager resultManager;
|
2021-01-25 03:06:03 +00:00
|
|
|
|
|
2021-01-26 09:31:55 +00:00
|
|
|
|
public QuickAccess(PluginInitContext context)
|
2021-01-25 03:06:03 +00:00
|
|
|
|
{
|
2021-01-25 08:18:13 +00:00
|
|
|
|
resultManager = new ResultManager(context);
|
2021-01-25 03:06:03 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2021-01-26 09:31:55 +00:00
|
|
|
|
internal List<Result> FolderListMatched(Query query, List<AccessLink> folderLinks)
|
2020-05-24 22:14:21 +00:00
|
|
|
|
{
|
2020-06-09 10:12:49 +00:00
|
|
|
|
if (string.IsNullOrEmpty(query.Search))
|
2020-08-25 11:24:53 +00:00
|
|
|
|
return new List<Result>();
|
2020-06-09 10:12:49 +00:00
|
|
|
|
|
2020-05-24 22:14:21 +00:00
|
|
|
|
string search = query.Search.ToLower();
|
2021-01-25 03:06:03 +00:00
|
|
|
|
|
|
|
|
|
|
var queriedFolderLinks =
|
|
|
|
|
|
folderLinks.Where(x => x.Nickname.StartsWith(search, StringComparison.OrdinalIgnoreCase));
|
2020-06-09 10:12:49 +00:00
|
|
|
|
|
2021-01-26 09:01:12 +00:00
|
|
|
|
return queriedFolderLinks
|
|
|
|
|
|
.Where(x => x.Type == ResultType.Folder)
|
|
|
|
|
|
.Select(item =>
|
2021-01-25 08:18:13 +00:00
|
|
|
|
resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query))
|
2021-01-26 09:01:12 +00:00
|
|
|
|
.OrderBy(x => x.Title)
|
|
|
|
|
|
.Concat(
|
|
|
|
|
|
queriedFolderLinks
|
|
|
|
|
|
.Where(x => x.Type == ResultType.File)
|
|
|
|
|
|
.Select(item =>
|
|
|
|
|
|
resultManager.CreateFileResult(item.Path, query))
|
|
|
|
|
|
.OrderBy(x => x.Title))
|
2021-01-25 03:06:03 +00:00
|
|
|
|
.ToList();
|
2020-05-24 22:14:21 +00:00
|
|
|
|
}
|
2020-08-25 11:24:53 +00:00
|
|
|
|
|
2021-01-26 09:31:55 +00:00
|
|
|
|
internal List<Result> FolderListAll(Query query, List<AccessLink> folderLinks)
|
2020-08-25 11:24:53 +00:00
|
|
|
|
=> folderLinks
|
2021-01-26 09:01:12 +00:00
|
|
|
|
.Where(x => x.Type == ResultType.Folder)
|
|
|
|
|
|
.Select(item =>
|
|
|
|
|
|
resultManager.CreateFolderResult(item.Nickname, item.Path, item.Path, query))
|
|
|
|
|
|
.OrderBy(x => x.Title)
|
|
|
|
|
|
.Concat(
|
|
|
|
|
|
folderLinks
|
|
|
|
|
|
.Where(x => x.Type == ResultType.File)
|
|
|
|
|
|
.Select(item =>
|
|
|
|
|
|
resultManager.CreateFileResult(item.Path, query))
|
|
|
|
|
|
.OrderBy(x => x.Title))
|
2020-08-25 11:24:53 +00:00
|
|
|
|
.ToList();
|
2020-05-24 22:14:21 +00:00
|
|
|
|
}
|
2021-01-25 07:57:58 +00:00
|
|
|
|
}
|