From 5793b85c5bef5a737caaab3137783ad36658b0f3 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 15 Oct 2019 08:05:21 +1100 Subject: [PATCH] Add Enable program source to Program plugin view --- Plugins/Wox.Plugin.Program/Settings.cs | 13 +++- .../Views/Commands/ProgramSettingDisplay.cs | 33 +++++++--- .../Views/ProgramSetting.xaml | 9 ++- .../Views/ProgramSetting.xaml.cs | 63 ++++++++++++++++--- 4 files changed, 95 insertions(+), 23 deletions(-) diff --git a/Plugins/Wox.Plugin.Program/Settings.cs b/Plugins/Wox.Plugin.Program/Settings.cs index 0637ff08e6..0a43c024be 100644 --- a/Plugins/Wox.Plugin.Program/Settings.cs +++ b/Plugins/Wox.Plugin.Program/Settings.cs @@ -7,14 +7,13 @@ namespace Wox.Plugin.Program public class Settings { public List ProgramSources { get; set; } = new List(); + public List DisabledProgramSources { get; set; } = new List(); public string[] ProgramSuffixes { get; set; } = {"bat", "appref-ms", "exe", "lnk"}; public bool EnableStartMenuSource { get; set; } = true; public bool EnableRegistrySource { get; set; } = true; - public bool EnableProgramSourceOnly { get; set; } = false; - internal const char SuffixSeperator = ';'; /// @@ -33,5 +32,15 @@ namespace Wox.Plugin.Program public bool Enabled { get; set; } = true; public string UniqueIdentifier { get; set; } } + + public class DisabledProgramSource + { + private string name; + + public string Location { get; set; } + public string Name { get => name ?? new DirectoryInfo(Location).Name; set => name = value; } + public bool Enabled { get; set; } = true; + public string UniqueIdentifier { get; set; } + } } } diff --git a/Plugins/Wox.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs b/Plugins/Wox.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs index 1e08f080bb..93102698a7 100644 --- a/Plugins/Wox.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs +++ b/Plugins/Wox.Plugin.Program/Views/Commands/ProgramSettingDisplay.cs @@ -55,22 +55,22 @@ namespace Wox.Plugin.Program.Views.Commands ); } - internal static void DisableProgramSources(this List list, List selectedprogramSourcesToDisable) + internal static void SetProgramSourcesStatus(this List list, List selectedProgramSourcesToDisable, bool status) { ProgramSetting.ProgramSettingDisplayList - .Where(t1 => selectedprogramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled)) + .Where(t1 => selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled != status)) .ToList() - .ForEach(t1 => t1.Enabled = false); + .ForEach(t1 => t1.Enabled = status); Main._win32s - .Where(t1 => selectedprogramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled)) + .Where(t1 => selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled != status)) .ToList() - .ForEach(t1 => t1.Enabled = false); + .ForEach(t1 => t1.Enabled = status); Main._uwps - .Where(t1 => selectedprogramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled)) + .Where(t1 => selectedProgramSourcesToDisable.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && t1.Enabled != status)) .ToList() - .ForEach(t1 => t1.Enabled = false); + .ForEach(t1 => t1.Enabled = status); } internal static void StoreDisabledInSettings(this List list) @@ -82,11 +82,11 @@ namespace Wox.Plugin.Program.Views.Commands ProgramSetting.ProgramSettingDisplayList .Where(t1 => !t1.Enabled - && !Main._settings.ProgramSources.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && !x.Enabled)) + && !Main._settings.DisabledProgramSources.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier)) .ToList() - .ForEach(x => Main._settings.ProgramSources + .ForEach(x => Main._settings.DisabledProgramSources .Add( - new Settings.ProgramSource + new Settings.DisabledProgramSource { Name = x.Name, Location = x.Location, @@ -95,5 +95,18 @@ namespace Wox.Plugin.Program.Views.Commands } )); } + + internal static void RemoveDisabledFromSettings(this List list) + { + Main._settings.ProgramSources + .Where(t1 => ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && x.Enabled)) + .ToList() + .ForEach(t1 => t1.Enabled = true); + + Main._settings.DisabledProgramSources + .Where(t1 => ProgramSetting.ProgramSettingDisplayList.Any(x => x.UniqueIdentifier == t1.UniqueIdentifier && x.Enabled)) + .ToList() + .ForEach(x => Main._settings.DisabledProgramSources.Remove(x)); + } } } diff --git a/Plugins/Wox.Plugin.Program/Views/ProgramSetting.xaml b/Plugins/Wox.Plugin.Program/Views/ProgramSetting.xaml index 06940ae8e3..c838b49a78 100644 --- a/Plugins/Wox.Plugin.Program/Views/ProgramSetting.xaml +++ b/Plugins/Wox.Plugin.Program/Views/ProgramSetting.xaml @@ -20,12 +20,17 @@