diff --git a/Plugins/Wox.Plugin.Program/Images/disable.png b/Plugins/Wox.Plugin.Program/Images/disable.png new file mode 100644 index 0000000000..e9d4976bcf Binary files /dev/null and b/Plugins/Wox.Plugin.Program/Images/disable.png differ diff --git a/Plugins/Wox.Plugin.Program/Languages/en.xaml b/Plugins/Wox.Plugin.Program/Languages/en.xaml index bd8d080242..1a48049c65 100644 --- a/Plugins/Wox.Plugin.Program/Languages/en.xaml +++ b/Plugins/Wox.Plugin.Program/Languages/en.xaml @@ -31,10 +31,15 @@ Run As Administrator Open containing folder + Disable this program from displaying Program Search programs in Wox Invalid Path + + + Success + Successfully disabled this program from displaying in your query \ No newline at end of file diff --git a/Plugins/Wox.Plugin.Program/Main.cs b/Plugins/Wox.Plugin.Program/Main.cs index ba42eecaa5..d6f6550783 100644 --- a/Plugins/Wox.Plugin.Program/Main.cs +++ b/Plugins/Wox.Plugin.Program/Main.cs @@ -102,8 +102,6 @@ namespace Wox.Plugin.Program lock (IndexLock) { _uwps = support ? UWP.All() : new UWP.Application[] { }; - - //_uwps = UWP.RetainApplications(allUWPs, _settings.ProgramSources, _settings.EnableProgramSourceOnly); } } @@ -133,16 +131,49 @@ namespace Wox.Plugin.Program public List LoadContextMenus(Result selectedResult) { + var menuOptions = new List(); var program = selectedResult.ContextData as IProgram; if (program != null) { - var menus = program.ContextMenus(_context.API); - return menus; - } - else - { - return new List(); + menuOptions = program.ContextMenus(_context.API); } + + menuOptions.Add( + new Result + { + Title = _context.API.GetTranslation("wox_plugin_program_disable_program"), + Action = c => + { + DisableProgram(program); + _context.API.ShowMsg(_context.API.GetTranslation("wox_plugin_program_disable_dlgtitle_success"), + _context.API.GetTranslation("wox_plugin_program_disable_dlgtitle_success_message")); + return false; + }, + IcoPath = "Images/disable.png" + } + ); + + return menuOptions; + } + + private void DisableProgram(IProgram ProgramToDelete) + { + if(_uwps.Any(x => x.UniqueIdentifier == ProgramToDelete.UniqueIdentifier)) + _uwps.Where(x => x.UniqueIdentifier == ProgramToDelete.UniqueIdentifier).FirstOrDefault().Enabled = false; + + if (_win32s.Any(x => x.UniqueIdentifier == ProgramToDelete.UniqueIdentifier)) + _win32s.Where(x => x.UniqueIdentifier == ProgramToDelete.UniqueIdentifier).FirstOrDefault().Enabled = false; + + _settings.DisabledProgramSources + .Add( + new Settings.DisabledProgramSource + { + Name = ProgramToDelete.Name, + Location = ProgramToDelete.Location, + UniqueIdentifier = ProgramToDelete.UniqueIdentifier, + Enabled = false + } + ); } public static bool StartProcess(ProcessStartInfo info) diff --git a/Plugins/Wox.Plugin.Program/Programs/IProgram.cs b/Plugins/Wox.Plugin.Program/Programs/IProgram.cs index 88d4eaaf0f..f51ab9610f 100644 --- a/Plugins/Wox.Plugin.Program/Programs/IProgram.cs +++ b/Plugins/Wox.Plugin.Program/Programs/IProgram.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; namespace Wox.Plugin.Program.Programs { @@ -10,5 +6,8 @@ namespace Wox.Plugin.Program.Programs { List ContextMenus(IPublicAPI api); Result Result(string query, IPublicAPI api); + string UniqueIdentifier { get; set; } + string Name { get; } + string Location { get; } } } diff --git a/Plugins/Wox.Plugin.Program/Programs/UWP.cs b/Plugins/Wox.Plugin.Program/Programs/UWP.cs index cb2a28d7a2..9a7bcccb99 100644 --- a/Plugins/Wox.Plugin.Program/Programs/UWP.cs +++ b/Plugins/Wox.Plugin.Program/Programs/UWP.cs @@ -241,6 +241,9 @@ namespace Wox.Plugin.Program.Programs public string UserModelId { get; set; } public string BackgroundColor { get; set; } + public string Name => DisplayName; + public string Location => Package.Location; + public bool Enabled { get; set; } public string LogoUri { get; set; } diff --git a/Plugins/Wox.Plugin.Program/Programs/Win32.cs b/Plugins/Wox.Plugin.Program/Programs/Win32.cs index b24c0187da..11ec701137 100644 --- a/Plugins/Wox.Plugin.Program/Programs/Win32.cs +++ b/Plugins/Wox.Plugin.Program/Programs/Win32.cs @@ -26,6 +26,7 @@ namespace Wox.Plugin.Program.Programs public string Description { get; set; } public bool Valid { get; set; } public bool Enabled { get; set; } + public string Location => ParentDirectory; private const string ShortcutExtension = "lnk"; private const string ApplicationReferenceExtension = "appref-ms"; diff --git a/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj b/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj index 4ec456c6cc..58b93f8c65 100644 --- a/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj +++ b/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj @@ -105,6 +105,9 @@ PreserveNewest + + PreserveNewest + MSBuild:Compile Designer