From df2be9b82836c46545bb8639b9ab97178a9d4038 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Tue, 16 Feb 2021 16:09:55 +0800 Subject: [PATCH] seperate user program sources and autoindex program source and distinct prior to user one --- .../Programs/Win32.cs | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs index a186b6613..773d0c6b6 100644 --- a/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs +++ b/Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs @@ -14,11 +14,12 @@ using Flow.Launcher.Plugin.SharedModels; using Flow.Launcher.Infrastructure.Logger; using System.Diagnostics; using Stopwatch = Flow.Launcher.Infrastructure.Stopwatch; +using System.Diagnostics.CodeAnalysis; namespace Flow.Launcher.Plugin.Program.Programs { [Serializable] - public class Win32 : IProgram + public class Win32 : IProgram, IEquatable { public string Name { get; set; } public string UniqueIdentifier { get; set; } @@ -503,26 +504,27 @@ namespace Flow.Launcher.Plugin.Program.Programs { var programs = Enumerable.Empty(); + var unregistered = UnregisteredPrograms(settings.ProgramSources, settings.ProgramSuffixes); + + programs = programs.Concat(unregistered); + + var autoIndexPrograms = Enumerable.Empty(); if (settings.EnableRegistrySource) { var appPaths = AppPathsPrograms(settings.ProgramSuffixes); - programs = programs.Concat(appPaths); + autoIndexPrograms = autoIndexPrograms.Concat(appPaths); } if (settings.EnableStartMenuSource) { var startMenu = StartMenuPrograms(settings.ProgramSuffixes); - programs = programs.Concat(startMenu); + autoIndexPrograms = autoIndexPrograms.Concat(startMenu); } - programs = ProgramsHasher(programs.Where(p => p != null)); + autoIndexPrograms = ProgramsHasher(autoIndexPrograms); - var unregistered = UnregisteredPrograms(settings.ProgramSources, settings.ProgramSuffixes); - - programs = programs.Concat(unregistered); - - return programs.ToArray(); + return programs.Concat(autoIndexPrograms).Distinct().ToArray(); } #if DEBUG //This is to make developer aware of any unhandled exception and add in handling. catch (Exception e) @@ -540,5 +542,18 @@ namespace Flow.Launcher.Plugin.Program.Programs } #endif } + + public override int GetHashCode() + { + return UniqueIdentifier.GetHashCode(); + } + + public bool Equals([AllowNull] Win32 other) + { + if (other == null) + return false; + + return UniqueIdentifier == other.UniqueIdentifier; + } } } \ No newline at end of file