diff --git a/Plugins/Wox.Plugin.Program/ProgramSetting.xaml b/Plugins/Wox.Plugin.Program/ProgramSetting.xaml index 7004ccb873..1a273232ad 100644 --- a/Plugins/Wox.Plugin.Program/ProgramSetting.xaml +++ b/Plugins/Wox.Plugin.Program/ProgramSetting.xaml @@ -12,7 +12,11 @@ - + + + Index Start Menu + Index Registry + @@ -28,7 +32,7 @@ - + diff --git a/Plugins/Wox.Plugin.Program/ProgramSetting.xaml.cs b/Plugins/Wox.Plugin.Program/ProgramSetting.xaml.cs index f07126dfbf..3558c85146 100644 --- a/Plugins/Wox.Plugin.Program/ProgramSetting.xaml.cs +++ b/Plugins/Wox.Plugin.Program/ProgramSetting.xaml.cs @@ -22,6 +22,8 @@ namespace Wox.Plugin.Program private void Setting_Loaded(object sender, RoutedEventArgs e) { programSourceView.ItemsSource = ProgramStorage.Instance.ProgramSources; + StartMenuEnabled.IsChecked = ProgramStorage.Instance.EnableStartMenuSource; + RegistryEnabled.IsChecked = ProgramStorage.Instance.EnableRegistrySource; } private void ReIndexing() @@ -130,5 +132,19 @@ namespace Wox.Plugin.Program } } } + + private void StartMenuEnabled_Click(object sender, RoutedEventArgs e) + { + ProgramStorage.Instance.EnableStartMenuSource = StartMenuEnabled.IsChecked ?? false; + ProgramStorage.Instance.Save(); + ReIndexing(); + } + + private void RegistryEnabled_Click(object sender, RoutedEventArgs e) + { + ProgramStorage.Instance.EnableRegistrySource = RegistryEnabled.IsChecked ?? false; + ProgramStorage.Instance.Save(); + ReIndexing(); + } } } \ No newline at end of file diff --git a/Plugins/Wox.Plugin.Program/ProgramStorage.cs b/Plugins/Wox.Plugin.Program/ProgramStorage.cs index d6607c768c..a274237f87 100644 --- a/Plugins/Wox.Plugin.Program/ProgramStorage.cs +++ b/Plugins/Wox.Plugin.Program/ProgramStorage.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Text; using Newtonsoft.Json; using Wox.Infrastructure.Storage; +using System.ComponentModel; namespace Wox.Plugin.Program { @@ -17,6 +18,14 @@ namespace Wox.Plugin.Program [JsonProperty] public string ProgramSuffixes { get; set; } + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] + [DefaultValue(true)] + public bool EnableStartMenuSource { get; set; } + + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] + [DefaultValue(true)] + public bool EnableRegistrySource { get; set; } + protected override string ConfigFolder { get { return Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); } @@ -25,6 +34,8 @@ namespace Wox.Plugin.Program protected override ProgramStorage LoadDefault() { ProgramSources = new List(); + EnableStartMenuSource = true; + EnableRegistrySource = true; return this; } diff --git a/Plugins/Wox.Plugin.Program/Programs.cs b/Plugins/Wox.Plugin.Program/Programs.cs index fad46efa3f..d6a3a35183 100644 --- a/Plugins/Wox.Plugin.Program/Programs.cs +++ b/Plugins/Wox.Plugin.Program/Programs.cs @@ -28,6 +28,7 @@ namespace Wox.Plugin.Program public List Query(Query query) { + var fuzzyMather = FuzzyMatcher.Create(query.Search); List returnList = programs.Where(o => MatchProgram(o, fuzzyMather)).ToList(); returnList.ForEach(ScoreFilter); @@ -97,11 +98,11 @@ namespace Wox.Plugin.Program if (ProgramStorage.Instance.ProgramSources != null && ProgramStorage.Instance.ProgramSources.Count(o => o.Enabled) > 0) { - programSources.AddRange(ProgramStorage.Instance.ProgramSources.Where(o => o.Enabled)); + programSources.AddRange(ProgramStorage.Instance.ProgramSources); } sources.Clear(); - programSources.ForEach(source => + foreach(var source in programSources.Where(o => o.Enabled)) { Type sourceClass; if (SourceTypes.TryGetValue(source.Type, out sourceClass)) @@ -114,7 +115,7 @@ namespace Wox.Plugin.Program sources.Add(programSource); } } - }); + } var tempPrograms = new List(); foreach (var source in sources) @@ -145,19 +146,19 @@ namespace Wox.Plugin.Program list.Add(new ProgramSource() { BonusPoints = 0, - Enabled = true, + Enabled = ProgramStorage.Instance.EnableStartMenuSource, Type = "CommonStartMenuProgramSource" }); list.Add(new ProgramSource() { BonusPoints = 0, - Enabled = true, + Enabled = ProgramStorage.Instance.EnableStartMenuSource, Type = "UserStartMenuProgramSource" }); list.Add(new ProgramSource() { BonusPoints = -10, - Enabled = true, + Enabled = ProgramStorage.Instance.EnableRegistrySource, Type = "AppPathsProgramSource" }); return list;