Skip to content

Commit 36f67b8

Browse files
refactor usage of getprotocols
1 parent a523584 commit 36f67b8

File tree

1 file changed

+24
-34
lines changed
  • Plugins/Flow.Launcher.Plugin.Program/Programs

1 file changed

+24
-34
lines changed

Plugins/Flow.Launcher.Plugin.Program/Programs/Win32.cs

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ private static Win32 LnkProgram(string path)
293293
#endif
294294
}
295295

296-
private static Win32 UrlProgram(string path)
296+
private static Win32 UrlProgram(string path, string[] protocols)
297297
{
298298
var program = Win32Program(path);
299299
program.Valid = false;
@@ -308,7 +308,7 @@ private static Win32 UrlProgram(string path)
308308
{
309309
return program;
310310
}
311-
foreach(var protocol in Main._settings.GetProtocols())
311+
foreach(var protocol in protocols)
312312
{
313313
if(url.StartsWith(protocol))
314314
{
@@ -370,35 +370,26 @@ private static string Extension(string path)
370370
var extension = Path.GetExtension(path)?.ToLowerInvariant();
371371
if (!string.IsNullOrEmpty(extension))
372372
{
373-
return extension.Substring(1);
373+
return extension.Substring(1); // remove dot
374374
}
375375
else
376376
{
377377
return string.Empty;
378378
}
379379
}
380380

381-
private static IEnumerable<Win32> UnregisteredPrograms(List<ProgramSource> sources, string[] suffixes)
381+
private static IEnumerable<Win32> UnregisteredPrograms(List<ProgramSource> sources, string[] suffixes, string[] protocols)
382382
{
383383
var paths = ExceptDisabledSource(sources.Where(s => Directory.Exists(s.Location) && s.Enabled)
384384
.SelectMany(s => ProgramPaths(s.Location, suffixes)))
385385
.Distinct();
386386

387-
var programs = paths.Select(x => Extension(x) switch
388-
{
389-
ExeExtension => ExeProgram(x),
390-
ShortcutExtension => LnkProgram(x),
391-
UrlExtension => UrlProgram(x),
392-
_ => Win32Program(x)
393-
}).Where(x => x.Valid);
394-
387+
var programs = paths.Select(x => GetProgramFromPath(x, protocols)).Where(x => x.Valid);
395388
return programs;
396389
}
397390

398-
private static IEnumerable<Win32> StartMenuPrograms(string[] suffixes)
391+
private static IEnumerable<Win32> StartMenuPrograms(string[] suffixes, string[] protocols)
399392
{
400-
var disabledProgramsList = Main._settings.DisabledProgramSources;
401-
402393
var directory1 = Environment.GetFolderPath(Environment.SpecialFolder.Programs);
403394
var directory2 = Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms);
404395
var paths1 = ProgramPaths(directory1, suffixes);
@@ -407,16 +398,11 @@ private static IEnumerable<Win32> StartMenuPrograms(string[] suffixes)
407398
var toFilter = paths1.Concat(paths2);
408399

409400
var programs = ExceptDisabledSource(toFilter.Distinct())
410-
.Select(x => Extension(x) switch
411-
{
412-
ShortcutExtension => LnkProgram(x),
413-
UrlExtension => UrlProgram(x),
414-
_ => Win32Program(x)
415-
}).Where(x => x.Valid);
401+
.Select(x => GetProgramFromPath(x, protocols)).Where(x => x.Valid);
416402
return programs;
417403
}
418404

419-
private static IEnumerable<Win32> AppPathsPrograms(string[] suffixes)
405+
private static IEnumerable<Win32> AppPathsPrograms(string[] suffixes, string[] protocols)
420406
{
421407
// https://msdn.microsoft.com/en-us/library/windows/desktop/ee872121
422408
const string appPaths = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths";
@@ -436,12 +422,11 @@ private static IEnumerable<Win32> AppPathsPrograms(string[] suffixes)
436422
toFilter = toFilter.Concat(GetPathFromRegistry(rootUser));
437423
}
438424

439-
440425
toFilter = toFilter.Distinct().Where(p => suffixes.Contains(Extension(p)));
441426

442-
var filtered = ExceptDisabledSource(toFilter);
443-
444-
return filtered.Select(GetProgramFromPath).Where(x => x.Valid).ToList(); // ToList due to disposing issue
427+
var programs = ExceptDisabledSource(toFilter)
428+
.Select(x => GetProgramFromPath(x, protocols)).Where(x => x.Valid).ToList(); // ToList due to disposing issue
429+
return programs;
445430
}
446431

447432
private static IEnumerable<string> GetPathFromRegistry(RegistryKey root)
@@ -481,7 +466,7 @@ private static string GetProgramPathFromRegistrySubKeys(RegistryKey root, string
481466
}
482467
}
483468

484-
private static Win32 GetProgramFromPath(string path)
469+
private static Win32 GetProgramFromPath(string path, string[] protocols)
485470
{
486471
if (string.IsNullOrEmpty(path))
487472
return Default;
@@ -491,9 +476,13 @@ private static Win32 GetProgramFromPath(string path)
491476
if (!File.Exists(path))
492477
return Default;
493478

494-
var entry = Win32Program(path);
495-
496-
return entry;
479+
return Extension(path) switch
480+
{
481+
ShortcutExtension => LnkProgram(path),
482+
ExeExtension => ExeProgram(path),
483+
UrlExtension => UrlProgram(path, protocols),
484+
_ => Win32Program(path)
485+
}; ;
497486
}
498487

499488
public static IEnumerable<string> ExceptDisabledSource(IEnumerable<string> paths)
@@ -550,22 +539,23 @@ public static Win32[] All(Settings settings)
550539
try
551540
{
552541
var programs = Enumerable.Empty<Win32>();
553-
554-
var unregistered = UnregisteredPrograms(settings.ProgramSources, settings.GetSuffixes());
542+
var suffixes = settings.GetSuffixes();
543+
var protocols = settings.GetProtocols();
544+
var unregistered = UnregisteredPrograms(settings.ProgramSources, suffixes, protocols);
555545

556546
programs = programs.Concat(unregistered);
557547

558548
var autoIndexPrograms = Enumerable.Empty<Win32>();
559549

560550
if (settings.EnableRegistrySource)
561551
{
562-
var appPaths = AppPathsPrograms(settings.GetSuffixes());
552+
var appPaths = AppPathsPrograms(suffixes, protocols);
563553
autoIndexPrograms = autoIndexPrograms.Concat(appPaths);
564554
}
565555

566556
if (settings.EnableStartMenuSource)
567557
{
568-
var startMenu = StartMenuPrograms(settings.GetSuffixes());
558+
var startMenu = StartMenuPrograms(suffixes, protocols);
569559
autoIndexPrograms = autoIndexPrograms.Concat(startMenu);
570560
}
571561

0 commit comments

Comments
 (0)