Flow.Launcher/Plugins/Flow.Launcher.Plugin.Explorer/Search/QuickAccessLink/QuickAccess.cs

55 lines
1.9 KiB
C#
Raw Normal View History

using System;
2020-05-24 22:14:21 +00:00
using System.Collections.Generic;
using System.Linq;
namespace Flow.Launcher.Plugin.Explorer.Search.QuickAccessLink
2020-05-24 22:14:21 +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
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
}
internal List<Result> FolderListMatched(Query query, List<AccessLink> folderLinks)
2020-05-24 22:14:21 +00:00
{
if (string.IsNullOrEmpty(query.Search))
return new List<Result>();
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));
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
}
internal List<Result> FolderListAll(Query query, List<AccessLink> folderLinks)
=> 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))
.ToList();
2020-05-24 22:14:21 +00:00
}
2021-01-25 07:57:58 +00:00
}