using Microsoft.UI.Dispatching; using Microsoft.UI.Xaml.Media; namespace FluidExplorer.Services.Icons; /// /// 图标/缩略图服务:全部来自 Windows 外壳(imageres.dll 等系统图标库、IShellItemImageFactory), /// 也就是资源管理器本身显示的那批原版图标,不做自制图标。 /// public interface IIconService { /// 系统小图标(16/32/48px 的多尺寸 HICON),用于列表与侧边栏。目录、驱动器、特殊文件夹同样走外壳。 Task GetIconAsync(string path, bool isDirectory, int size, CancellationToken cancellationToken); /// 大缩略图(SIIGBF_THUMBNAILONLY + 图标回退),用于网格/磁贴视图。失败返回 null。 Task GetThumbnailAsync(string path, int size, CancellationToken cancellationToken); /// 按扩展名取通用图标(同类型文件共用一个位图,命中率极高)。 Task GetExtensionIconAsync(string extension, int size, CancellationToken cancellationToken); /// 取某个已知外壳文件夹(如 "shell:RecycleBinFolder"、"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}")的图标。 ImageSource? GetSpecialFolderIcon(string parsingName, int size); void ClearCache(); } /// 图标服务需要在 UI 线程创建 ImageSource,构造时注入 DispatcherQueue。 public interface IIconServiceHost { DispatcherQueue DispatcherQueue { get; } }