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:48:06 +00:00
|
|
|
|
namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks
|
2020-05-24 22:14:21 +00:00
|
|
|
|
{
|
2021-01-29 10:40:51 +00:00
|
|
|
|
internal static class QuickAccess
|
2020-05-24 22:14:21 +00:00
|
|
|
|
{
|
2021-04-14 12:15:49 +00:00
|
|
|
|
private const int quickAccessResultScore = 100;
|
|
|
|
|
|
|
2021-01-29 10:40:51 +00:00
|
|
|
|
internal static List<Result> AccessLinkListMatched(Query query, List<AccessLink> accessLinks)
|
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
|
|
|
|
|
2021-01-26 10:29:56 +00:00
|
|
|
|
var queriedAccessLinks =
|
2021-01-26 19:17:24 +00:00
|
|
|
|
accessLinks
|
2021-04-14 12:11:40 +00:00
|
|
|
|
.Where(x => x.Name.Contains(search, StringComparison.OrdinalIgnoreCase))
|
2021-01-26 19:17:24 +00:00
|
|
|
|
.OrderBy(x => x.Type)
|
2021-04-14 12:11:40 +00:00
|
|
|
|
.ThenBy(x => x.Name);
|
2020-06-09 10:12:49 +00:00
|
|
|
|
|
2021-04-13 11:40:04 +00:00
|
|
|
|
return queriedAccessLinks.Select(l => l.Type switch
|
2021-01-27 08:23:59 +00:00
|
|
|
|
{
|
2021-04-14 12:15:49 +00:00
|
|
|
|
ResultType.Folder => ResultManager.CreateFolderResult(l.Name, l.Path, l.Path, query, quickAccessResultScore),
|
|
|
|
|
|
ResultType.File => ResultManager.CreateFileResult(l.Path, query, quickAccessResultScore),
|
2021-01-27 08:23:59 +00:00
|
|
|
|
_ => throw new ArgumentOutOfRangeException()
|
|
|
|
|
|
}).ToList();
|
2020-05-24 22:14:21 +00:00
|
|
|
|
}
|
2020-08-25 11:24:53 +00:00
|
|
|
|
|
2021-01-29 10:40:51 +00:00
|
|
|
|
internal static List<Result> AccessLinkListAll(Query query, List<AccessLink> accessLinks)
|
2021-01-26 10:29:56 +00:00
|
|
|
|
=> accessLinks
|
2021-01-26 19:17:24 +00:00
|
|
|
|
.OrderBy(x => x.Type)
|
2021-04-14 12:11:40 +00:00
|
|
|
|
.ThenBy(x => x.Name)
|
2021-01-27 08:23:59 +00:00
|
|
|
|
.Select(l => l.Type switch
|
|
|
|
|
|
{
|
2021-04-14 12:11:40 +00:00
|
|
|
|
ResultType.Folder => ResultManager.CreateFolderResult(l.Name, l.Path, l.Path, query),
|
2021-04-14 12:15:49 +00:00
|
|
|
|
ResultType.File => ResultManager.CreateFileResult(l.Path, query, quickAccessResultScore),
|
2021-01-27 08:23:59 +00:00
|
|
|
|
_ => throw new ArgumentOutOfRangeException()
|
|
|
|
|
|
}).ToList();
|
2020-05-24 22:14:21 +00:00
|
|
|
|
}
|
2021-01-25 07:57:58 +00:00
|
|
|
|
}
|